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

Commit a967b88e authored by Wesley Wang's avatar Wesley Wang Committed by Android (Google) Code Review
Browse files

Merge "Add new battery entry into AppInfo page launch variable" into sc-dev

parents 4fce42c4 92feb9e8
Loading
Loading
Loading
Loading
+48 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.settings.applications.appinfo;

import android.content.Context;
import android.content.pm.PackageInfo;
import android.os.AsyncTask;
import android.os.BatteryUsageStats;
import android.os.Bundle;
import android.os.UidBatteryConsumer;
@@ -34,6 +35,8 @@ import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
import com.android.settings.fuelgauge.BatteryChartPreferenceController;
import com.android.settings.fuelgauge.BatteryDiffEntry;
import com.android.settings.fuelgauge.BatteryEntry;
import com.android.settings.fuelgauge.BatteryUsageStatsLoader;
import com.android.settings.fuelgauge.BatteryUtils;
@@ -63,13 +66,18 @@ public class AppBatteryPreferenceController extends BasePreferenceController
    private final AppInfoDashboardFragment mParent;
    private String mBatteryPercent;
    private final String mPackageName;
    private final int mUid;
    private BatteryDiffEntry mBatteryDiffEntry;
    private boolean mBatteryUsageStatsLoaded = false;
    private boolean mBatteryDiffEntriesLoaded = false;

    public AppBatteryPreferenceController(Context context, AppInfoDashboardFragment parent,
            String packageName, Lifecycle lifecycle) {
            String packageName, int uid, Lifecycle lifecycle) {
        super(context, KEY_BATTERY);
        mParent = parent;
        mBatteryUtils = BatteryUtils.getInstance(mContext);
        mPackageName = packageName;
        mUid = uid;
        if (lifecycle != null) {
            lifecycle.addObserver(this);
        }
@@ -87,6 +95,7 @@ public class AppBatteryPreferenceController extends BasePreferenceController
        super.displayPreference(screen);
        mPreference = screen.findPreference(getPreferenceKey());
        mPreference.setEnabled(false);
        loadBatteryDiffEntries();
    }

    @Override
