Add batterysipper type check in PowerUsageFeatureProvider
This cl adds isTypeSystem to PowerUsageFeatureProvider and changes isTypeService. After this cl, the following items will be moved to advanced battery page: 1. Calendar Storage(Move to System) 2. MediaServer(Move to System) Create this check in FeatureProvider to make sure this check is flexible in different cases. Also refactor the PowerUsageSummary to use same test fragment Bug: 35629871 Bug: 35628690 Bug: 35317876 Test: RunSettingsRoboTest Change-Id: I8c083cb2557a7e900aea01e682c13a000bacb7a9
This commit is contained in:
@@ -71,9 +71,11 @@ 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();
|
||||
|
||||
final Context context = getContext();
|
||||
mPowerUsageFeatureProvider = FeatureFactory.getFactory(context)
|
||||
.getPowerUsageFeatureProvider(context);
|
||||
mPackageManager = context.getPackageManager();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -137,9 +139,9 @@ public class PowerUsageAdvanced extends PowerUsageBase {
|
||||
return UsageType.USER;
|
||||
} else if (drainType == DrainType.CELL) {
|
||||
return UsageType.CELL;
|
||||
} else if (uid == Process.SYSTEM_UID || uid == Process.ROOT_UID) {
|
||||
} else if (mPowerUsageFeatureProvider.isTypeSystem(sipper)) {
|
||||
return UsageType.SYSTEM;
|
||||
} else if (mPowerUsageFeatureProvider.isTypeService(sipper.mPackages)) {
|
||||
} else if (mPowerUsageFeatureProvider.isTypeService(sipper)) {
|
||||
return UsageType.SERVICE;
|
||||
} else {
|
||||
return UsageType.APP;
|
||||
|
@@ -17,38 +17,44 @@
|
||||
package com.android.settings.fuelgauge;
|
||||
|
||||
import android.content.Intent;
|
||||
import com.android.internal.os.BatterySipper;
|
||||
|
||||
/**
|
||||
* Feature Provider used in power usage
|
||||
*/
|
||||
public interface PowerUsageFeatureProvider {
|
||||
/**
|
||||
* Check whether location setting is enabled
|
||||
*/
|
||||
boolean isLocationSettingEnabled(String[] packages);
|
||||
/**
|
||||
* Check whether location setting is enabled
|
||||
*/
|
||||
boolean isLocationSettingEnabled(String[] packages);
|
||||
|
||||
/**
|
||||
* Check whether additional battery info feature is enabled.
|
||||
*/
|
||||
boolean isAdditionalBatteryInfoEnabled();
|
||||
/**
|
||||
* Check whether additional battery info feature is enabled.
|
||||
*/
|
||||
boolean isAdditionalBatteryInfoEnabled();
|
||||
|
||||
/**
|
||||
* Gets an {@link Intent} to show additional battery info.
|
||||
*/
|
||||
Intent getAdditionalBatteryInfoIntent();
|
||||
/**
|
||||
* Gets an {@link Intent} to show additional battery info.
|
||||
*/
|
||||
Intent getAdditionalBatteryInfoIntent();
|
||||
|
||||
/**
|
||||
* Check whether advanced ui is enabled
|
||||
*/
|
||||
boolean isAdvancedUiEnabled();
|
||||
/**
|
||||
* Check whether advanced ui is enabled
|
||||
*/
|
||||
boolean isAdvancedUiEnabled();
|
||||
|
||||
/**
|
||||
* Check whether it is type service
|
||||
*/
|
||||
boolean isTypeService(String[] packages);
|
||||
/**
|
||||
* Check whether it is type service
|
||||
*/
|
||||
boolean isTypeService(BatterySipper sipper);
|
||||
|
||||
/**
|
||||
* Check whether the toggle for power accounting is enabled
|
||||
*/
|
||||
boolean isPowerAccountingToggleEnabled();
|
||||
/**
|
||||
* Check whether it is type system
|
||||
*/
|
||||
boolean isTypeSystem(BatterySipper sipper);
|
||||
|
||||
/**
|
||||
* Check whether the toggle for power accounting is enabled
|
||||
*/
|
||||
boolean isPowerAccountingToggleEnabled();
|
||||
}
|
||||
|
@@ -16,9 +16,40 @@
|
||||
|
||||
package com.android.settings.fuelgauge;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Process;
|
||||
import com.android.internal.os.BatterySipper;
|
||||
import com.android.internal.util.ArrayUtils;
|
||||
|
||||
public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider {
|
||||
|
||||
private static final String PACKAGE_CALENDAR_PROVIDER = "com.android.providers.calendar";
|
||||
|
||||
protected PackageManager mPackageManager;
|
||||
|
||||
public PowerUsageFeatureProviderImpl(Context context) {
|
||||
mPackageManager = context.getPackageManager();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTypeService(BatterySipper sipper) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTypeSystem(BatterySipper sipper) {
|
||||
final int uid = sipper.uidObj == null ? -1 : sipper.getUid();
|
||||
sipper.mPackages = mPackageManager.getPackagesForUid(uid);
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLocationSettingEnabled(String[] packages) {
|
||||
return false;
|
||||
@@ -39,11 +70,6 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTypeService(String[] packages) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPowerAccountingToggleEnabled() {
|
||||
return false;
|
||||
|
@@ -99,16 +99,17 @@ public class PowerUsageSummary extends PowerUsageBase {
|
||||
|
||||
@VisibleForTesting
|
||||
boolean mShowAllApps = false;
|
||||
|
||||
@VisibleForTesting
|
||||
Preference mScreenUsagePref;
|
||||
@VisibleForTesting
|
||||
Preference mScreenConsumptionPref;
|
||||
@VisibleForTesting
|
||||
Preference mCellularNetworkPref;
|
||||
@VisibleForTesting
|
||||
PowerUsageFeatureProvider mPowerFeatureProvider;
|
||||
|
||||
private LayoutPreference mBatteryLayoutPref;
|
||||
private PreferenceGroup mAppListGroup;
|
||||
|
||||
private int mStatsType = BatteryStats.STATS_SINCE_CHARGED;
|
||||
|
||||
@Override
|
||||
@@ -121,6 +122,8 @@ public class PowerUsageSummary extends PowerUsageBase {
|
||||
mScreenUsagePref = findPreference(KEY_SCREEN_USAGE);
|
||||
mScreenConsumptionPref = findPreference(KEY_SCREEN_CONSUMPTION);
|
||||
mCellularNetworkPref = findPreference(KEY_CELLULAR_NETWORK);
|
||||
|
||||
initFeatureProvider();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -193,14 +196,11 @@ public class PowerUsageSummary extends PowerUsageBase {
|
||||
|
||||
menu.add(Menu.NONE, MENU_HIGH_POWER_APPS, Menu.NONE, R.string.high_power_apps);
|
||||
|
||||
PowerUsageFeatureProvider powerUsageFeatureProvider =
|
||||
FeatureFactory.getFactory(getContext()).getPowerUsageFeatureProvider(getContext());
|
||||
if (powerUsageFeatureProvider != null &&
|
||||
powerUsageFeatureProvider.isAdditionalBatteryInfoEnabled()) {
|
||||
if (mPowerFeatureProvider.isAdditionalBatteryInfoEnabled()) {
|
||||
menu.add(Menu.NONE, MENU_ADDITIONAL_BATTERY_INFO,
|
||||
Menu.NONE, R.string.additional_battery_info);
|
||||
}
|
||||
if (powerUsageFeatureProvider.isPowerAccountingToggleEnabled()) {
|
||||
if (mPowerFeatureProvider.isPowerAccountingToggleEnabled()) {
|
||||
menu.add(Menu.NONE, MENU_TOGGLE_APPS, Menu.NONE,
|
||||
mShowAllApps ? R.string.hide_extra_apps : R.string.show_all_apps);
|
||||
}
|
||||
@@ -579,12 +579,12 @@ public class PowerUsageSummary extends PowerUsageBase {
|
||||
@VisibleForTesting
|
||||
boolean shouldHideSipper(BatterySipper sipper) {
|
||||
final DrainType drainType = sipper.drainType;
|
||||
final int uid = sipper.getUid();
|
||||
|
||||
return drainType == DrainType.IDLE || drainType == DrainType.CELL
|
||||
|| drainType == DrainType.SCREEN || uid == Process.ROOT_UID
|
||||
|| uid == Process.SYSTEM_UID
|
||||
|| (sipper.totalPowerMah * SECONDS_IN_HOUR) < MIN_POWER_THRESHOLD_MILLI_AMP;
|
||||
|| drainType == DrainType.SCREEN
|
||||
|| (sipper.totalPowerMah * SECONDS_IN_HOUR) < MIN_POWER_THRESHOLD_MILLI_AMP
|
||||
|| mPowerFeatureProvider.isTypeService(sipper)
|
||||
|| mPowerFeatureProvider.isTypeSystem(sipper);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
@@ -620,6 +620,13 @@ public class PowerUsageSummary extends PowerUsageBase {
|
||||
mBatteryLayoutPref = layoutPreference;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void initFeatureProvider() {
|
||||
final Context context = getContext();
|
||||
mPowerFeatureProvider = FeatureFactory.getFactory(context)
|
||||
.getPowerUsageFeatureProvider(context);
|
||||
}
|
||||
|
||||
private static List<BatterySipper> getFakeStats() {
|
||||
ArrayList<BatterySipper> stats = new ArrayList<>();
|
||||
float use = 5;
|
||||
|
@@ -80,7 +80,7 @@ public class FeatureFactoryImpl extends FeatureFactory {
|
||||
@Override
|
||||
public PowerUsageFeatureProvider getPowerUsageFeatureProvider(Context context) {
|
||||
if (mPowerUsageFeatureProvider == null) {
|
||||
mPowerUsageFeatureProvider = new PowerUsageFeatureProviderImpl();
|
||||
mPowerUsageFeatureProvider = new PowerUsageFeatureProviderImpl(context);
|
||||
}
|
||||
return mPowerUsageFeatureProvider;
|
||||
}
|
||||
|
Reference in New Issue
Block a user