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
This commit is contained in:
jackqdyulei
2017-10-23 16:59:24 -07:00
parent 9d31fa4c8f
commit d65bb52dc8
2 changed files with 34 additions and 4 deletions

View File

@@ -18,6 +18,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.UserInfo;
import android.os.BatteryManager; import android.os.BatteryManager;
import android.os.BatteryStats; import android.os.BatteryStats;
import android.os.Bundle; import android.os.Bundle;
@@ -250,7 +251,7 @@ public class PowerUsageAdvanced extends PowerUsageBase {
boolean shouldHideCategory(PowerUsageData powerUsageData) { boolean shouldHideCategory(PowerUsageData powerUsageData) {
return powerUsageData.usageType == UsageType.UNACCOUNTED return powerUsageData.usageType == UsageType.UNACCOUNTED
|| powerUsageData.usageType == UsageType.OVERCOUNTED || powerUsageData.usageType == UsageType.OVERCOUNTED
|| (powerUsageData.usageType == UsageType.USER && mUserManager.getUserCount() == 1) || (powerUsageData.usageType == UsageType.USER && isSingleNormalUser())
|| (powerUsageData.usageType == UsageType.CELL || (powerUsageData.usageType == UsageType.CELL
&& !DataUsageUtils.hasMobileData(getContext())); && !DataUsageUtils.hasMobileData(getContext()));
} }
@@ -373,6 +374,18 @@ public class PowerUsageAdvanced extends PowerUsageBase {
mBatteryUtils = batteryUtils; 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}. * Class that contains data used in {@link PowerGaugePreference}.
*/ */

View File

@@ -31,6 +31,7 @@ import static org.mockito.Mockito.when;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.UserInfo;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.os.UserManager; import android.os.UserManager;
import android.support.v7.preference.PreferenceCategory; import android.support.v7.preference.PreferenceCategory;
@@ -93,6 +94,10 @@ public class PowerUsageAdvancedTest {
private PreferenceGroup mUsageListGroup; private PreferenceGroup mUsageListGroup;
@Mock @Mock
private ConnectivityManager mConnectivityManager; private ConnectivityManager mConnectivityManager;
@Mock
private UserInfo mNormalUserInfo;
@Mock
private UserInfo mManagedUserInfo;
private PowerUsageAdvanced mPowerUsageAdvanced; private PowerUsageAdvanced mPowerUsageAdvanced;
private PowerUsageData mPowerUsageData; private PowerUsageData mPowerUsageData;
private Context mShadowContext; private Context mShadowContext;
@@ -136,6 +141,11 @@ public class PowerUsageAdvancedTest {
mMaxBatterySipper.totalPowerMah = TYPE_BLUETOOTH_USAGE; mMaxBatterySipper.totalPowerMah = TYPE_BLUETOOTH_USAGE;
mMaxBatterySipper.drainType = DrainType.BLUETOOTH; mMaxBatterySipper.drainType = DrainType.BLUETOOTH;
mNormalBatterySipper.drainType = DrainType.SCREEN; 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 @Test
@@ -293,9 +303,12 @@ public class PowerUsageAdvancedTest {
} }
@Test @Test
public void testShouldHideCategory_typeUserAndOnlyOne_returnTrue() { public void testShouldHideCategory_typeUserAndOnlyOneNormalUser_returnTrue() {
mPowerUsageData.usageType = UsageType.USER; mPowerUsageData.usageType = UsageType.USER;
doReturn(1).when(mUserManager).getUserCount(); List<UserInfo> userInfos = new ArrayList<>();
userInfos.add(mNormalUserInfo);
userInfos.add(mManagedUserInfo);
doReturn(userInfos).when(mUserManager).getUsers();
assertThat(mPowerUsageAdvanced.shouldHideCategory(mPowerUsageData)).isTrue(); assertThat(mPowerUsageAdvanced.shouldHideCategory(mPowerUsageData)).isTrue();
} }
@@ -321,7 +334,10 @@ public class PowerUsageAdvancedTest {
@Test @Test
public void testShouldHideCategory_typeUserAndMoreThanOne_returnFalse() { public void testShouldHideCategory_typeUserAndMoreThanOne_returnFalse() {
mPowerUsageData.usageType = UsageType.USER; mPowerUsageData.usageType = UsageType.USER;
doReturn(2).when(mUserManager).getUserCount(); List<UserInfo> userInfos = new ArrayList<>();
userInfos.add(mNormalUserInfo);
userInfos.add(mNormalUserInfo);
doReturn(userInfos).when(mUserManager).getUsers();
assertThat(mPowerUsageAdvanced.shouldHideCategory(mPowerUsageData)).isFalse(); assertThat(mPowerUsageAdvanced.shouldHideCategory(mPowerUsageData)).isFalse();
} }
@@ -423,4 +439,5 @@ public class PowerUsageAdvancedTest {
mPowerUsageAdvanced.refreshUi(); mPowerUsageAdvanced.refreshUi();
verify(mHistPref, atLeastOnce()).setBottomSummary(any()); verify(mHistPref, atLeastOnce()).setBottomSummary(any());
} }
} }