Loading src/com/android/settings/fuelgauge/PowerUsageAdvanced.java +19 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ package com.android.settings.fuelgauge; import android.content.Context; import android.content.pm.PackageManager; import android.os.Bundle; import android.os.Process; import android.provider.SearchIndexableResource; Loading Loading @@ -61,6 +62,8 @@ public class PowerUsageAdvanced extends PowerUsageBase { UsageType.APP}; private BatteryHistoryPreference mHistPref; private PreferenceGroup mUsageListGroup; private PowerUsageFeatureProvider mPowerUsageFeatureProvider; private PackageManager mPackageManager; @Override public void onCreate(Bundle icicle) { Loading @@ -68,6 +71,9 @@ public class PowerUsageAdvanced extends PowerUsageBase { mHistPref = (BatteryHistoryPreference) findPreference(KEY_BATTERY_GRAPH); mUsageListGroup = (PreferenceGroup) findPreference(KEY_BATTERY_USAGE_LIST); mPowerUsageFeatureProvider = FeatureFactory.getFactory(getContext()) .getPowerUsageFeatureProvider(getContext()); mPackageManager = getContext().getPackageManager(); } @Override Loading Loading @@ -133,6 +139,8 @@ public class PowerUsageAdvanced extends PowerUsageBase { return UsageType.CELL; } else if (uid == Process.SYSTEM_UID || uid == Process.ROOT_UID) { return UsageType.SYSTEM; } else if (mPowerUsageFeatureProvider.isTypeService(sipper.mPackages)) { return UsageType.SERVICE; } else { return UsageType.APP; } Loading @@ -149,6 +157,7 @@ public class PowerUsageAdvanced extends PowerUsageBase { // Accumulate power usage based on usage type for (final BatterySipper sipper : batterySippers) { sipper.mPackages = mPackageManager.getPackagesForUid(sipper.getUid()); final PowerUsageData usageData = batteryDataMap.get(extractUsageType(sipper)); usageData.totalPowerMah += sipper.totalPowerMah; } Loading @@ -165,6 +174,16 @@ public class PowerUsageAdvanced extends PowerUsageBase { return batteryDataList; } @VisibleForTesting void setPackageManager(PackageManager packageManager) { mPackageManager = packageManager; } @VisibleForTesting void setPowerUsageFeatureProvider(PowerUsageFeatureProvider provider) { mPowerUsageFeatureProvider = provider; } /** * Class that contains data used in {@link PowerGaugePreference}. */ Loading src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java +5 −0 Original line number Diff line number Diff line Loading @@ -41,4 +41,9 @@ public interface PowerUsageFeatureProvider { * Check whether advanced ui is enabled */ boolean isAdvancedUiEnabled(); /** * Check whether it is type service */ boolean isTypeService(String[] packages); } src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java +5 −0 Original line number Diff line number Diff line Loading @@ -38,4 +38,9 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider public boolean isAdvancedUiEnabled() { return false; } @Override public boolean isTypeService(String[] packages) { return false; } } tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAdvancedTest.java +18 −0 Original line number Diff line number Diff line package com.android.settings.fuelgauge; import android.content.pm.PackageManager; import android.os.Process; import com.android.internal.os.BatterySipper; import com.android.internal.os.BatterySipper.DrainType; Loading @@ -21,6 +22,7 @@ import java.util.List; import java.util.Set; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Mockito.when; @RunWith(SettingsRobolectricTestRunner.class) Loading @@ -38,6 +40,10 @@ public class PowerUsageAdvancedTest { private BatterySipper mBatterySipper; @Mock private BatteryStatsHelper mBatteryStatsHelper; @Mock private PowerUsageFeatureProvider mPowerUsageFeatureProvider; @Mock private PackageManager mPackageManager; private PowerUsageAdvanced mPowerUsageAdvanced; @Before Loading @@ -57,6 +63,8 @@ public class PowerUsageAdvancedTest { when(mBatteryStatsHelper.getUsageList()).thenReturn(batterySippers); when(mBatteryStatsHelper.getTotalPower()).thenReturn(TOTAL_USAGE); mPowerUsageAdvanced.setPackageManager(mPackageManager); mPowerUsageAdvanced.setPowerUsageFeatureProvider(mPowerUsageFeatureProvider); } @Test Loading Loading @@ -86,6 +94,16 @@ public class PowerUsageAdvancedTest { } } @Test public void testExtractUsageType_TypeService_ReturnService() { mBatterySipper.drainType = DrainType.APP; when(mBatterySipper.getUid()).thenReturn(FAKE_UID_1); when(mPowerUsageFeatureProvider.isTypeService(any())).thenReturn(true); assertThat(mPowerUsageAdvanced.extractUsageType(mBatterySipper)) .isEqualTo(UsageType.SERVICE); } @Test public void testParsePowerUsageData_PercentageCalculatedCorrectly() { final double percentApp = TYPE_APP_USAGE * 2 / TOTAL_USAGE * 100; Loading Loading
src/com/android/settings/fuelgauge/PowerUsageAdvanced.java +19 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ package com.android.settings.fuelgauge; import android.content.Context; import android.content.pm.PackageManager; import android.os.Bundle; import android.os.Process; import android.provider.SearchIndexableResource; Loading Loading @@ -61,6 +62,8 @@ public class PowerUsageAdvanced extends PowerUsageBase { UsageType.APP}; private BatteryHistoryPreference mHistPref; private PreferenceGroup mUsageListGroup; private PowerUsageFeatureProvider mPowerUsageFeatureProvider; private PackageManager mPackageManager; @Override public void onCreate(Bundle icicle) { Loading @@ -68,6 +71,9 @@ public class PowerUsageAdvanced extends PowerUsageBase { mHistPref = (BatteryHistoryPreference) findPreference(KEY_BATTERY_GRAPH); mUsageListGroup = (PreferenceGroup) findPreference(KEY_BATTERY_USAGE_LIST); mPowerUsageFeatureProvider = FeatureFactory.getFactory(getContext()) .getPowerUsageFeatureProvider(getContext()); mPackageManager = getContext().getPackageManager(); } @Override Loading Loading @@ -133,6 +139,8 @@ public class PowerUsageAdvanced extends PowerUsageBase { return UsageType.CELL; } else if (uid == Process.SYSTEM_UID || uid == Process.ROOT_UID) { return UsageType.SYSTEM; } else if (mPowerUsageFeatureProvider.isTypeService(sipper.mPackages)) { return UsageType.SERVICE; } else { return UsageType.APP; } Loading @@ -149,6 +157,7 @@ public class PowerUsageAdvanced extends PowerUsageBase { // Accumulate power usage based on usage type for (final BatterySipper sipper : batterySippers) { sipper.mPackages = mPackageManager.getPackagesForUid(sipper.getUid()); final PowerUsageData usageData = batteryDataMap.get(extractUsageType(sipper)); usageData.totalPowerMah += sipper.totalPowerMah; } Loading @@ -165,6 +174,16 @@ public class PowerUsageAdvanced extends PowerUsageBase { return batteryDataList; } @VisibleForTesting void setPackageManager(PackageManager packageManager) { mPackageManager = packageManager; } @VisibleForTesting void setPowerUsageFeatureProvider(PowerUsageFeatureProvider provider) { mPowerUsageFeatureProvider = provider; } /** * Class that contains data used in {@link PowerGaugePreference}. */ Loading
src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java +5 −0 Original line number Diff line number Diff line Loading @@ -41,4 +41,9 @@ public interface PowerUsageFeatureProvider { * Check whether advanced ui is enabled */ boolean isAdvancedUiEnabled(); /** * Check whether it is type service */ boolean isTypeService(String[] packages); }
src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java +5 −0 Original line number Diff line number Diff line Loading @@ -38,4 +38,9 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider public boolean isAdvancedUiEnabled() { return false; } @Override public boolean isTypeService(String[] packages) { return false; } }
tests/robotests/src/com/android/settings/fuelgauge/PowerUsageAdvancedTest.java +18 −0 Original line number Diff line number Diff line package com.android.settings.fuelgauge; import android.content.pm.PackageManager; import android.os.Process; import com.android.internal.os.BatterySipper; import com.android.internal.os.BatterySipper.DrainType; Loading @@ -21,6 +22,7 @@ import java.util.List; import java.util.Set; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Mockito.when; @RunWith(SettingsRobolectricTestRunner.class) Loading @@ -38,6 +40,10 @@ public class PowerUsageAdvancedTest { private BatterySipper mBatterySipper; @Mock private BatteryStatsHelper mBatteryStatsHelper; @Mock private PowerUsageFeatureProvider mPowerUsageFeatureProvider; @Mock private PackageManager mPackageManager; private PowerUsageAdvanced mPowerUsageAdvanced; @Before Loading @@ -57,6 +63,8 @@ public class PowerUsageAdvancedTest { when(mBatteryStatsHelper.getUsageList()).thenReturn(batterySippers); when(mBatteryStatsHelper.getTotalPower()).thenReturn(TOTAL_USAGE); mPowerUsageAdvanced.setPackageManager(mPackageManager); mPowerUsageAdvanced.setPowerUsageFeatureProvider(mPowerUsageFeatureProvider); } @Test Loading Loading @@ -86,6 +94,16 @@ public class PowerUsageAdvancedTest { } } @Test public void testExtractUsageType_TypeService_ReturnService() { mBatterySipper.drainType = DrainType.APP; when(mBatterySipper.getUid()).thenReturn(FAKE_UID_1); when(mPowerUsageFeatureProvider.isTypeService(any())).thenReturn(true); assertThat(mPowerUsageAdvanced.extractUsageType(mBatterySipper)) .isEqualTo(UsageType.SERVICE); } @Test public void testParsePowerUsageData_PercentageCalculatedCorrectly() { final double percentApp = TYPE_APP_USAGE * 2 / TOTAL_USAGE * 100; Loading