From 44e8968662f8ab47fab355ee27c19e0a4012068d Mon Sep 17 00:00:00 2001 From: jackqdyulei Date: Tue, 28 Feb 2017 13:51:24 -0800 Subject: [PATCH] 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 --- .../fuelgauge/PowerUsageFeatureProviderImpl.java | 13 +++++++++++-- .../settings/fuelgauge/PowerUsageSummary.java | 2 +- .../PowerUsageFeatureProviderImplTest.java | 13 ++++++++++++- .../settings/fuelgauge/PowerUsageSummaryTest.java | 6 ++++++ 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java index 011f4176085..b8c40fd7193 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java +++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java @@ -26,6 +26,9 @@ import com.android.internal.util.ArrayUtils; 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 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider // 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 18ba1aa5bba..50c3f06c89a 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java +++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java @@ -581,7 +581,7 @@ public class PowerUsageSummary extends PowerUsageBase { 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 bfb4bc62063..d4672218229 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 @@ import static com.google.common.truth.Truth.assertThat; @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 @@ public class PowerUsageFeatureProviderImplTest { 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); } @@ -88,6 +91,14 @@ public class PowerUsageFeatureProviderImplTest { assertThat(mPowerFeatureProvider.isTypeSystem(mBatterySipper)).isTrue(); } + @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; diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java index 95135071dd1..1a0f3fa38b1 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java @@ -291,6 +291,12 @@ public class PowerUsageSummaryTest { assertThat(mFragment.shouldHideSipper(mNormalBatterySipper)).isTrue(); } + @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;