Fix failed tests since presubmit is ignored in ag/15802168 am: 27efa546cf am: a168e2e0fc

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/15809054

Change-Id: I8396a058b78d2c37ebf223e26884860061a08b84
This commit is contained in:
ykhung
2021-09-11 18:25:11 +00:00
committed by Automerger Merge Worker
3 changed files with 66 additions and 11 deletions

View File

@@ -113,7 +113,9 @@ public class BatteryDiffEntry {
/** Gets the app icon {@link Drawable} for this entry. */ /** Gets the app icon {@link Drawable} for this entry. */
public Drawable getAppIcon() { public Drawable getAppIcon() {
loadLabelAndIcon(); loadLabelAndIcon();
return mAppIcon.getConstantState().newDrawable(); return mAppIcon != null && mAppIcon.getConstantState() != null
? mAppIcon.getConstantState().newDrawable()
: null;
} }
/** Gets the app icon id for this entry. */ /** Gets the app icon id for this entry. */

View File

@@ -105,6 +105,9 @@ public final class BatteryChartPreferenceControllerTest {
doReturn(new String[] {"com.android.googlequicksearchbox"}) doReturn(new String[] {"com.android.googlequicksearchbox"})
.when(mFeatureFactory.powerUsageFeatureProvider) .when(mFeatureFactory.powerUsageFeatureProvider)
.getHideApplicationSummary(mContext); .getHideApplicationSummary(mContext);
doReturn(new String[] {"com.android.gms.persistent"})
.when(mFeatureFactory.powerUsageFeatureProvider)
.getHideApplicationEntries(mContext);
mBatteryChartPreferenceController = createController(); mBatteryChartPreferenceController = createController();
mBatteryChartPreferenceController.mPrefContext = mContext; mBatteryChartPreferenceController.mPrefContext = mContext;
mBatteryChartPreferenceController.mAppListPrefGroup = mAppListGroup; mBatteryChartPreferenceController.mAppListPrefGroup = mAppListGroup;
@@ -661,7 +664,7 @@ public final class BatteryChartPreferenceControllerTest {
// Verifies the items which are defined in the array list. // Verifies the items which are defined in the array list.
assertThat(mBatteryChartPreferenceController assertThat(mBatteryChartPreferenceController
.isValidToShowEntry("com.google.android.gms.persistent")) .isValidToShowEntry("com.android.gms.persistent"))
.isFalse(); .isFalse();
} }

View File

@@ -17,6 +17,7 @@ package com.android.settings.fuelgauge;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyInt;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
@@ -28,6 +29,7 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.graphics.drawable.Drawable.ConstantState;
import android.os.BatteryConsumer; import android.os.BatteryConsumer;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
@@ -41,6 +43,10 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.annotation.Resetter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@@ -48,6 +54,7 @@ import java.util.List;
import java.util.Locale; import java.util.Locale;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@Config(shadows = {BatteryDiffEntryTest.ShadowUserHandle.class})
public final class BatteryDiffEntryTest { public final class BatteryDiffEntryTest {
private Context mContext; private Context mContext;
@@ -60,10 +67,12 @@ public final class BatteryDiffEntryTest {
@Mock private Drawable mockBadgedDrawable; @Mock private Drawable mockBadgedDrawable;
@Mock private BatteryHistEntry mBatteryHistEntry; @Mock private BatteryHistEntry mBatteryHistEntry;
@Mock private PackageInfo mockPackageInfo; @Mock private PackageInfo mockPackageInfo;
@Mock private ConstantState mockConstantState;
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
ShadowUserHandle.reset();
mContext = spy(RuntimeEnvironment.application); mContext = spy(RuntimeEnvironment.application);
doReturn(mContext).when(mContext).getApplicationContext(); doReturn(mContext).when(mContext).getApplicationContext();
doReturn(mockUserManager).when(mContext).getSystemService(UserManager.class); doReturn(mockUserManager).when(mContext).getSystemService(UserManager.class);
@@ -229,6 +238,7 @@ public final class BatteryDiffEntryTest {
final ContentValues values = getContentValuesWithType( final ContentValues values = getContentValuesWithType(
ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY); ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values); final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(values);
mockConstantState(mockDrawable);
final BatteryDiffEntry entry = createBatteryDiffEntry(10, batteryHistEntry); final BatteryDiffEntry entry = createBatteryDiffEntry(10, batteryHistEntry);
@@ -239,20 +249,32 @@ public final class BatteryDiffEntryTest {
} }
@Test @Test
public void testGetAppIcon_uidConsumerWithNullIcon_returnDefaultActivityIcon() public void testGetAppIcon_uidConsumerForNonOwner_returnDefaultActivityIconWithBadge()
throws Exception { throws Exception {
ShadowUserHandle.setUid(10);
final BatteryDiffEntry entry = createBatteryDiffEntry(mockDrawable); final BatteryDiffEntry entry = createBatteryDiffEntry(mockDrawable);
final int userId = UserHandle.getUserId(1001); mockConstantState(mockDrawable);
mockConstantState(mockBadgedDrawable);
doReturn(mockBadgedDrawable).when(mockUserManager) doReturn(mockBadgedDrawable).when(mockUserManager)
.getBadgedIconForUser(mockDrawable, new UserHandle(userId)); .getBadgedIconForUser(eq(mockDrawable), any());
entry.mAppIcon = null; entry.mAppIcon = null;
assertThat(entry.getAppIcon()).isEqualTo(mockBadgedDrawable); assertThat(entry.getAppIcon()).isEqualTo(mockBadgedDrawable);
}
@Test
public void testGetAppIcon_uidConsumerWithNullIcon_returnDefaultActivityIcon()
throws Exception {
final BatteryDiffEntry entry = createBatteryDiffEntry(mockDrawable);
mockConstantState(mockDrawable);
entry.mAppIcon = null;
assertThat(entry.getAppIcon()).isEqualTo(mockDrawable);
assertThat(BatteryDiffEntry.sResourceCache).hasSize(1); assertThat(BatteryDiffEntry.sResourceCache).hasSize(1);
// Verifies the app label in the cache. // Verifies the app label in the cache.
final BatteryEntry.NameAndIcon nameAndIcon = final BatteryEntry.NameAndIcon nameAndIcon =
BatteryDiffEntry.sResourceCache.get(entry.getKey()); BatteryDiffEntry.sResourceCache.get(entry.getKey());
assertThat(nameAndIcon.icon).isEqualTo(mockBadgedDrawable); assertThat(nameAndIcon.icon).isEqualTo(mockDrawable);
} }
@Test @Test
@@ -272,19 +294,17 @@ public final class BatteryDiffEntryTest {
@Test @Test
public void testClearCache_switchLocale_clearCacheIconAndLabel() throws Exception { public void testClearCache_switchLocale_clearCacheIconAndLabel() throws Exception {
final int userId = UserHandle.getUserId(1001); final int userId = UserHandle.getUserId(1001);
doReturn(mockBadgedDrawable).when(mockUserManager)
.getBadgedIconForUser(mockDrawable, new UserHandle(userId));
doReturn(mockDrawable2).when(mockUserManager)
.getBadgedIconForUser(mockDrawable2, new UserHandle(userId));
Locale.setDefault(new Locale("en_US")); Locale.setDefault(new Locale("en_US"));
final BatteryDiffEntry entry1 = createBatteryDiffEntry(mockDrawable); final BatteryDiffEntry entry1 = createBatteryDiffEntry(mockDrawable);
assertThat(entry1.getAppIcon()).isEqualTo(mockBadgedDrawable); mockConstantState(mockDrawable);
assertThat(entry1.getAppIcon()).isEqualTo(mockDrawable);
// Switch the locale into another one. // Switch the locale into another one.
Locale.setDefault(new Locale("zh_TW")); Locale.setDefault(new Locale("zh_TW"));
final BatteryDiffEntry entry2 = createBatteryDiffEntry(mockDrawable2); final BatteryDiffEntry entry2 = createBatteryDiffEntry(mockDrawable2);
// We should get new drawable without caching. // We should get new drawable without caching.
mockConstantState(mockDrawable2);
assertThat(entry2.getAppIcon()).isEqualTo(mockDrawable2); assertThat(entry2.getAppIcon()).isEqualTo(mockDrawable2);
// Verifies the cache is updated into the new drawable. // Verifies the cache is updated into the new drawable.
final BatteryEntry.NameAndIcon nameAndIcon = final BatteryEntry.NameAndIcon nameAndIcon =
@@ -440,4 +460,34 @@ public final class BatteryDiffEntryTest {
.getPackagesForUid(1001); .getPackagesForUid(1001);
return createBatteryDiffEntry(10, batteryHistEntry); return createBatteryDiffEntry(10, batteryHistEntry);
} }
private void mockConstantState(Drawable drawable) {
doReturn(mockConstantState).when(drawable).getConstantState();
doReturn(drawable).when(mockConstantState).newDrawable();
}
@Implements(UserHandle.class)
public static class ShadowUserHandle {
// Sets the default as thte OWNER role.
private static int sUid = 0;
public static void setUid(int uid) {
sUid = uid;
}
@Implementation
public static int myUserId() {
return sUid;
}
@Implementation
public static int getUserId(int userId) {
return sUid;
}
@Resetter
public static void reset() {
sUid = 0;
}
}
} }