Loading packages/SystemUI/src/com/android/systemui/controls/ControlsServiceInfo.kt +32 −10 Original line number Diff line number Diff line Loading @@ -26,9 +26,10 @@ import android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE import android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE import android.content.pm.ResolveInfo import android.content.pm.ServiceInfo import android.graphics.drawable.Drawable import android.os.UserHandle import android.service.controls.ControlsProviderService import androidx.annotation.VisibleForTesting import android.util.IconDrawableFactory import androidx.annotation.WorkerThread import com.android.settingslib.applications.DefaultAppInfo import com.android.systemui.R Loading Loading @@ -118,6 +119,27 @@ open class ControlsServiceInfo( } } @WorkerThread override fun loadLabel(): CharSequence { return componentName?.let { val appInfo = mPm.getApplicationInfoAsUser(componentName.packageName, 0, userId) appInfo.loadLabel(mPm) } ?: packageItemInfo?.loadLabel(mPm) ?: throw IllegalArgumentException("Package info is missing") } @WorkerThread override fun loadIcon(): Drawable { val packageName = componentName?.packageName ?: packageItemInfo?.packageName ?: throw IllegalArgumentException("Package info is missing") val factory = IconDrawableFactory.newInstance(context) val appInfo = mPm.getApplicationInfoAsUser(packageName, 0, userId) return factory.getBadgedIcon(appInfo) } override fun equals(other: Any?): Boolean { return other is ControlsServiceInfo && userId == other.userId && Loading packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsUiControllerImplTest.kt +5 −3 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.content.Context import android.content.pm.ApplicationInfo import android.content.pm.PackageManager import android.content.pm.ServiceInfo import android.graphics.drawable.Drawable import android.os.UserHandle import android.service.controls.ControlsProviderService import android.testing.AndroidTestingRunner Loading Loading @@ -69,6 +70,7 @@ import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock import org.mockito.Mockito.clearInvocations import org.mockito.Mockito.doReturn import org.mockito.Mockito.never import org.mockito.Mockito.spy import org.mockito.Mockito.verify Loading Loading @@ -516,9 +518,9 @@ class ControlsUiControllerImplTest : SysuiTestCase() { name = componentName.className } return spy(ControlsServiceInfo(mContext, serviceInfo)).apply { `when`(loadLabel()).thenReturn(label) `when`(loadIcon()).thenReturn(mock()) `when`(panelActivity).thenReturn(panelComponentName) doReturn(label).whenever(this).loadLabel() doReturn(mock<Drawable>()).whenever(this).loadIcon() doReturn(panelComponentName).whenever(this).panelActivity } } Loading Loading
packages/SystemUI/src/com/android/systemui/controls/ControlsServiceInfo.kt +32 −10 Original line number Diff line number Diff line Loading @@ -26,9 +26,10 @@ import android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE import android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE import android.content.pm.ResolveInfo import android.content.pm.ServiceInfo import android.graphics.drawable.Drawable import android.os.UserHandle import android.service.controls.ControlsProviderService import androidx.annotation.VisibleForTesting import android.util.IconDrawableFactory import androidx.annotation.WorkerThread import com.android.settingslib.applications.DefaultAppInfo import com.android.systemui.R Loading Loading @@ -118,6 +119,27 @@ open class ControlsServiceInfo( } } @WorkerThread override fun loadLabel(): CharSequence { return componentName?.let { val appInfo = mPm.getApplicationInfoAsUser(componentName.packageName, 0, userId) appInfo.loadLabel(mPm) } ?: packageItemInfo?.loadLabel(mPm) ?: throw IllegalArgumentException("Package info is missing") } @WorkerThread override fun loadIcon(): Drawable { val packageName = componentName?.packageName ?: packageItemInfo?.packageName ?: throw IllegalArgumentException("Package info is missing") val factory = IconDrawableFactory.newInstance(context) val appInfo = mPm.getApplicationInfoAsUser(packageName, 0, userId) return factory.getBadgedIcon(appInfo) } override fun equals(other: Any?): Boolean { return other is ControlsServiceInfo && userId == other.userId && Loading
packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsUiControllerImplTest.kt +5 −3 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.content.Context import android.content.pm.ApplicationInfo import android.content.pm.PackageManager import android.content.pm.ServiceInfo import android.graphics.drawable.Drawable import android.os.UserHandle import android.service.controls.ControlsProviderService import android.testing.AndroidTestingRunner Loading Loading @@ -69,6 +70,7 @@ import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock import org.mockito.Mockito.clearInvocations import org.mockito.Mockito.doReturn import org.mockito.Mockito.never import org.mockito.Mockito.spy import org.mockito.Mockito.verify Loading Loading @@ -516,9 +518,9 @@ class ControlsUiControllerImplTest : SysuiTestCase() { name = componentName.className } return spy(ControlsServiceInfo(mContext, serviceInfo)).apply { `when`(loadLabel()).thenReturn(label) `when`(loadIcon()).thenReturn(mock()) `when`(panelActivity).thenReturn(panelComponentName) doReturn(label).whenever(this).loadLabel() doReturn(mock<Drawable>()).whenever(this).loadIcon() doReturn(panelComponentName).whenever(this).panelActivity } } Loading