@@ -94,6 +103,17 @@ public class AppBatteryPreferenceController extends BasePreferenceController
        if (!KEY_BATTERY.equals(preference.getKey())) {
            return false;
        }
        if (mBatteryDiffEntry != null) {
            AdvancedPowerUsageDetail.startBatteryDetailPage(
                    mParent.getActivity(),
                    mParent,
                    mBatteryDiffEntry,
                    mBatteryPercent,
                    /*isValidToShowSummary=*/ true,
                    /*slotInformation=*/ null);
            return true;
        }

        if (isBatteryStatsAvailable()) {
            final UserManager userManager =
                    (UserManager) mContext.getSystemService(Context.USER_SERVICE);
@@ -121,6 +141,31 @@ public class AppBatteryPreferenceController extends BasePreferenceController
                AppInfoDashboardFragment.LOADER_BATTERY_USAGE_STATS);
    }

    private void loadBatteryDiffEntries() {
        new AsyncTask<Void, Void, BatteryDiffEntry>() {
            @Override
            protected BatteryDiffEntry doInBackground(Void... unused) {
                final List<BatteryDiffEntry> batteryDiffEntries =
                        BatteryChartPreferenceController.getBatteryLast24HrUsageData(mContext);
                if (batteryDiffEntries != null) {
                    for (BatteryDiffEntry batteryDiffEntry : batteryDiffEntries) {
                        if (batteryDiffEntry.mBatteryHistEntry.mUid == mUid) {
                            return batteryDiffEntry;
                        }
                    }
                }
                return null;
            }

            @Override
            protected void onPostExecute(BatteryDiffEntry batteryDiffEntry) {
                mBatteryDiffEntry = batteryDiffEntry;
                mBatteryDiffEntriesLoaded = true;
                mPreference.setEnabled(mBatteryUsageStatsLoaded);
            }
        }.execute();
    }

    private void onLoadFinished() {
        if (mBatteryUsageStats == null) {
            return;
@@ -138,7 +183,8 @@ public class AppBatteryPreferenceController extends BasePreferenceController

    @VisibleForTesting
    void updateBattery() {
        mPreference.setEnabled(true);
        mBatteryUsageStatsLoaded = true;
        mPreference.setEnabled(mBatteryDiffEntriesLoaded);
        if (isBatteryStatsAvailable()) {
            final int percentOfMax = (int) mBatteryUtils.calculateBatteryPercent(
                    mUidBatteryConsumer.getConsumedPower(), mBatteryUsageStats.getConsumedPower(),
+20 −2
Original line number Diff line number Diff line
@@ -109,6 +109,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
    private PackageInfo mPackageInfo;
    private int mUserId;
    private String mPackageName;
    private int mUid;

    private DevicePolicyManager mDpm;
    private UserManager mUserManager;
@@ -290,7 +291,8 @@ public class AppInfoDashboardFragment extends DashboardFragment
                (SettingsActivity) getActivity(), this, lifecycle, packageName, mState,
                REQUEST_UNINSTALL, REQUEST_REMOVE_DEVICE_ADMIN);
        controllers.add(mAppButtonsPreferenceController);
        controllers.add(new AppBatteryPreferenceController(context, this, packageName, lifecycle));
        controllers.add(new AppBatteryPreferenceController(
                context, this, packageName, getUid(), lifecycle));
        controllers.add(new AppMemoryPreferenceController(context, this, lifecycle));
        controllers.add(new DefaultHomeShortcutPreferenceController(context, packageName));
        controllers.add(new DefaultBrowserShortcutPreferenceController(context, packageName));
@@ -561,7 +563,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
        final Bundle args = getArguments();
        mPackageName = (args != null) ? args.getString(ARG_PACKAGE_NAME) : null;
        if (mPackageName == null) {
            final Intent intent = (args == null) ?
            final Intent intent = args == null ?
                    getActivity().getIntent() : (Intent) args.getParcelable("intent");
            if (intent != null) {
                mPackageName = intent.getData().getSchemeSpecificPart();
@@ -570,6 +572,22 @@ public class AppInfoDashboardFragment extends DashboardFragment
        return mPackageName;
    }

    private int getUid() {
        if (mUid > 0) {
            return mUid;
        }
        final Bundle args = getArguments();
        mUid = (args != null) ? args.getInt(ARG_PACKAGE_UID) : -1;
        if (mUid <= 0) {
            final Intent intent = args == null
                    ? getActivity().getIntent() : (Intent) args.getParcelable("intent");
            if (intent != null && intent.getExtras() != null) {
                mUid = intent.getIntExtra("uId", -1);
            }
        }
        return mUid;
    }

    @VisibleForTesting
    void retrieveAppEntry() {
        final Activity activity = getActivity();
+2 −2
Original line number Diff line number Diff line
@@ -51,8 +51,8 @@ import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
import com.android.settingslib.utils.StringUtil;
import com.android.settingslib.widget.FooterPreference;

import java.util.Arrays;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -627,7 +627,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
        return true;
    }

    static List<BatteryDiffEntry> getBatteryLast24HrUsageData(Context context) {
    public static List<BatteryDiffEntry> getBatteryLast24HrUsageData(Context context) {
        final long start = System.currentTimeMillis();
        final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap =
            FeatureFactory.getFactory(context)
+5 −1
Original line number Diff line number Diff line
@@ -96,7 +96,11 @@ public class AppBatteryPreferenceControllerTest {
        when(mOtherUidBatteryConsumer.getUid()).thenReturn(OTHER_UID);

        mController = spy(new AppBatteryPreferenceController(
            RuntimeEnvironment.application, mFragment, "package1", null /* lifecycle */));
                RuntimeEnvironment.application,
                mFragment,
                "package1" /* packageName */,
                0 /* uId */,
                null /* lifecycle */));
        mController.mBatteryUtils = mBatteryUtils;
        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mBatteryPreference);
    }