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

Commit 92feb9e8 authored by Wesley.CW Wang's avatar Wesley.CW Wang
Browse files

Add new battery entry into AppInfo page launch variable

 - Insert uid as launch variable
 - Add new launch type into AppInfo page

Bug: 178197718
Test: make RunSettingsRoboTests
Change-Id: I8c68bebd02491dbbc1516bbebc14254ed06940f6
parent 31389702
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
@@ -111,6 +111,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
    private PackageInfo mPackageInfo;
    private int mUserId;
    private String mPackageName;
    private int mUid;

    private DevicePolicyManager mDpm;
    private UserManager mUserManager;
@@ -297,7 +298,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));
@@ -568,7 +570,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();
@@ -577,6 +579,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
@@ -50,8 +50,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;
@@ -638,7 +638,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);
    }