Turn on bluetooth anomaly detector

Since the related bug in battery stats is fixed, it is safe to
turn it on.

Also fix a bug in LocationCheckAction. In PermissionChecker we should
use permission name to check, not permission group name.

Bug: 64255601
Test: RunSettingsRoboTests
Change-Id: Ief8b5dc98f8a7ae462eb84936f6f61d626d7cddd
This commit is contained in:
jackqdyulei
2017-08-01 10:45:41 -07:00
parent 0782535daf
commit dff144ad62
5 changed files with 194 additions and 8 deletions

View File

@@ -124,7 +124,7 @@ public class AnomalyDetectionPolicy {
wakeupAlarmDetectionEnabled = mParserWrapper.getBoolean(KEY_WAKEUP_ALARM_DETECTION_ENABLED,
false);
bluetoothScanDetectionEnabled = mParserWrapper.getBoolean(
KEY_BLUETOOTH_SCAN_DETECTION_ENABLED, false);
KEY_BLUETOOTH_SCAN_DETECTION_ENABLED, true);
wakeLockThreshold = mParserWrapper.getLong(KEY_WAKELOCK_THRESHOLD,
DateUtils.HOUR_IN_MILLIS);
wakeupAlarmThreshold = mParserWrapper.getLong(KEY_WAKEUP_ALARM_THRESHOLD, 60);

View File

@@ -16,8 +16,10 @@
package com.android.settings.fuelgauge.anomaly.action;
import android.Manifest;
import android.content.Context;
import android.content.pm.permission.RuntimePermissionPresenter;
import android.support.annotation.VisibleForTesting;
import android.support.v4.content.PermissionChecker;
import com.android.internal.logging.nano.MetricsProto;
@@ -29,13 +31,17 @@ import com.android.settings.fuelgauge.anomaly.Anomaly;
public class LocationCheckAction extends AnomalyAction {
private static final String TAG = "LocationCheckAction";
private static final String LOCATION_PERMISSION = "android.permission-group.LOCATION";
private final RuntimePermissionPresenter mRuntimePermissionPresenter;
public LocationCheckAction(Context context) {
this(context, RuntimePermissionPresenter.getInstance(context));
}
@VisibleForTesting
LocationCheckAction(Context context, RuntimePermissionPresenter runtimePermissionPresenter) {
super(context);
mRuntimePermissionPresenter = RuntimePermissionPresenter.getInstance(context);
mRuntimePermissionPresenter = runtimePermissionPresenter;
mActionMetricKey = MetricsProto.MetricsEvent.ACTION_APP_LOCATION_CHECK;
}
@@ -43,17 +49,22 @@ public class LocationCheckAction extends AnomalyAction {
public void handlePositiveAction(Anomaly anomaly, int contextMetricsKey) {
super.handlePositiveAction(anomaly, contextMetricsKey);
mRuntimePermissionPresenter.revokeRuntimePermission(anomaly.packageName,
LOCATION_PERMISSION);
Manifest.permission_group.LOCATION);
}
@Override
public boolean isActionActive(Anomaly anomaly) {
return PermissionChecker.checkPermission(mContext, LOCATION_PERMISSION, -1, anomaly.uid,
anomaly.packageName) == PermissionChecker.PERMISSION_GRANTED;
return isPermissionGranted(anomaly, Manifest.permission.ACCESS_COARSE_LOCATION)
|| isPermissionGranted(anomaly, Manifest.permission.ACCESS_FINE_LOCATION);
}
@Override
public int getActionType() {
return Anomaly.AnomalyActionType.LOCATION_CHECK;
}
private boolean isPermissionGranted(Anomaly anomaly, String permission) {
return PermissionChecker.checkPermission(mContext, permission, -1, anomaly.uid,
anomaly.packageName) == PermissionChecker.PERMISSION_GRANTED;
}
}