Loading src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java +14 −8 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -114,7 +114,6 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements @VisibleForTesting boolean enableTriState = true; private MetricsFeatureProvider mMetricsFeatureProvider; private AppButtonsPreferenceController mAppButtonsPreferenceController; private BackgroundActivityPreferenceController mBackgroundActivityPreferenceController; Loading Loading @@ -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) { Loading @@ -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()); } Loading Loading @@ -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))); } } Loading src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java +4 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading src/com/android/settings/fuelgauge/BatteryDiffEntry.java +4 −4 Original line number Diff line number Diff line Loading @@ -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", Loading @@ -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(); } Loading src/com/android/settings/fuelgauge/ConvertUtils.java +5 −0 Original line number Diff line number Diff line Loading @@ -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; Loading tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java +13 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading Loading @@ -129,6 +132,7 @@ public class AdvancedPowerUsageDetailTest { private AdvancedPowerUsageDetail mFragment; private SettingsActivity mTestActivity; private FakeFeatureFactory mFeatureFactory; private MetricsFeatureProvider mMetricsFeatureProvider; @Before public void setUp() { Loading @@ -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(); Loading Loading @@ -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
src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java +14 −8 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -114,7 +114,6 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements @VisibleForTesting boolean enableTriState = true; private MetricsFeatureProvider mMetricsFeatureProvider; private AppButtonsPreferenceController mAppButtonsPreferenceController; private BackgroundActivityPreferenceController mBackgroundActivityPreferenceController; Loading Loading @@ -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) { Loading @@ -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()); } Loading Loading @@ -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))); } } Loading
src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java +4 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading
src/com/android/settings/fuelgauge/BatteryDiffEntry.java +4 −4 Original line number Diff line number Diff line Loading @@ -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", Loading @@ -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(); } Loading
src/com/android/settings/fuelgauge/ConvertUtils.java +5 −0 Original line number Diff line number Diff line Loading @@ -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; Loading
tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java +13 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading Loading @@ -129,6 +132,7 @@ public class AdvancedPowerUsageDetailTest { private AdvancedPowerUsageDetail mFragment; private SettingsActivity mTestActivity; private FakeFeatureFactory mFeatureFactory; private MetricsFeatureProvider mMetricsFeatureProvider; @Before public void setUp() { Loading @@ -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(); Loading Loading @@ -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") }); } }