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

Commit 015a98ac authored by Chaohui Wang's avatar Chaohui Wang
Browse files

Use IconDrawableFactory in AppPreferenceRepository

Bug: 314757827
Test: manual - on AppDataUsage
Test: unit test
Change-Id: Ica559ce044ebddfa8bc3ce994f9266ea1aabbe84
parent bbbd0e64
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -19,10 +19,13 @@ package com.android.settings.datausage.lib
import android.content.Context
import android.content.pm.PackageManager
import android.os.UserHandle
import android.util.IconDrawableFactory
import androidx.preference.Preference
import com.android.settingslib.Utils

class AppPreferenceRepository(private val context: Context) {
class AppPreferenceRepository(
    private val context: Context,
    private val iconDrawableFactory: IconDrawableFactory = IconDrawableFactory.newInstance(context),
) {
    private val packageManager = context.packageManager

    fun loadAppPreferences(uids: List<Int>): List<Preference> = uids.flatMap { uid ->
@@ -38,7 +41,7 @@ class AppPreferenceRepository(private val context: Context) {
    private fun getPreference(packageName: String, userId: Int): Preference? = try {
        val app = packageManager.getApplicationInfoAsUser(packageName, 0, userId)
        Preference(context).apply {
            icon = Utils.getBadgedIcon(context, app)
            icon = iconDrawableFactory.getBadgedIcon(app)
            title = app.loadLabel(packageManager)
            isSelectable = false
        }
+7 −2
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
import android.graphics.drawable.Drawable
import android.os.UserHandle
import android.util.IconDrawableFactory
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.common.truth.Truth.assertThat
@@ -43,7 +44,9 @@ class AppPreferenceRepositoryTest {
        on { packageManager } doReturn packageManager
    }

    private val repository = AppPreferenceRepository(context)
    private val mockIconDrawableFactory = mock<IconDrawableFactory>()

    private val repository = AppPreferenceRepository(context, mockIconDrawableFactory)

    @Test
    fun loadAppPreferences_packageNotFound_returnEmpty() {
@@ -61,9 +64,11 @@ class AppPreferenceRepositoryTest {
    @Test
    fun loadAppPreferences_packageFound_returnPreference() {
        val app = mock<ApplicationInfo> {
            on { loadUnbadgedIcon(any()) } doReturn UNBADGED_ICON
            on { loadLabel(any()) } doReturn LABEL
        }
        mockIconDrawableFactory.stub {
            on { getBadgedIcon(app) } doReturn UNBADGED_ICON
        }
        packageManager.stub {
            on {
                getApplicationInfoAsUser(PACKAGE_NAME, 0, UserHandle.getUserId(UID))