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

Commit b80747f9 authored by Chaohui Wang's avatar Chaohui Wang
Browse files

Use IconDrawableFactory to load app icon

Bug: 314757827
Test: manual - All apps > app detail
Change-Id: I30241e5586a3b2ee00fee3e5fbf937a250afbf37
parent d0c103fd
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -19,11 +19,11 @@ package com.android.settingslib.spaprivileged.model.app
import android.content.Context
import android.content.pm.ApplicationInfo
import android.graphics.drawable.Drawable
import android.util.IconDrawableFactory
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.runtime.produceState
import androidx.compose.ui.platform.LocalContext
import com.android.settingslib.Utils
import com.android.settingslib.spa.framework.compose.rememberContext
import com.android.settingslib.spaprivileged.R
import com.android.settingslib.spaprivileged.framework.common.userManager
@@ -65,6 +65,7 @@ interface AppRepository {

internal class AppRepositoryImpl(private val context: Context) : AppRepository {
    private val packageManager = context.packageManager
    private val iconDrawableFactory = IconDrawableFactory.newInstance(context)

    override fun loadLabel(app: ApplicationInfo): String = app.loadLabel(packageManager).toString()

@@ -72,7 +73,7 @@ internal class AppRepositoryImpl(private val context: Context) : AppRepository {
    override fun produceIcon(app: ApplicationInfo) =
        produceState<Drawable?>(initialValue = null, app) {
            withContext(Dispatchers.IO) {
                value = Utils.getBadgedIcon(context, app)
                value = iconDrawableFactory.getBadgedIcon(app)
            }
        }

+8 −19
Original line number Diff line number Diff line
@@ -27,14 +27,12 @@ import com.android.settingslib.spa.framework.compose.stateOf
import com.android.settingslib.spa.testutils.delay
import com.android.settingslib.spaprivileged.framework.common.userManager
import com.google.common.truth.Truth.assertThat
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Spy
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock
import org.mockito.kotlin.spy
import org.mockito.kotlin.whenever

@RunWith(AndroidJUnit4::class)
@@ -42,23 +40,14 @@ class AppRepositoryTest {
    @get:Rule
    val composeTestRule = createComposeRule()

    @get:Rule
    val mockito: MockitoRule = MockitoJUnit.rule()

    @Spy
    private val context: Context = ApplicationProvider.getApplicationContext()

    @Mock
    private lateinit var userManager: UserManager
    private val userManager = mock<UserManager>()

    private lateinit var appRepository: AppRepositoryImpl

    @Before
    fun setUp() {
        whenever(context.userManager).thenReturn(userManager)
        appRepository = AppRepositoryImpl(context)
    private val context: Context = spy(ApplicationProvider.getApplicationContext()) {
        on { userManager } doReturn userManager
    }

    private val appRepository = AppRepositoryImpl(context)

    @Test
    fun produceIconContentDescription_workProfile() {
        whenever(userManager.isManagedProfile(APP.userId)).thenReturn(true)