Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 40e35dfa authored by Anton Potapov's avatar Anton Potapov Committed by Android (Google) Code Review
Browse files

Merge "Use app info to load app data instead of component info" into udc-dev

parents 7b66fd7a f97f1208
Loading
Loading
Loading
Loading
+32 −10
Original line number Diff line number Diff line
@@ -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
@@ -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 &&
+5 −3
Original line number Diff line number Diff line
@@ -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
@@ -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
@@ -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
        }
    }