diff --git a/src/com/android/settings/fuelgauge/PowerUsageAnomalyDetails.java b/src/com/android/settings/fuelgauge/PowerUsageAnomalyDetails.java index 59662b19b5b..ef7110e69af 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageAnomalyDetails.java +++ b/src/com/android/settings/fuelgauge/PowerUsageAnomalyDetails.java @@ -59,6 +59,7 @@ public class PowerUsageAnomalyDetails extends DashboardFragment implements PackageManager mPackageManager; @VisibleForTesting BatteryUtils mBatteryUtils; + @VisibleForTesting IconDrawableFactory mIconDrawableFactory; public static void startBatteryAbnormalPage(SettingsActivity caller, @@ -79,7 +80,7 @@ public class PowerUsageAnomalyDetails extends DashboardFragment implements mAnomalies = getArguments().getParcelableArrayList(EXTRA_ANOMALY_LIST); mAbnormalListGroup = (PreferenceGroup) findPreference(KEY_PREF_ANOMALY_LIST); mPackageManager = context.getPackageManager(); - mIconDrawableFactory = IconDrawableFactory.newInstance(context, false /* EmbedShadow */); + mIconDrawableFactory = IconDrawableFactory.newInstance(context); mBatteryUtils = BatteryUtils.getInstance(context); } @@ -134,7 +135,7 @@ public class PowerUsageAnomalyDetails extends DashboardFragment implements final Anomaly anomaly = mAnomalies.get(i); Preference pref = new AnomalyPreference(getPrefContext(), anomaly); pref.setSummary(mBatteryUtils.getSummaryResIdFromAnomalyType(anomaly.type)); - Drawable icon = getIconFromPackageName(anomaly.packageName); + Drawable icon = getBadgedIcon(anomaly.packageName, UserHandle.getUserId(anomaly.uid)); if (icon != null) { pref.setIcon(icon); } @@ -149,11 +150,12 @@ public class PowerUsageAnomalyDetails extends DashboardFragment implements refreshUi(); } - Drawable getIconFromPackageName(String packageName) { + @VisibleForTesting + Drawable getBadgedIcon(String packageName, int userId) { try { final ApplicationInfo appInfo = mPackageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA); - return mIconDrawableFactory.getBadgedIcon(appInfo); + return mIconDrawableFactory.getBadgedIcon(appInfo, userId); } catch (PackageManager.NameNotFoundException e) { return mPackageManager.getDefaultActivityIcon(); } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAnomalyDetailsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAnomalyDetailsTest.java index 71aa2955c1c..c992d0aef63 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAnomalyDetailsTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAnomalyDetailsTest.java @@ -22,24 +22,27 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; import android.content.Context; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceCategory; import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceManager; +import android.util.IconDrawableFactory; import com.android.settings.SettingsActivity; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; import com.android.settings.fuelgauge.anomaly.Anomaly; -import com.android.settings.fuelgauge.anomaly.AnomalyPreference; - import org.junit.Before; import org.junit.Test; @@ -64,6 +67,7 @@ public class PowerUsageAnomalyDetailsTest { private static final String PACKAGE_NAME_1 = "com.android.app1"; private static final String PACKAGE_NAME_2 = "com.android.app2"; private static final String PACKAGE_NAME_3 = "com.android.app3"; + private static final int USER_ID = 1; @Mock private SettingsActivity mSettingsActivity; @@ -75,6 +79,12 @@ public class PowerUsageAnomalyDetailsTest { private Drawable mDrawable2; @Mock private Drawable mDrawable3; + @Mock + private PackageManager mPackageManager; + @Mock + private IconDrawableFactory mIconDrawableFactory; + @Mock + private ApplicationInfo mApplicationInfo; private Context mContext; private PowerUsageAnomalyDetails mFragment; private PreferenceGroup mAbnormalListGroup; @@ -109,10 +119,11 @@ public class PowerUsageAnomalyDetailsTest { mAnomalyList.add(anomaly3); mFragment = spy(new PowerUsageAnomalyDetails()); - doReturn(null).when(mFragment).getIconFromPackageName(any()); mFragment.mAbnormalListGroup = mAbnormalListGroup; mFragment.mAnomalies = mAnomalyList; mFragment.mBatteryUtils = new BatteryUtils(mContext); + mFragment.mPackageManager = mPackageManager; + mFragment.mIconDrawableFactory = mIconDrawableFactory; doReturn(mPreferenceManager).when(mFragment).getPreferenceManager(); doReturn(mContext).when(mPreferenceManager).getContext(); } @@ -146,9 +157,9 @@ public class PowerUsageAnomalyDetailsTest { @Test public void testRefreshUi_iconCorrect() { - doReturn(mDrawable1).when(mFragment).getIconFromPackageName(PACKAGE_NAME_1); - doReturn(mDrawable2).when(mFragment).getIconFromPackageName(PACKAGE_NAME_2); - doReturn(mDrawable3).when(mFragment).getIconFromPackageName(PACKAGE_NAME_3); + doReturn(mDrawable1).when(mFragment).getBadgedIcon(eq(PACKAGE_NAME_1), anyInt()); + doReturn(mDrawable2).when(mFragment).getBadgedIcon(eq(PACKAGE_NAME_2), anyInt()); + doReturn(mDrawable3).when(mFragment).getBadgedIcon(eq(PACKAGE_NAME_3), anyInt()); final List testIcons = new ArrayList<>(); final ArgumentCaptor preferenceCaptor = ArgumentCaptor.forClass( @@ -187,4 +198,16 @@ public class PowerUsageAnomalyDetailsTest { assertThat(mBundle.getParcelableArrayList( PowerUsageAnomalyDetails.EXTRA_ANOMALY_LIST)).isEqualTo(mAnomalyList); } + + @Test + public void testGetBadgedIcon_usePackageNameAndUserId() throws + PackageManager.NameNotFoundException { + doReturn(mApplicationInfo).when(mPackageManager).getApplicationInfo(PACKAGE_NAME_1, + PackageManager.GET_META_DATA); + + mFragment.getBadgedIcon(PACKAGE_NAME_1, USER_ID); + + // Verify that it uses the correct user id + verify(mIconDrawableFactory).getBadgedIcon(mApplicationInfo, USER_ID); + } }