From d65bb52dc8bb1cb5d108258c8cfd9c39c5c68628 Mon Sep 17 00:00:00 2001 From: jackqdyulei Date: Mon, 23 Oct 2017 16:59:24 -0700 Subject: [PATCH] Don't consider managedProfile in PowerUsageAdvanced When calculating how many uses exists, we shouldn't count the managedProfile since this is not the normal user. Bug: 37681923 Test: RunSettingsRoboTests Change-Id: Ic24e98f8e8696530d534bc9e1d8f675ad6ad5063 --- .../fuelgauge/PowerUsageAdvanced.java | 15 +++++++++++- .../fuelgauge/PowerUsageAdvancedTest.java | 23 ++++++++++++++++--- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java b/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java index adadb7865ee..6ed92a7cb42 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java +++ b/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java @@ -18,6 +18,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; +import android.content.pm.UserInfo; import android.os.BatteryManager; import android.os.BatteryStats; import android.os.Bundle; @@ -250,7 +251,7 @@ public class PowerUsageAdvanced extends PowerUsageBase { boolean shouldHideCategory(PowerUsageData powerUsageData) { return powerUsageData.usageType == UsageType.UNACCOUNTED || powerUsageData.usageType == UsageType.OVERCOUNTED - || (powerUsageData.usageType == UsageType.USER && mUserManager.getUserCount() == 1) + || (powerUsageData.usageType == UsageType.USER && isSingleNormalUser()) || (powerUsageData.usageType == UsageType.CELL && !DataUsageUtils.hasMobileData(getContext())); } @@ -373,6 +374,18 @@ public class PowerUsageAdvanced extends PowerUsageBase { mBatteryUtils = batteryUtils; } + @VisibleForTesting + boolean isSingleNormalUser() { + int count = 0; + for (UserInfo userInfo : mUserManager.getUsers()) { + if (userInfo.isEnabled() && !userInfo.isManagedProfile()) { + count++; + } + } + + return count == 1; + } + /** * Class that contains data used in {@link PowerGaugePreference}. */ diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAdvancedTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAdvancedTest.java index 80304634387..2b5e7045f85 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAdvancedTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAdvancedTest.java @@ -31,6 +31,7 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; +import android.content.pm.UserInfo; import android.net.ConnectivityManager; import android.os.UserManager; import android.support.v7.preference.PreferenceCategory; @@ -93,6 +94,10 @@ public class PowerUsageAdvancedTest { private PreferenceGroup mUsageListGroup; @Mock private ConnectivityManager mConnectivityManager; + @Mock + private UserInfo mNormalUserInfo; + @Mock + private UserInfo mManagedUserInfo; private PowerUsageAdvanced mPowerUsageAdvanced; private PowerUsageData mPowerUsageData; private Context mShadowContext; @@ -136,6 +141,11 @@ public class PowerUsageAdvancedTest { mMaxBatterySipper.totalPowerMah = TYPE_BLUETOOTH_USAGE; mMaxBatterySipper.drainType = DrainType.BLUETOOTH; mNormalBatterySipper.drainType = DrainType.SCREEN; + + doReturn(true).when(mNormalUserInfo).isEnabled(); + doReturn(false).when(mNormalUserInfo).isManagedProfile(); + doReturn(true).when(mManagedUserInfo).isEnabled(); + doReturn(true).when(mManagedUserInfo).isManagedProfile(); } @Test @@ -293,9 +303,12 @@ public class PowerUsageAdvancedTest { } @Test - public void testShouldHideCategory_typeUserAndOnlyOne_returnTrue() { + public void testShouldHideCategory_typeUserAndOnlyOneNormalUser_returnTrue() { mPowerUsageData.usageType = UsageType.USER; - doReturn(1).when(mUserManager).getUserCount(); + List userInfos = new ArrayList<>(); + userInfos.add(mNormalUserInfo); + userInfos.add(mManagedUserInfo); + doReturn(userInfos).when(mUserManager).getUsers(); assertThat(mPowerUsageAdvanced.shouldHideCategory(mPowerUsageData)).isTrue(); } @@ -321,7 +334,10 @@ public class PowerUsageAdvancedTest { @Test public void testShouldHideCategory_typeUserAndMoreThanOne_returnFalse() { mPowerUsageData.usageType = UsageType.USER; - doReturn(2).when(mUserManager).getUserCount(); + List userInfos = new ArrayList<>(); + userInfos.add(mNormalUserInfo); + userInfos.add(mNormalUserInfo); + doReturn(userInfos).when(mUserManager).getUsers(); assertThat(mPowerUsageAdvanced.shouldHideCategory(mPowerUsageData)).isFalse(); } @@ -423,4 +439,5 @@ public class PowerUsageAdvancedTest { mPowerUsageAdvanced.refreshUi(); verify(mHistPref, atLeastOnce()).setBottomSummary(any()); } + }