Add type service in settings advanced page.
Currently it only includes the gms service Bug: 35317876 Test: RunSettingsRoboTests Change-Id: I20a2a9d320efe4aed036552d450f59c89e81584a
This commit is contained in:
@@ -14,6 +14,7 @@
|
|||||||
package com.android.settings.fuelgauge;
|
package com.android.settings.fuelgauge;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Process;
|
import android.os.Process;
|
||||||
import android.provider.SearchIndexableResource;
|
import android.provider.SearchIndexableResource;
|
||||||
@@ -61,6 +62,8 @@ public class PowerUsageAdvanced extends PowerUsageBase {
|
|||||||
UsageType.APP};
|
UsageType.APP};
|
||||||
private BatteryHistoryPreference mHistPref;
|
private BatteryHistoryPreference mHistPref;
|
||||||
private PreferenceGroup mUsageListGroup;
|
private PreferenceGroup mUsageListGroup;
|
||||||
|
private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
|
||||||
|
private PackageManager mPackageManager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle icicle) {
|
public void onCreate(Bundle icicle) {
|
||||||
@@ -68,6 +71,9 @@ public class PowerUsageAdvanced extends PowerUsageBase {
|
|||||||
|
|
||||||
mHistPref = (BatteryHistoryPreference) findPreference(KEY_BATTERY_GRAPH);
|
mHistPref = (BatteryHistoryPreference) findPreference(KEY_BATTERY_GRAPH);
|
||||||
mUsageListGroup = (PreferenceGroup) findPreference(KEY_BATTERY_USAGE_LIST);
|
mUsageListGroup = (PreferenceGroup) findPreference(KEY_BATTERY_USAGE_LIST);
|
||||||
|
mPowerUsageFeatureProvider = FeatureFactory.getFactory(getContext())
|
||||||
|
.getPowerUsageFeatureProvider(getContext());
|
||||||
|
mPackageManager = getContext().getPackageManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -133,6 +139,8 @@ public class PowerUsageAdvanced extends PowerUsageBase {
|
|||||||
return UsageType.CELL;
|
return UsageType.CELL;
|
||||||
} else if (uid == Process.SYSTEM_UID || uid == Process.ROOT_UID) {
|
} else if (uid == Process.SYSTEM_UID || uid == Process.ROOT_UID) {
|
||||||
return UsageType.SYSTEM;
|
return UsageType.SYSTEM;
|
||||||
|
} else if (mPowerUsageFeatureProvider.isTypeService(sipper.mPackages)) {
|
||||||
|
return UsageType.SERVICE;
|
||||||
} else {
|
} else {
|
||||||
return UsageType.APP;
|
return UsageType.APP;
|
||||||
}
|
}
|
||||||
@@ -149,6 +157,7 @@ public class PowerUsageAdvanced extends PowerUsageBase {
|
|||||||
|
|
||||||
// Accumulate power usage based on usage type
|
// Accumulate power usage based on usage type
|
||||||
for (final BatterySipper sipper : batterySippers) {
|
for (final BatterySipper sipper : batterySippers) {
|
||||||
|
sipper.mPackages = mPackageManager.getPackagesForUid(sipper.getUid());
|
||||||
final PowerUsageData usageData = batteryDataMap.get(extractUsageType(sipper));
|
final PowerUsageData usageData = batteryDataMap.get(extractUsageType(sipper));
|
||||||
usageData.totalPowerMah += sipper.totalPowerMah;
|
usageData.totalPowerMah += sipper.totalPowerMah;
|
||||||
}
|
}
|
||||||
@@ -165,6 +174,16 @@ public class PowerUsageAdvanced extends PowerUsageBase {
|
|||||||
return batteryDataList;
|
return batteryDataList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
void setPackageManager(PackageManager packageManager) {
|
||||||
|
mPackageManager = packageManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
void setPowerUsageFeatureProvider(PowerUsageFeatureProvider provider) {
|
||||||
|
mPowerUsageFeatureProvider = provider;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class that contains data used in {@link PowerGaugePreference}.
|
* Class that contains data used in {@link PowerGaugePreference}.
|
||||||
*/
|
*/
|
||||||
|
@@ -41,4 +41,9 @@ public interface PowerUsageFeatureProvider {
|
|||||||
* Check whether advanced ui is enabled
|
* Check whether advanced ui is enabled
|
||||||
*/
|
*/
|
||||||
boolean isAdvancedUiEnabled();
|
boolean isAdvancedUiEnabled();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether it is type service
|
||||||
|
*/
|
||||||
|
boolean isTypeService(String[] packages);
|
||||||
}
|
}
|
||||||
|
@@ -38,4 +38,9 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
|
|||||||
public boolean isAdvancedUiEnabled() {
|
public boolean isAdvancedUiEnabled() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isTypeService(String[] packages) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
package com.android.settings.fuelgauge;
|
package com.android.settings.fuelgauge;
|
||||||
|
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.os.Process;
|
import android.os.Process;
|
||||||
import com.android.internal.os.BatterySipper;
|
import com.android.internal.os.BatterySipper;
|
||||||
import com.android.internal.os.BatterySipper.DrainType;
|
import com.android.internal.os.BatterySipper.DrainType;
|
||||||
@@ -21,6 +22,7 @@ import java.util.List;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
import static org.mockito.Matchers.any;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
@@ -38,6 +40,10 @@ public class PowerUsageAdvancedTest {
|
|||||||
private BatterySipper mBatterySipper;
|
private BatterySipper mBatterySipper;
|
||||||
@Mock
|
@Mock
|
||||||
private BatteryStatsHelper mBatteryStatsHelper;
|
private BatteryStatsHelper mBatteryStatsHelper;
|
||||||
|
@Mock
|
||||||
|
private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
|
||||||
|
@Mock
|
||||||
|
private PackageManager mPackageManager;
|
||||||
private PowerUsageAdvanced mPowerUsageAdvanced;
|
private PowerUsageAdvanced mPowerUsageAdvanced;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@@ -57,6 +63,8 @@ public class PowerUsageAdvancedTest {
|
|||||||
|
|
||||||
when(mBatteryStatsHelper.getUsageList()).thenReturn(batterySippers);
|
when(mBatteryStatsHelper.getUsageList()).thenReturn(batterySippers);
|
||||||
when(mBatteryStatsHelper.getTotalPower()).thenReturn(TOTAL_USAGE);
|
when(mBatteryStatsHelper.getTotalPower()).thenReturn(TOTAL_USAGE);
|
||||||
|
mPowerUsageAdvanced.setPackageManager(mPackageManager);
|
||||||
|
mPowerUsageAdvanced.setPowerUsageFeatureProvider(mPowerUsageFeatureProvider);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -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
|
@Test
|
||||||
public void testParsePowerUsageData_PercentageCalculatedCorrectly() {
|
public void testParsePowerUsageData_PercentageCalculatedCorrectly() {
|
||||||
final double percentApp = TYPE_APP_USAGE * 2 / TOTAL_USAGE * 100;
|
final double percentApp = TYPE_APP_USAGE * 2 / TOTAL_USAGE * 100;
|
||||||
|
Reference in New Issue
Block a user