Make system item has a consistent name.

In battery settings, the system item contains many packages. In old
behaviour it will use the first package(which has legal name and icon)
to represent this item. This behaviour is not consistent.

In this cl, we always use package "android" to extract name and icon
if it is system item.

Bug: 65090883
Test: RunSettingsRoboTests
Change-Id: Ibb7f85c06ab1745867f1eaa666cea32c8d3295a6
This commit is contained in:
jackqdyulei
2017-09-06 14:18:29 -07:00
parent 3042af11f0
commit 1e887c17e2
2 changed files with 48 additions and 6 deletions

View File

@@ -21,6 +21,7 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Handler;
import android.os.Process;
import android.os.UserManager;
import com.android.internal.os.BatterySipper;
@@ -46,9 +47,12 @@ import static org.mockito.Mockito.when;
public class BatteryEntryTest {
private static final int APP_UID = 123;
private static final int SYSTEM_UID = Process.SYSTEM_UID;
private static final String APP_DEFAULT_PACKAGE_NAME = "com.android.test";
private static final String APP_LABEL = "Test App Name";
private static final String HIGH_DRAIN_PACKAGE = "com.android.test.screen";
private static final String ANDROID_PACKAGE = "android";
private static final String[] SYSTEM_PACKAGES = {HIGH_DRAIN_PACKAGE, ANDROID_PACKAGE};
@Rule public MockitoRule mocks = MockitoJUnit.rule();
@@ -84,6 +88,18 @@ public class BatteryEntryTest {
return sipper;
}
private BatteryEntry createBatteryEntryForSystem() {
return new BatteryEntry(mockContext, mockHandler, mockUserManager, createSipperForSystem());
}
private BatterySipper createSipperForSystem() {
BatterySipper sipper =
new BatterySipper(DrainType.APP, new FakeUid(SYSTEM_UID), 0 /* power use */);
sipper.packageWithHighestDrain = HIGH_DRAIN_PACKAGE;
sipper.mPackages = SYSTEM_PACKAGES;
return sipper;
}
@Test
public void batteryEntryForApp_shouldSetDefaultPackageNameAndLabel() throws Exception {
BatteryEntry entry = createBatteryEntryForApp();
@@ -118,7 +134,22 @@ public class BatteryEntryTest {
new String[]{APP_DEFAULT_PACKAGE_NAME, "package2", "package3"});
BatteryEntry entry = createBatteryEntryForApp();
assertThat(entry.getLabel()).isEqualTo(HIGH_DRAIN_PACKAGE);
}
@Test
public void extractPackageFromSipper_systemSipper_returnSystemPackage() {
BatteryEntry entry = createBatteryEntryForSystem();
assertThat(entry.extractPackagesFromSipper(entry.sipper)).isEqualTo(
new String[]{ANDROID_PACKAGE});
}
@Test
public void extractPackageFromSipper_normalSipper_returnDefaultPakcage() {
BatteryEntry entry = createBatteryEntryForApp();
assertThat(entry.extractPackagesFromSipper(entry.sipper)).isEqualTo(entry.sipper.mPackages);
}
}