Add log for battery tip action.
For each action, we add log when it is triggered. RestrictAppAction could be triggered in multiple locations (main page vs battery app detail page), so we add metricsKey to distinguish them Bug: 73888115 Test: RunSettingsRoboTests Change-Id: I08f28431c4e891bf90816ce91f551edc671579cd
This commit is contained in:
@@ -15,7 +15,6 @@
|
||||
package com.android.settings.fuelgauge;
|
||||
|
||||
import android.app.AppOpsManager;
|
||||
import android.app.Fragment;
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.content.Context;
|
||||
import android.os.UserManager;
|
||||
@@ -24,6 +23,7 @@ import android.support.v7.preference.Preference;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.core.InstrumentedPreferenceFragment;
|
||||
import com.android.settings.core.PreferenceControllerMixin;
|
||||
import com.android.settings.fuelgauge.batterytip.AppInfo;
|
||||
import com.android.settings.fuelgauge.batterytip.BatteryTipDialogFragment;
|
||||
@@ -51,17 +51,17 @@ public class BackgroundActivityPreferenceController extends AbstractPreferenceCo
|
||||
DevicePolicyManagerWrapper mDpm;
|
||||
@VisibleForTesting
|
||||
BatteryUtils mBatteryUtils;
|
||||
private Fragment mFragment;
|
||||
private InstrumentedPreferenceFragment mFragment;
|
||||
private String mTargetPackage;
|
||||
private PowerWhitelistBackend mPowerWhitelistBackend;
|
||||
|
||||
public BackgroundActivityPreferenceController(Context context, Fragment fragment,
|
||||
int uid, String packageName) {
|
||||
public BackgroundActivityPreferenceController(Context context,
|
||||
InstrumentedPreferenceFragment fragment, int uid, String packageName) {
|
||||
this(context, fragment, uid, packageName, PowerWhitelistBackend.getInstance());
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
BackgroundActivityPreferenceController(Context context, Fragment fragment,
|
||||
BackgroundActivityPreferenceController(Context context, InstrumentedPreferenceFragment fragment,
|
||||
int uid, String packageName, PowerWhitelistBackend backend) {
|
||||
super(context);
|
||||
mPowerWhitelistBackend = backend;
|
||||
@@ -137,7 +137,8 @@ public class BackgroundActivityPreferenceController extends AbstractPreferenceCo
|
||||
? new UnrestrictAppTip(BatteryTip.StateType.NEW, appInfo)
|
||||
: new RestrictAppTip(BatteryTip.StateType.NEW, appInfo);
|
||||
|
||||
final BatteryTipDialogFragment dialogFragment = BatteryTipDialogFragment.newInstance(tip);
|
||||
final BatteryTipDialogFragment dialogFragment = BatteryTipDialogFragment.newInstance(tip,
|
||||
mFragment.getMetricsCategory());
|
||||
dialogFragment.setTargetFragment(mFragment, 0 /* requestCode */);
|
||||
dialogFragment.show(mFragment.getFragmentManager(), TAG);
|
||||
}
|
||||
|
@@ -51,15 +51,19 @@ public class BatteryTipDialogFragment extends InstrumentedDialogFragment impleme
|
||||
DialogInterface.OnClickListener {
|
||||
|
||||
private static final String ARG_BATTERY_TIP = "battery_tip";
|
||||
private static final String ARG_METRICS_KEY = "metrics_key";
|
||||
|
||||
@VisibleForTesting
|
||||
BatteryTip mBatteryTip;
|
||||
@VisibleForTesting
|
||||
int mMetricsKey;
|
||||
|
||||
public static BatteryTipDialogFragment newInstance(BatteryTip batteryTip) {
|
||||
public static BatteryTipDialogFragment newInstance(BatteryTip batteryTip, int metricsKey) {
|
||||
BatteryTipDialogFragment dialogFragment = new BatteryTipDialogFragment();
|
||||
|
||||
Bundle args = new Bundle(1);
|
||||
args.putParcelable(ARG_BATTERY_TIP, batteryTip);
|
||||
args.putInt(ARG_METRICS_KEY, metricsKey);
|
||||
dialogFragment.setArguments(args);
|
||||
|
||||
return dialogFragment;
|
||||
@@ -71,6 +75,7 @@ public class BatteryTipDialogFragment extends InstrumentedDialogFragment impleme
|
||||
final Context context = getContext();
|
||||
|
||||
mBatteryTip = bundle.getParcelable(ARG_BATTERY_TIP);
|
||||
mMetricsKey = bundle.getInt(ARG_METRICS_KEY);
|
||||
|
||||
switch (mBatteryTip.getType()) {
|
||||
case BatteryTip.TipType.SUMMARY:
|
||||
@@ -165,7 +170,7 @@ public class BatteryTipDialogFragment extends InstrumentedDialogFragment impleme
|
||||
(SettingsActivity) getActivity(),
|
||||
(InstrumentedPreferenceFragment) getTargetFragment());
|
||||
if (action != null) {
|
||||
action.handlePositiveAction();
|
||||
action.handlePositiveAction(mMetricsKey);
|
||||
}
|
||||
lsn.onBatteryTipHandled(mBatteryTip);
|
||||
}
|
||||
|
@@ -118,14 +118,14 @@ public class BatteryTipPreferenceController extends BasePreferenceController {
|
||||
if (batteryTip != null) {
|
||||
if (batteryTip.shouldShowDialog()) {
|
||||
BatteryTipDialogFragment dialogFragment = BatteryTipDialogFragment.newInstance(
|
||||
batteryTip);
|
||||
batteryTip, mFragment.getMetricsCategory());
|
||||
dialogFragment.setTargetFragment(mFragment, REQUEST_ANOMALY_ACTION);
|
||||
dialogFragment.show(mFragment.getFragmentManager(), TAG);
|
||||
} else {
|
||||
final BatteryTipAction action = BatteryTipUtils.getActionForBatteryTip(batteryTip,
|
||||
mSettingsActivity, mFragment);
|
||||
if (action != null) {
|
||||
action.handlePositiveAction();
|
||||
action.handlePositiveAction(mFragment.getMetricsCategory());
|
||||
}
|
||||
if (mBatteryTipListener != null) {
|
||||
mBatteryTipListener.onBatteryTipHandled(batteryTip);
|
||||
|
@@ -19,6 +19,8 @@ package com.android.settings.fuelgauge.batterytip.actions;
|
||||
import android.content.Context;
|
||||
import android.os.PowerManager;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
|
||||
public class BatterySaverAction extends BatteryTipAction {
|
||||
private PowerManager mPowerManager;
|
||||
|
||||
@@ -31,7 +33,9 @@ public class BatterySaverAction extends BatteryTipAction {
|
||||
* Handle the action when user clicks positive button
|
||||
*/
|
||||
@Override
|
||||
public void handlePositiveAction() {
|
||||
public void handlePositiveAction(int metricsKey) {
|
||||
mPowerManager.setPowerSaveMode(true);
|
||||
mMetricsFeatureProvider.action(mContext,
|
||||
MetricsProto.MetricsEvent.ACTION_TIP_TURN_ON_BATTERY_SAVER, metricsKey);
|
||||
}
|
||||
}
|
||||
|
@@ -18,6 +18,7 @@ package com.android.settings.fuelgauge.batterytip.actions;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
|
||||
/**
|
||||
@@ -25,13 +26,15 @@ import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
*/
|
||||
public abstract class BatteryTipAction {
|
||||
protected Context mContext;
|
||||
protected MetricsFeatureProvider mMetricsFeatureProvider;
|
||||
|
||||
public BatteryTipAction(Context context) {
|
||||
mContext = context;
|
||||
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the action when user clicks positive button
|
||||
*/
|
||||
public abstract void handlePositiveAction();
|
||||
public abstract void handlePositiveAction(int metricsKey);
|
||||
}
|
||||
|
@@ -18,6 +18,7 @@ package com.android.settings.fuelgauge.batterytip.actions;
|
||||
|
||||
import android.app.Fragment;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.core.InstrumentedPreferenceFragment;
|
||||
import com.android.settings.fuelgauge.BatteryUtils;
|
||||
@@ -49,7 +50,9 @@ public class OpenRestrictAppFragmentAction extends BatteryTipAction {
|
||||
* Handle the action when user clicks positive button
|
||||
*/
|
||||
@Override
|
||||
public void handlePositiveAction() {
|
||||
public void handlePositiveAction(int metricsKey) {
|
||||
mMetricsFeatureProvider.action(mContext,
|
||||
MetricsProto.MetricsEvent.ACTION_TIP_OPEN_APP_RESTRICTION_PAGE, metricsKey);
|
||||
final List<AppInfo> mAppInfos = mRestrictAppTip.getRestrictAppList();
|
||||
RestrictedAppDetails.startRestrictedAppDetails(mSettingsActivity, mFragment,
|
||||
mAppInfos);
|
||||
|
@@ -19,7 +19,10 @@ package com.android.settings.fuelgauge.batterytip.actions;
|
||||
import android.app.AppOpsManager;
|
||||
import android.content.Context;
|
||||
import android.support.annotation.VisibleForTesting;
|
||||
import android.util.Pair;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.internal.util.CollectionUtils;
|
||||
import com.android.settings.fuelgauge.BatteryUtils;
|
||||
import com.android.settings.fuelgauge.batterytip.AnomalyDatabaseHelper;
|
||||
import com.android.settings.fuelgauge.batterytip.AppInfo;
|
||||
@@ -49,14 +52,28 @@ public class RestrictAppAction extends BatteryTipAction {
|
||||
* Handle the action when user clicks positive button
|
||||
*/
|
||||
@Override
|
||||
public void handlePositiveAction() {
|
||||
public void handlePositiveAction(int metricsKey) {
|
||||
final List<AppInfo> appInfos = mRestrictAppTip.getRestrictAppList();
|
||||
|
||||
for (int i = 0, size = appInfos.size(); i < size; i++) {
|
||||
final String packageName = appInfos.get(i).packageName;
|
||||
final AppInfo appInfo = appInfos.get(i);
|
||||
final String packageName = appInfo.packageName;
|
||||
// Force app standby, then app can't run in the background
|
||||
mBatteryUtils.setForceAppStandby(mBatteryUtils.getPackageUid(packageName), packageName,
|
||||
AppOpsManager.MODE_IGNORED);
|
||||
if (CollectionUtils.isEmpty(appInfo.anomalyTypes)) {
|
||||
// Only log context if there is no anomaly type
|
||||
mMetricsFeatureProvider.action(mContext,
|
||||
MetricsProto.MetricsEvent.ACTION_TIP_RESTRICT_APP, packageName,
|
||||
Pair.create(MetricsProto.MetricsEvent.FIELD_CONTEXT, metricsKey));
|
||||
} else {
|
||||
for (int type : appInfo.anomalyTypes) {
|
||||
mMetricsFeatureProvider.action(mContext,
|
||||
MetricsProto.MetricsEvent.ACTION_TIP_RESTRICT_APP, packageName,
|
||||
Pair.create(MetricsProto.MetricsEvent.FIELD_CONTEXT, metricsKey),
|
||||
Pair.create(MetricsProto.MetricsEvent.FIELD_ANOMALY_TYPE, type));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mBatteryDatabaseManager.updateAnomalies(appInfos, AnomalyDatabaseHelper.State.HANDLED);
|
||||
|
@@ -18,6 +18,7 @@ package com.android.settings.fuelgauge.batterytip.actions;
|
||||
|
||||
import android.app.Fragment;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.core.SubSettingLauncher;
|
||||
@@ -38,7 +39,9 @@ public class SmartBatteryAction extends BatteryTipAction {
|
||||
* Handle the action when user clicks positive button
|
||||
*/
|
||||
@Override
|
||||
public void handlePositiveAction() {
|
||||
public void handlePositiveAction(int metricsKey) {
|
||||
mMetricsFeatureProvider.action(mContext,
|
||||
MetricsProto.MetricsEvent.ACTION_TIP_OPEN_SMART_BATTERY, metricsKey);
|
||||
new SubSettingLauncher(mSettingsActivity)
|
||||
.setSourceMetricsCategory(mFragment instanceof Instrumentable
|
||||
? ((Instrumentable) mFragment).getMetricsCategory()
|
||||
|
@@ -18,7 +18,10 @@ package com.android.settings.fuelgauge.batterytip.actions;
|
||||
|
||||
import android.app.AppOpsManager;
|
||||
import android.content.Context;
|
||||
import android.support.annotation.VisibleForTesting;
|
||||
import android.util.Pair;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.settings.fuelgauge.BatteryUtils;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.UnrestrictAppTip;
|
||||
|
||||
@@ -27,7 +30,8 @@ import com.android.settings.fuelgauge.batterytip.tips.UnrestrictAppTip;
|
||||
*/
|
||||
public class UnrestrictAppAction extends BatteryTipAction {
|
||||
private UnrestrictAppTip mUnRestrictAppTip;
|
||||
private BatteryUtils mBatteryUtils;
|
||||
@VisibleForTesting
|
||||
BatteryUtils mBatteryUtils;
|
||||
|
||||
public UnrestrictAppAction(Context context, UnrestrictAppTip tip) {
|
||||
super(context);
|
||||
@@ -39,10 +43,13 @@ public class UnrestrictAppAction extends BatteryTipAction {
|
||||
* Handle the action when user clicks positive button
|
||||
*/
|
||||
@Override
|
||||
public void handlePositiveAction() {
|
||||
public void handlePositiveAction(int metricsKey) {
|
||||
final String packageName = mUnRestrictAppTip.getPackageName();
|
||||
// Clear force app standby, then app can run in the background
|
||||
mBatteryUtils.setForceAppStandby(mBatteryUtils.getPackageUid(packageName), packageName,
|
||||
AppOpsManager.MODE_ALLOWED);
|
||||
mMetricsFeatureProvider.action(mContext,
|
||||
MetricsProto.MetricsEvent.ACTION_TIP_UNRESTRICT_APP, packageName, Pair.create(
|
||||
MetricsProto.MetricsEvent.FIELD_CONTEXT, metricsKey));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user