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

Commit 1368ce4f authored by Chaohui Wang's avatar Chaohui Wang Committed by Android (Google) Code Review
Browse files

Merge "Use IconDrawableFactory to load app icon" into main

parents af526b43 b80747f9
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)