Use IconDrawableFactory in AppPreferenceRepository

Bug: 314757827
Test: manual - on AppDataUsage
Test: unit test
Change-Id: Ica559ce044ebddfa8bc3ce994f9266ea1aabbe84
This commit is contained in:
Chaohui Wang
2023-12-05 14:56:47 +08:00
parent bbbd0e640a
commit 015a98ac38
2 changed files with 13 additions and 5 deletions

View File

@@ -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
}

View File

@@ -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))