Hide bluetooth and media in battery settings page.
Media is a bundled process which contains the following packages:
com.android.providers.downloads
com.android.mtp
com.android.providers.media
com.android.providers.downloads.ui
This cl moves them to advanced battery page.
1. Bluetooth lives in category bluetooth
2. Media lives in category system
Bug: 35811926
Test: RunSettingsRoboTests
Change-Id: Ie229fa15e2e62b67d571988f7f4e7788a665bcdd
diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
index 011f417..b8c40fd 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
@@ -26,6 +26,9 @@
public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider {
private static final String PACKAGE_CALENDAR_PROVIDER = "com.android.providers.calendar";
+ private static final String PACKAGE_MEDIA_PROVIDER = "com.android.providers.media";
+ private static final String[] PACKAGES_SYSTEM = {PACKAGE_MEDIA_PROVIDER,
+ PACKAGE_CALENDAR_PROVIDER};
protected PackageManager mPackageManager;
@@ -45,9 +48,15 @@
// Classify all the sippers to type system if the range of uid is 0...FIRST_APPLICATION_UID
if (uid >= Process.ROOT_UID && uid < Process.FIRST_APPLICATION_UID) {
return true;
- } else {
- return ArrayUtils.contains(sipper.mPackages, PACKAGE_CALENDAR_PROVIDER);
+ } else if (sipper.mPackages != null) {
+ for (final String packageName : sipper.mPackages) {
+ if (ArrayUtils.contains(PACKAGES_SYSTEM, packageName)) {
+ return true;
+ }
+ }
}
+
+ return false;
}
@Override
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index 18ba1aa..50c3f06 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -581,7 +581,7 @@
final DrainType drainType = sipper.drainType;
return drainType == DrainType.IDLE || drainType == DrainType.CELL
- || drainType == DrainType.SCREEN
+ || drainType == DrainType.SCREEN || drainType == DrainType.BLUETOOTH
|| (sipper.totalPowerMah * SECONDS_IN_HOUR) < MIN_POWER_THRESHOLD_MILLI_AMP
|| mPowerFeatureProvider.isTypeService(sipper)
|| mPowerFeatureProvider.isTypeSystem(sipper);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
index bfb4bc6..d467221 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
@@ -35,9 +35,11 @@
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class PowerUsageFeatureProviderImplTest {
- private static final int UID_CALENDAR = 1234;
private static final int UID_OTHER = Process.FIRST_APPLICATION_UID + 2;
+ private static final int UID_CALENDAR = Process.FIRST_APPLICATION_UID + 3;
+ private static final int UID_MEDIA = Process.FIRST_APPLICATION_UID + 4;
private static final String[] PACKAGES_CALENDAR = {"com.android.providers.calendar"};
+ private static final String[] PACKAGES_MEDIA = {"com.android.providers.media"};
@Mock
private Context mContext;
@Mock
@@ -52,6 +54,7 @@
mPowerFeatureProvider = new PowerUsageFeatureProviderImpl(mContext);
when(mPackageManager.getPackagesForUid(UID_CALENDAR)).thenReturn(PACKAGES_CALENDAR);
+ when(mPackageManager.getPackagesForUid(UID_MEDIA)).thenReturn(PACKAGES_MEDIA);
mPowerFeatureProvider.mPackageManager = mPackageManager;
mBatterySipper.uidObj = new FakeUid(UID_OTHER);
}
@@ -89,6 +92,14 @@
}
@Test
+ public void testIsTypeSystem_AppMedia_ReturnTrue() {
+ mBatterySipper.drainType = BatterySipper.DrainType.APP;
+ when(mBatterySipper.getUid()).thenReturn(UID_MEDIA);
+
+ assertThat(mPowerFeatureProvider.isTypeSystem(mBatterySipper)).isTrue();
+ }
+
+ @Test
public void testIsTypeSystem_UidOther_ReturnFalse() {
mBatterySipper.drainType = BatterySipper.DrainType.APP;
when(mBatterySipper.getUid()).thenReturn(UID_OTHER);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
index 9513507..1a0f3fa 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
@@ -292,6 +292,12 @@
}
@Test
+ public void testShouldHideSipper_TypeBluetooth_ReturnTrue() {
+ mNormalBatterySipper.drainType = BatterySipper.DrainType.BLUETOOTH;
+ assertThat(mFragment.shouldHideSipper(mNormalBatterySipper)).isTrue();
+ }
+
+ @Test
public void testShouldHideSipper_TypeSystem_ReturnTrue() {
mNormalBatterySipper.drainType = BatterySipper.DrainType.APP;
when(mNormalBatterySipper.getUid()).thenReturn(Process.ROOT_UID);