Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d030d7b5 authored by Lei Yu's avatar Lei Yu Committed by Android (Google) Code Review
Browse files

Merge "Add batterysipper type check in PowerUsageFeatureProvider"

parents f5f6635c 238c1c00
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -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;
+35 −29
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.settings.fuelgauge;

import android.content.Intent;
import com.android.internal.os.BatterySipper;

/**
 * Feature Provider used in power usage
@@ -45,7 +46,12 @@ public interface PowerUsageFeatureProvider {
    /**
     * Check whether it is type service
     */
  boolean isTypeService(String[] packages);
    boolean isTypeService(BatterySipper sipper);

    /**
     * Check whether it is type system
     */
    boolean isTypeSystem(BatterySipper sipper);

    /**
     * Check whether the toggle for power accounting is enabled
+31 −5
Original line number Diff line number Diff line
@@ -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;
+18 −11
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -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;
    }
Loading