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

Commit 572ab5b3 authored by YUKAI HUNG's avatar YUKAI HUNG Committed by Android (Google) Code Review
Browse files

Merge "Add usage percentage and battery level into app relative metric" into sc-dev

parents c7c3db24 646c1a2e
Loading
Loading
Loading
Loading
+14 −8
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import android.text.Html;
import android.text.TextUtils;
import android.text.format.DateUtils;
import android.util.Log;
import android.util.Pair;
import android.view.View;

import androidx.annotation.VisibleForTesting;
@@ -49,7 +50,6 @@ import com.android.settings.widget.EntityHeaderController;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.utils.StringUtil;
import com.android.settingslib.widget.LayoutPreference;
import com.android.settingslib.widget.RadioButtonPreference;
@@ -114,7 +114,6 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
    @VisibleForTesting
    boolean enableTriState = true;

    private MetricsFeatureProvider mMetricsFeatureProvider;
    private AppButtonsPreferenceController mAppButtonsPreferenceController;
    private BackgroundActivityPreferenceController mBackgroundActivityPreferenceController;

@@ -242,8 +241,6 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        mMetricsFeatureProvider = FeatureFactory.getFactory(getContext())
                .getMetricsFeatureProvider();

        final String packageName = getArguments().getString(EXTRA_PACKAGE_NAME);
        if (enableTriState) {
@@ -267,8 +264,11 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
        if (enableTriState) {
            initPreferenceForTriState(getContext());
            final String packageName = mBatteryOptimizeUtils.getPackageName();
            mMetricsFeatureProvider.action(getContext(),
                    SettingsEnums.OPEN_APP_BATTERY_USAGE, packageName);
            FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider()
                .action(
                    getContext(),
                    SettingsEnums.OPEN_APP_BATTERY_USAGE,
                    packageName);
        } else {
            initPreference(getContext());
        }
@@ -433,8 +433,14 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
            metricCategory = SettingsEnums.ACTION_APP_BATTERY_USAGE_RESTRICTED;
        }
        if (metricCategory != 0) {
            mMetricsFeatureProvider.action(getContext(),
                    metricCategory, mBatteryOptimizeUtils.getPackageName());
            FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider()
                .action(
                    getContext(),
                    metricCategory,
                    new Pair(ConvertUtils.METRIC_KEY_PACKAGE,
                            mBatteryOptimizeUtils.getPackageName()),
                    new Pair(ConvertUtils.METRIC_KEY_BATTERY_USAGE,
                            getArguments().getString(EXTRA_POWER_USAGE_PERCENT)));
        }
    }

+4 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.text.TextUtils;
import android.text.format.DateFormat;
import android.text.format.DateUtils;
import android.util.Log;
import android.util.Pair;

import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
@@ -216,7 +217,9 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
            isAppEntry
                ? SettingsEnums.ACTION_BATTERY_USAGE_APP_ITEM
                : SettingsEnums.ACTION_BATTERY_USAGE_SYSTEM_ITEM,
            packageName);
            new Pair(ConvertUtils.METRIC_KEY_PACKAGE, packageName),
            new Pair(ConvertUtils.METRIC_KEY_BATTERY_LEVEL, histEntry.mBatteryLevel),
            new Pair(ConvertUtils.METRIC_KEY_BATTERY_USAGE, powerPref.getPercent()));
        Log.d(TAG, String.format("handleClick() label=%s key=%s isValid:%b\n%s",
            diffEntry.getAppLabel(), histEntry.getKey(), isValidPackage, histEntry));
        if (isValidPackage) {
+4 −4
Original line number Diff line number Diff line
@@ -258,7 +258,7 @@ public class BatteryDiffEntry {
    public String toString() {
        final StringBuilder builder = new StringBuilder()
            .append("BatteryDiffEntry{")
            .append("\n\tname=" + getAppLabel())
            .append("\n\tname=" + mAppLabel)
            .append(String.format("\n\tconsume=%.2f%% %f/%f",
                  mPercentOfTotal, mConsumePower, mTotalConsumePower))
            .append(String.format("\n\tforeground:%s background:%s",
@@ -266,9 +266,9 @@ public class BatteryDiffEntry {
                      /*withSeconds=*/ true, /*collapseTimeUnit=*/ false),
                  StringUtil.formatElapsedTime(mContext, mBackgroundUsageTimeInMs,
                      /*withSeconds=*/ true, /*collapseTimeUnit=*/ false)))
            .append(String.format("\n\tpackage:%s|%s uid:%d userId:%d",
                  mBatteryHistEntry.mPackageName, getPackageName(),
                  mBatteryHistEntry.mUid, mBatteryHistEntry.mUserId));
            .append(String.format("\n\tpackage:%s uid:%d userId:%d",
                  mBatteryHistEntry.mPackageName, mBatteryHistEntry.mUid,
                  mBatteryHistEntry.mUserId));
        return builder.toString();
    }

+5 −0
Original line number Diff line number Diff line
@@ -47,6 +47,11 @@ public final class ConvertUtils {
    // Maximum total time value for each slot cumulative data at most 2 hours.
    private static final float TOTAL_TIME_THRESHOLD = DateUtils.HOUR_IN_MILLIS * 2;

    // Keys for metric metadata.
    static final int METRIC_KEY_PACKAGE = 1;
    static final int METRIC_KEY_BATTERY_LEVEL = 2;
    static final int METRIC_KEY_BATTERY_USAGE = 3;

    @VisibleForTesting
    static double PERCENTAGE_OF_TOTAL_THRESHOLD = 1f;

+13 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.AppOpsManager;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
@@ -41,6 +42,7 @@ import android.graphics.drawable.Drawable;
import android.os.BatteryStats;
import android.os.Bundle;
import android.os.UserHandle;
import android.util.Pair;

import androidx.fragment.app.FragmentActivity;
import androidx.loader.app.LoaderManager;
@@ -56,6 +58,7 @@ import com.android.settings.widget.EntityHeaderController;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.applications.instantapps.InstantAppDataProvider;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.LayoutPreference;
import com.android.settingslib.widget.RadioButtonPreference;
@@ -129,6 +132,7 @@ public class AdvancedPowerUsageDetailTest {
    private AdvancedPowerUsageDetail mFragment;
    private SettingsActivity mTestActivity;
    private FakeFeatureFactory mFeatureFactory;
    private MetricsFeatureProvider mMetricsFeatureProvider;

    @Before
    public void setUp() {
@@ -137,6 +141,7 @@ public class AdvancedPowerUsageDetailTest {
        mContext = spy(RuntimeEnvironment.application);
        when(mContext.getPackageName()).thenReturn("foo");
        mFeatureFactory = FakeFeatureFactory.setupForTest();
        mMetricsFeatureProvider = mFeatureFactory.metricsFeatureProvider;

        mFragment = spy(new AdvancedPowerUsageDetail());
        doReturn(mContext).when(mFragment).getContext();
@@ -751,5 +756,13 @@ public class AdvancedPowerUsageDetailTest {
        assertThat(mOptimizePreference.isChecked()).isTrue();
        assertThat(mRestrictedPreference.isChecked()).isFalse();
        assertThat(mUnrestrictedPreference.isChecked()).isFalse();
        verify(mMetricsFeatureProvider)
            .action(
                mContext,
                SettingsEnums.ACTION_APP_BATTERY_USAGE_OPTIMIZED,
                (Pair<Integer, Object>[]) new Pair[] {
                    new Pair(ConvertUtils.METRIC_KEY_PACKAGE, null),
                    new Pair(ConvertUtils.METRIC_KEY_BATTERY_USAGE, "app label")
                });
    }
}
Loading