Revert "DO NOT MERGE Add metric log for anomaly."
This reverts commit adf11594d3
.
Merged-In: I83761e2a9c206ea7a04f7d031a6961fdab7ca9a0
Change-Id: I015d8c0d05c7ae9abfd4939f7a95e1f0daecc1fc
This commit is contained in:
@@ -45,7 +45,6 @@ import com.android.settings.applications.LayoutPreference;
|
|||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
import com.android.settings.enterprise.DevicePolicyManagerWrapper;
|
import com.android.settings.enterprise.DevicePolicyManagerWrapper;
|
||||||
import com.android.settings.enterprise.DevicePolicyManagerWrapperImpl;
|
import com.android.settings.enterprise.DevicePolicyManagerWrapperImpl;
|
||||||
import com.android.settings.fuelgauge.anomaly.AnomalyUtils;
|
|
||||||
import com.android.settings.fuelgauge.anomaly.Anomaly;
|
import com.android.settings.fuelgauge.anomaly.Anomaly;
|
||||||
import com.android.settings.fuelgauge.anomaly.AnomalyDialogFragment;
|
import com.android.settings.fuelgauge.anomaly.AnomalyDialogFragment;
|
||||||
import com.android.settings.fuelgauge.anomaly.AnomalyLoader;
|
import com.android.settings.fuelgauge.anomaly.AnomalyLoader;
|
||||||
@@ -349,9 +348,6 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoadFinished(Loader<List<Anomaly>> loader, List<Anomaly> data) {
|
public void onLoadFinished(Loader<List<Anomaly>> loader, List<Anomaly> data) {
|
||||||
final AnomalyUtils anomalyUtils = AnomalyUtils.getInstance(getContext());
|
|
||||||
anomalyUtils.logAnomalies(mMetricsFeatureProvider, data,
|
|
||||||
MetricsEvent.FUELGAUGE_POWER_USAGE_DETAIL);
|
|
||||||
mAnomalySummaryPreferenceController.updateAnomalySummaryPreference(data);
|
mAnomalySummaryPreferenceController.updateAnomalySummaryPreference(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -68,7 +68,6 @@ import com.android.settings.fuelgauge.anomaly.AnomalyDetectionPolicy;
|
|||||||
import com.android.settings.fuelgauge.anomaly.AnomalyDialogFragment.AnomalyDialogListener;
|
import com.android.settings.fuelgauge.anomaly.AnomalyDialogFragment.AnomalyDialogListener;
|
||||||
import com.android.settings.fuelgauge.anomaly.AnomalyLoader;
|
import com.android.settings.fuelgauge.anomaly.AnomalyLoader;
|
||||||
import com.android.settings.fuelgauge.anomaly.AnomalySummaryPreferenceController;
|
import com.android.settings.fuelgauge.anomaly.AnomalySummaryPreferenceController;
|
||||||
import com.android.settings.fuelgauge.anomaly.AnomalyUtils;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.search.BaseSearchIndexProvider;
|
import com.android.settings.search.BaseSearchIndexProvider;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
@@ -152,10 +151,6 @@ public class PowerUsageSummary extends PowerUsageBase implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoadFinished(Loader<List<Anomaly>> loader, List<Anomaly> data) {
|
public void onLoadFinished(Loader<List<Anomaly>> loader, List<Anomaly> data) {
|
||||||
final AnomalyUtils anomalyUtils = AnomalyUtils.getInstance(getContext());
|
|
||||||
anomalyUtils.logAnomalies(mMetricsFeatureProvider, data,
|
|
||||||
MetricsEvent.FUELGAUGE_POWER_USAGE_SUMMARY);
|
|
||||||
|
|
||||||
// show high usage preference if possible
|
// show high usage preference if possible
|
||||||
mAnomalySummaryPreferenceController.updateAnomalySummaryPreference(data);
|
mAnomalySummaryPreferenceController.updateAnomalySummaryPreference(data);
|
||||||
|
|
||||||
|
@@ -100,13 +100,9 @@ public class AnomalyDialogFragment extends InstrumentedDialogFragment implements
|
|||||||
@Override
|
@Override
|
||||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||||
final Bundle bundle = getArguments();
|
final Bundle bundle = getArguments();
|
||||||
final Context context = getContext();
|
|
||||||
final AnomalyUtils anomalyUtils = AnomalyUtils.getInstance(context);
|
|
||||||
|
|
||||||
mAnomaly = bundle.getParcelable(ARG_ANOMALY);
|
mAnomaly = bundle.getParcelable(ARG_ANOMALY);
|
||||||
anomalyUtils.logAnomaly(mMetricsFeatureProvider, mAnomaly,
|
|
||||||
MetricsProto.MetricsEvent.DIALOG_HANDLE_ANOMALY);
|
|
||||||
|
|
||||||
|
final Context context = getContext();
|
||||||
final AnomalyAction anomalyAction = mAnomalyUtils.getAnomalyAction(mAnomaly);
|
final AnomalyAction anomalyAction = mAnomalyUtils.getAnomalyAction(mAnomaly);
|
||||||
switch (anomalyAction.getActionType()) {
|
switch (anomalyAction.getActionType()) {
|
||||||
case Anomaly.AnomalyActionType.FORCE_STOP:
|
case Anomaly.AnomalyActionType.FORCE_STOP:
|
||||||
|
@@ -19,12 +19,8 @@ package com.android.settings.fuelgauge.anomaly;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.support.annotation.VisibleForTesting;
|
import android.support.annotation.VisibleForTesting;
|
||||||
import android.util.Pair;
|
|
||||||
import android.util.SparseIntArray;
|
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
|
||||||
import com.android.internal.os.BatteryStatsHelper;
|
import com.android.internal.os.BatteryStatsHelper;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.fuelgauge.anomaly.action.AnomalyAction;
|
import com.android.settings.fuelgauge.anomaly.action.AnomalyAction;
|
||||||
import com.android.settings.fuelgauge.anomaly.action.ForceStopAction;
|
import com.android.settings.fuelgauge.anomaly.action.ForceStopAction;
|
||||||
import com.android.settings.fuelgauge.anomaly.action.LocationCheckAction;
|
import com.android.settings.fuelgauge.anomaly.action.LocationCheckAction;
|
||||||
@@ -44,17 +40,6 @@ public class AnomalyUtils {
|
|||||||
private Context mContext;
|
private Context mContext;
|
||||||
private static AnomalyUtils sInstance;
|
private static AnomalyUtils sInstance;
|
||||||
|
|
||||||
private static final SparseIntArray mMetricArray;
|
|
||||||
static {
|
|
||||||
mMetricArray = new SparseIntArray();
|
|
||||||
mMetricArray.append(Anomaly.AnomalyType.WAKE_LOCK,
|
|
||||||
MetricsProto.MetricsEvent.ANOMALY_TYPE_WAKELOCK);
|
|
||||||
mMetricArray.append(Anomaly.AnomalyType.WAKEUP_ALARM,
|
|
||||||
MetricsProto.MetricsEvent.ANOMALY_TYPE_WAKEUP_ALARM);
|
|
||||||
mMetricArray.append(Anomaly.AnomalyType.BLUETOOTH_SCAN,
|
|
||||||
MetricsProto.MetricsEvent.ANOMALY_TYPE_UNOPTIMIZED_BT);
|
|
||||||
}
|
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
AnomalyUtils(Context context) {
|
AnomalyUtils(Context context) {
|
||||||
mContext = context.getApplicationContext();
|
mContext = context.getApplicationContext();
|
||||||
@@ -133,39 +118,4 @@ public class AnomalyUtils {
|
|||||||
return anomalies;
|
return anomalies;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Log the list of {@link Anomaly} using {@link MetricsFeatureProvider}, which contains
|
|
||||||
* anomaly type, package name, field_context, field_action_type
|
|
||||||
*
|
|
||||||
* @param provider provider to do the logging
|
|
||||||
* @param anomalies contains the data to log
|
|
||||||
* @param contextId which page invoke this logging
|
|
||||||
* @see #logAnomaly(MetricsFeatureProvider, Anomaly, int)
|
|
||||||
*/
|
|
||||||
public void logAnomalies(MetricsFeatureProvider provider, List<Anomaly> anomalies,
|
|
||||||
int contextId) {
|
|
||||||
for (int i = 0, size = anomalies.size(); i < size; i++) {
|
|
||||||
logAnomaly(provider, anomalies.get(i), contextId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Log the {@link Anomaly} using {@link MetricsFeatureProvider}, which contains
|
|
||||||
* anomaly type, package name, field_context, field_action_type
|
|
||||||
*
|
|
||||||
* @param provider provider to do the logging
|
|
||||||
* @param anomaly contains the data to log
|
|
||||||
* @param contextId which page invoke this logging
|
|
||||||
* @see #logAnomalies(MetricsFeatureProvider, List, int)
|
|
||||||
*/
|
|
||||||
public void logAnomaly(MetricsFeatureProvider provider, Anomaly anomaly, int contextId) {
|
|
||||||
provider.action(
|
|
||||||
mContext,
|
|
||||||
mMetricArray.get(anomaly.type, MetricsProto.MetricsEvent.VIEW_UNKNOWN),
|
|
||||||
anomaly.packageName,
|
|
||||||
Pair.create(MetricsProto.MetricsEvent.FIELD_CONTEXT, contextId),
|
|
||||||
Pair.create(MetricsProto.MetricsEvent.FIELD_ANOMALY_ACTION_TYPE,
|
|
||||||
getAnomalyAction(anomaly).getActionType()));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -58,6 +58,5 @@ public abstract class AnomalyAction {
|
|||||||
*/
|
*/
|
||||||
public abstract boolean isActionActive(Anomaly anomaly);
|
public abstract boolean isActionActive(Anomaly anomaly);
|
||||||
|
|
||||||
@Anomaly.AnomalyActionType
|
|
||||||
public abstract int getActionType();
|
public abstract int getActionType();
|
||||||
}
|
}
|
||||||
|
@@ -19,7 +19,6 @@ package com.android.settings.fuelgauge.anomaly.action;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.support.annotation.VisibleForTesting;
|
import android.support.annotation.VisibleForTesting;
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
|
||||||
import com.android.settings.fuelgauge.anomaly.Anomaly;
|
import com.android.settings.fuelgauge.anomaly.Anomaly;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -35,7 +34,6 @@ public class StopAndBackgroundCheckAction extends AnomalyAction {
|
|||||||
|
|
||||||
public StopAndBackgroundCheckAction(Context context) {
|
public StopAndBackgroundCheckAction(Context context) {
|
||||||
this(context, new ForceStopAction(context), new BackgroundCheckAction(context));
|
this(context, new ForceStopAction(context), new BackgroundCheckAction(context));
|
||||||
mActionMetricKey = MetricsProto.MetricsEvent.ACTION_APP_STOP_AND_BACKGROUND_CHECK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -48,7 +46,6 @@ public class StopAndBackgroundCheckAction extends AnomalyAction {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handlePositiveAction(Anomaly anomaly, int metricsKey) {
|
public void handlePositiveAction(Anomaly anomaly, int metricsKey) {
|
||||||
super.handlePositiveAction(anomaly, metricsKey);
|
|
||||||
mForceStopAction.handlePositiveAction(anomaly, metricsKey);
|
mForceStopAction.handlePositiveAction(anomaly, metricsKey);
|
||||||
mBackgroundCheckAction.handlePositiveAction(anomaly, metricsKey);
|
mBackgroundCheckAction.handlePositiveAction(anomaly, metricsKey);
|
||||||
}
|
}
|
||||||
|
@@ -32,7 +32,6 @@ import android.os.Build;
|
|||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.fuelgauge.anomaly.action.AnomalyAction;
|
import com.android.settings.fuelgauge.anomaly.action.AnomalyAction;
|
||||||
import com.android.settings.testutils.FakeFeatureFactory;
|
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
|
|
||||||
@@ -69,7 +68,7 @@ public class AnomalyDialogFragmentTest {
|
|||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
|
||||||
mContext = spy(RuntimeEnvironment.application);
|
mContext = RuntimeEnvironment.application;
|
||||||
mWakeLockAnomaly = new Anomaly.Builder()
|
mWakeLockAnomaly = new Anomaly.Builder()
|
||||||
.setType(Anomaly.AnomalyType.WAKE_LOCK)
|
.setType(Anomaly.AnomalyType.WAKE_LOCK)
|
||||||
.setUid(UID)
|
.setUid(UID)
|
||||||
@@ -95,7 +94,6 @@ public class AnomalyDialogFragmentTest {
|
|||||||
.setPackageName(PACKAGE_NAME)
|
.setPackageName(PACKAGE_NAME)
|
||||||
.setDisplayName(DISPLAY_NAME)
|
.setDisplayName(DISPLAY_NAME)
|
||||||
.build();
|
.build();
|
||||||
FakeFeatureFactory.setupForTest(mContext);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -168,4 +166,29 @@ public class AnomalyDialogFragmentTest {
|
|||||||
assertThat(dialog.getButton(DialogInterface.BUTTON_NEGATIVE).getText()).isEqualTo(
|
assertThat(dialog.getButton(DialogInterface.BUTTON_NEGATIVE).getText()).isEqualTo(
|
||||||
mContext.getString(R.string.dlg_cancel));
|
mContext.getString(R.string.dlg_cancel));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testOnCreateDialog_bluetoothAnomaly_fireLocationCheckDialog() {
|
||||||
|
mAnomalyDialogFragment = spy(AnomalyDialogFragment.newInstance(mBluetoothAnomaly,
|
||||||
|
0 /* metricskey */));
|
||||||
|
mAnomalyDialogFragment.mAnomalyUtils = mAnomalyUtils;
|
||||||
|
doReturn(mAnomalyAction).when(mAnomalyUtils).getAnomalyAction(any());
|
||||||
|
doNothing().when(mAnomalyDialogFragment).initAnomalyUtils();
|
||||||
|
doReturn(Anomaly.AnomalyActionType.LOCATION_CHECK).when(mAnomalyAction).getActionType();
|
||||||
|
|
||||||
|
FragmentTestUtil.startFragment(mAnomalyDialogFragment);
|
||||||
|
|
||||||
|
final AlertDialog dialog = (AlertDialog) ShadowDialog.getLatestDialog();
|
||||||
|
ShadowAlertDialog shadowDialog = shadowOf(dialog);
|
||||||
|
|
||||||
|
assertThat(shadowDialog.getMessage()).isEqualTo(
|
||||||
|
mContext.getString(R.string.dialog_location_message,
|
||||||
|
mWakeLockAnomaly.displayName));
|
||||||
|
assertThat(shadowDialog.getTitle()).isEqualTo(
|
||||||
|
mContext.getString(R.string.dialog_location_title));
|
||||||
|
assertThat(dialog.getButton(DialogInterface.BUTTON_POSITIVE).getText()).isEqualTo(
|
||||||
|
mContext.getString(R.string.dialog_location_ok));
|
||||||
|
assertThat(dialog.getButton(DialogInterface.BUTTON_NEGATIVE).getText()).isEqualTo(
|
||||||
|
mContext.getString(R.string.dlg_cancel));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -18,13 +18,8 @@ package com.android.settings.fuelgauge.anomaly;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.mockito.Mockito.verify;
|
|
||||||
|
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.util.Pair;
|
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.fuelgauge.anomaly.action.StopAndBackgroundCheckAction;
|
import com.android.settings.fuelgauge.anomaly.action.StopAndBackgroundCheckAction;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
@@ -36,42 +31,18 @@ import com.android.settings.fuelgauge.anomaly.checker.WakeupAlarmAnomalyDetector
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Mock;
|
|
||||||
import org.mockito.MockitoAnnotations;
|
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, shadows = {
|
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, shadows = {
|
||||||
ShadowKeyValueListParserWrapperImpl.class})
|
ShadowKeyValueListParserWrapperImpl.class})
|
||||||
public class AnomalyUtilsTest {
|
public class AnomalyUtilsTest {
|
||||||
private static final String PACKAGE_NAME_WAKEUP = "com.android.app1";
|
|
||||||
private static final String PACKAGE_NAME_WAKELOCK = "com.android.app2";
|
|
||||||
private static final int CONTEXT_ID = 55;
|
|
||||||
|
|
||||||
@Mock
|
|
||||||
private MetricsFeatureProvider mMetricsFeatureProvider;
|
|
||||||
private AnomalyUtils mAnomalyUtils;
|
private AnomalyUtils mAnomalyUtils;
|
||||||
private Anomaly mWakeupAnomaly;
|
|
||||||
private Anomaly mWakeLockAnomaly;
|
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
|
||||||
|
|
||||||
mAnomalyUtils = new AnomalyUtils(RuntimeEnvironment.application);
|
mAnomalyUtils = new AnomalyUtils(RuntimeEnvironment.application);
|
||||||
|
|
||||||
mWakeLockAnomaly = new Anomaly.Builder()
|
|
||||||
.setType(Anomaly.AnomalyType.WAKE_LOCK)
|
|
||||||
.setPackageName(PACKAGE_NAME_WAKELOCK)
|
|
||||||
.build();
|
|
||||||
mWakeupAnomaly = new Anomaly.Builder()
|
|
||||||
.setType(Anomaly.AnomalyType.WAKEUP_ALARM)
|
|
||||||
.setPackageName(PACKAGE_NAME_WAKEUP)
|
|
||||||
.build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -126,47 +97,4 @@ public class AnomalyUtilsTest {
|
|||||||
assertThat(mAnomalyUtils.getAnomalyDetector(Anomaly.AnomalyType.WAKEUP_ALARM)).isInstanceOf(
|
assertThat(mAnomalyUtils.getAnomalyDetector(Anomaly.AnomalyType.WAKEUP_ALARM)).isInstanceOf(
|
||||||
WakeupAlarmAnomalyDetector.class);
|
WakeupAlarmAnomalyDetector.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testLogAnomaly() {
|
|
||||||
mAnomalyUtils.logAnomaly(mMetricsFeatureProvider, mWakeLockAnomaly, CONTEXT_ID);
|
|
||||||
|
|
||||||
verify(mMetricsFeatureProvider).action(RuntimeEnvironment.application,
|
|
||||||
MetricsProto.MetricsEvent.ANOMALY_TYPE_WAKELOCK,
|
|
||||||
PACKAGE_NAME_WAKELOCK,
|
|
||||||
Pair.create(
|
|
||||||
MetricsProto.MetricsEvent.FIELD_CONTEXT,
|
|
||||||
CONTEXT_ID),
|
|
||||||
Pair.create(
|
|
||||||
MetricsProto.MetricsEvent.FIELD_ANOMALY_ACTION_TYPE,
|
|
||||||
Anomaly.AnomalyActionType.FORCE_STOP));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testLogAnomalies() {
|
|
||||||
final List<Anomaly> anomalies = new ArrayList<>();
|
|
||||||
anomalies.add(mWakeLockAnomaly);
|
|
||||||
anomalies.add(mWakeupAnomaly);
|
|
||||||
|
|
||||||
mAnomalyUtils.logAnomalies(mMetricsFeatureProvider, anomalies, CONTEXT_ID);
|
|
||||||
|
|
||||||
verify(mMetricsFeatureProvider).action(RuntimeEnvironment.application,
|
|
||||||
MetricsProto.MetricsEvent.ANOMALY_TYPE_WAKELOCK,
|
|
||||||
PACKAGE_NAME_WAKELOCK,
|
|
||||||
Pair.create(
|
|
||||||
MetricsProto.MetricsEvent.FIELD_CONTEXT,
|
|
||||||
CONTEXT_ID),
|
|
||||||
Pair.create(
|
|
||||||
MetricsProto.MetricsEvent.FIELD_ANOMALY_ACTION_TYPE,
|
|
||||||
Anomaly.AnomalyActionType.FORCE_STOP));
|
|
||||||
verify(mMetricsFeatureProvider).action(RuntimeEnvironment.application,
|
|
||||||
MetricsProto.MetricsEvent.ANOMALY_TYPE_WAKEUP_ALARM,
|
|
||||||
PACKAGE_NAME_WAKEUP,
|
|
||||||
Pair.create(
|
|
||||||
MetricsProto.MetricsEvent.FIELD_CONTEXT,
|
|
||||||
CONTEXT_ID),
|
|
||||||
Pair.create(
|
|
||||||
MetricsProto.MetricsEvent.FIELD_ANOMALY_ACTION_TYPE,
|
|
||||||
Anomaly.AnomalyActionType.STOP_AND_BACKGROUND_CHECK));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user