From a3d3c22a271aebfcaa7c5a3f09967e53c5e4c324 Mon Sep 17 00:00:00 2001 From: ykhung Date: Wed, 19 May 2021 15:33:52 +0800 Subject: [PATCH] Add metric for new battery relative functions for S (1/2) Reference the table from PM requested: https://docs.google.com/spreadsheets/d/1TC_6MLVMvOS0p1ic0wPfQ-19AOuY8Kc8FUJdqaQSM4I/edit?ts=6098b296#gid=0 Bug: 188505537 Test: make SettingsRoboTests Change-Id: I2a4df9ab900cbeaf9885bb2dbc21ea848920bc81 --- .../AppButtonsPreferenceController.java | 4 +++ ...BatteryPercentagePreferenceController.java | 4 +++ .../fuelgauge/AdvancedPowerUsageDetail.java | 28 +++++++++++++++++-- .../fuelgauge/BatteryOptimizeUtils.java | 5 ++++ .../RestrictAppPreferenceController.java | 4 +++ .../fuelgauge/RestrictedAppDetails.java | 11 ++++++-- 6 files changed, 51 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java b/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java index c3031efa780..ea34faf9ff6 100644 --- a/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java @@ -269,6 +269,8 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp @Override public void onClick(View v) { + mMetricsFeatureProvider.action( + mActivity, SettingsEnums.ACTION_APP_INFO_FORCE_STOP); // force stop if (mAppsControlDisallowedAdmin != null && !mAppsControlDisallowedBySystem) { RestrictedLockUtils.sendShowAdminSupportDetailsIntent( @@ -724,6 +726,8 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp mPackageName, AUTO_REVOKED_APP_INTERACTION__ACTION__OPEN_IN_SETTINGS); } mContext.startActivityAsUser(mAppLaunchIntent, new UserHandle(mUserId)); + mMetricsFeatureProvider.action(mActivity, + SettingsEnums.ACTION_APP_INFO_OPEN, mPackageName); } } diff --git a/src/com/android/settings/display/BatteryPercentagePreferenceController.java b/src/com/android/settings/display/BatteryPercentagePreferenceController.java index 945ce47aa82..448fb2b35a0 100644 --- a/src/com/android/settings/display/BatteryPercentagePreferenceController.java +++ b/src/com/android/settings/display/BatteryPercentagePreferenceController.java @@ -17,6 +17,7 @@ package com.android.settings.display; import static android.provider.Settings.System.SHOW_BATTERY_PERCENT; +import android.app.settings.SettingsEnums; import android.content.Context; import android.provider.Settings; @@ -28,6 +29,7 @@ import com.android.internal.R; import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerMixin; +import com.android.settings.overlay.FeatureFactory; /** * A controller to manage the switch for showing battery percentage in the status bar. @@ -75,6 +77,8 @@ public class BatteryPercentagePreferenceController extends BasePreferenceControl boolean showPercentage = (Boolean) newValue; Settings.System.putInt(mContext.getContentResolver(), SHOW_BATTERY_PERCENT, showPercentage ? 1 : 0); + FeatureFactory.getFactory(mContext).getMetricsFeatureProvider() + .action(mContext, SettingsEnums.OPEN_BATTERY_PERCENTAGE, showPercentage); return true; } } diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java index 2b8328842e9..965994d34a6 100644 --- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java +++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java @@ -49,6 +49,7 @@ 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; @@ -113,6 +114,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements @VisibleForTesting boolean enableTriState = true; + private MetricsFeatureProvider mMetricsFeatureProvider; private AppButtonsPreferenceController mAppButtonsPreferenceController; private BackgroundActivityPreferenceController mBackgroundActivityPreferenceController; @@ -240,6 +242,8 @@ 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) { @@ -262,6 +266,9 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements initHeader(); if (enableTriState) { initPreferenceForTriState(getContext()); + final String packageName = mBatteryOptimizeUtils.getPackageName(); + mMetricsFeatureProvider.action(getContext(), + SettingsEnums.OPEN_APP_BATTERY_USAGE, packageName); } else { initPreference(getContext()); } @@ -411,9 +418,24 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements @Override public void onRadioButtonClicked(RadioButtonPreference selected) { - updatePreferenceState(mUnrestrictedPreference, selected.getKey()); - updatePreferenceState(mOptimizePreference, selected.getKey()); - updatePreferenceState(mRestrictedPreference, selected.getKey()); + final String selectedKey = selected.getKey(); + updatePreferenceState(mUnrestrictedPreference, selectedKey); + updatePreferenceState(mOptimizePreference, selectedKey); + updatePreferenceState(mRestrictedPreference, selectedKey); + + // Logs metric. + int metricCategory = 0; + if (selectedKey.equals(mUnrestrictedPreference.getKey())) { + metricCategory = SettingsEnums.ACTION_APP_BATTERY_USAGE_UNRESTRICTED; + } else if (selectedKey.equals(mOptimizePreference.getKey())) { + metricCategory = SettingsEnums.ACTION_APP_BATTERY_USAGE_OPTIMIZED; + } else if (selectedKey.equals(mRestrictedPreference.getKey())) { + metricCategory = SettingsEnums.ACTION_APP_BATTERY_USAGE_RESTRICTED; + } + if (metricCategory != 0) { + mMetricsFeatureProvider.action(getContext(), + metricCategory, mBatteryOptimizeUtils.getPackageName()); + } } private void updatePreferenceState(RadioButtonPreference preference, String selectedKey) { diff --git a/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java b/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java index 1184a779e3f..4a560402667 100644 --- a/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java +++ b/src/com/android/settings/fuelgauge/BatteryOptimizeUtils.java @@ -27,6 +27,7 @@ import com.android.settingslib.fuelgauge.PowerAllowlistBackend; /** A utility class for application usage operation. */ public class BatteryOptimizeUtils { private static final String TAG = "BatteryOptimizeUtils"; + private static final String UNKNOWN_PACKAGE = "unknown"; @VisibleForTesting AppOpsManager mAppOpsManager; @VisibleForTesting BatteryUtils mBatteryUtils; @@ -108,6 +109,10 @@ public class BatteryOptimizeUtils { || mPowerAllowListBackend.isDefaultActiveApp(mPackageName); } + String getPackageName() { + return mPackageName == null ? UNKNOWN_PACKAGE : mPackageName; + } + private void refreshState() { mPowerAllowListBackend.refreshList(); mAllowListed = mPowerAllowListBackend.isAllowlisted(mPackageName); diff --git a/src/com/android/settings/fuelgauge/RestrictAppPreferenceController.java b/src/com/android/settings/fuelgauge/RestrictAppPreferenceController.java index 1460d751ad0..b960d4c4e06 100644 --- a/src/com/android/settings/fuelgauge/RestrictAppPreferenceController.java +++ b/src/com/android/settings/fuelgauge/RestrictAppPreferenceController.java @@ -18,6 +18,7 @@ package com.android.settings.fuelgauge; import android.app.AppOpsManager; +import android.app.settings.SettingsEnums; import android.content.Context; import android.os.UserManager; @@ -29,6 +30,7 @@ import com.android.settings.core.BasePreferenceController; import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.fuelgauge.batterytip.AppInfo; import com.android.settings.fuelgauge.batterytip.BatteryTipUtils; +import com.android.settings.overlay.FeatureFactory; import java.util.List; @@ -80,6 +82,8 @@ public class RestrictAppPreferenceController extends BasePreferenceController { // start fragment RestrictedAppDetails.startRestrictedAppDetails(mPreferenceFragment, mAppInfos); + FeatureFactory.getFactory(mContext).getMetricsFeatureProvider() + .action(mContext, SettingsEnums.OPEN_APP_RESTRICTED_LIST); return true; } diff --git a/src/com/android/settings/fuelgauge/RestrictedAppDetails.java b/src/com/android/settings/fuelgauge/RestrictedAppDetails.java index db831402f38..77eaa23ea5c 100644 --- a/src/com/android/settings/fuelgauge/RestrictedAppDetails.java +++ b/src/com/android/settings/fuelgauge/RestrictedAppDetails.java @@ -44,8 +44,10 @@ import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController; import com.android.settings.fuelgauge.batterytip.tips.BatteryTip; import com.android.settings.fuelgauge.batterytip.tips.RestrictAppTip; import com.android.settings.fuelgauge.batterytip.tips.UnrestrictAppTip; +import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.AppCheckBoxPreference; import com.android.settingslib.core.AbstractPreferenceController; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.utils.StringUtil; import java.util.List; @@ -76,6 +78,8 @@ public class RestrictedAppDetails extends DashboardFragment implements @VisibleForTesting BatteryDatabaseManager mBatteryDatabaseManager; + private MetricsFeatureProvider mMetricsFeatureProvider; + public static void startRestrictedAppDetails(InstrumentedPreferenceFragment fragment, List appInfos) { final Bundle args = new Bundle(); @@ -100,7 +104,8 @@ public class RestrictedAppDetails extends DashboardFragment implements mIconDrawableFactory = IconDrawableFactory.newInstance(context); mBatteryUtils = BatteryUtils.getInstance(context); mBatteryDatabaseManager = BatteryDatabaseManager.getInstance(context); - + mMetricsFeatureProvider = + FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider(); refreshUi(); } @@ -162,7 +167,9 @@ public class RestrictedAppDetails extends DashboardFragment implements (Boolean) value); fragment.setTargetFragment(this, 0 /* requestCode */); fragment.show(getFragmentManager(), TAG); - + mMetricsFeatureProvider.action(getContext(), + SettingsEnums.ACTION_APP_RESTRICTED_LIST_UNCHECKED, + appInfo.packageName); return false; });