Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 03ea4110 authored by Lei Yu's avatar Lei Yu Committed by android-build-merger
Browse files

Merge "Hook up bt related knobs to AnomalyDetectionPolicy" into oc-dr1-dev

am: 43ea43a6

Change-Id: Ie2e58d02d9fe1a68a8583ad31158df68384cfa91
parents ba612485 43ea43a6
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -37,9 +37,13 @@ public class AnomalyDetectionPolicy {
    @VisibleForTesting
    static final String KEY_WAKEUP_ALARM_DETECTION_ENABLED = "wakeup_alarm_enabled";
    @VisibleForTesting
    static final String KEY_BLUETOOTH_SCAN_DETECTION_ENABLED = "bluetooth_scan_enabled";
    @VisibleForTesting
    static final String KEY_WAKELOCK_THRESHOLD = "wakelock_threshold";
    @VisibleForTesting
    static final String KEY_WAKEUP_ALARM_THRESHOLD = "wakeup_alarm_threshold";
    @VisibleForTesting
    static final String KEY_BLUETOOTH_SCAN_THRESHOLD = "bluetooth_scan_threshold";

    /**
     * {@code true} if general anomaly detection is enabled
@@ -65,6 +69,14 @@ public class AnomalyDetectionPolicy {
     */
    public final boolean wakeupAlarmDetectionEnabled;

    /**
     * {@code true} if bluetooth scanning detection is enabled
     *
     * @see Settings.Global#ANOMALY_DETECTION_CONSTANTS
     * @see #KEY_BLUETOOTH_SCAN_THRESHOLD
     */
    public final boolean bluetoothScanDetectionEnabled;

    /**
     * Threshold for wakelock time in milli seconds
     *
@@ -81,6 +93,14 @@ public class AnomalyDetectionPolicy {
     */
    public final long wakeupAlarmThreshold;

    /**
     * Threshold for bluetooth unoptimized scanning time in milli seconds
     *
     * @see Settings.Global#ANOMALY_DETECTION_CONSTANTS
     * @see #KEY_BLUETOOTH_SCAN_THRESHOLD
     */
    public final long bluetoothScanThreshold;

    private final KeyValueListParserWrapper mParserWrapper;

    public AnomalyDetectionPolicy(Context context) {
@@ -103,9 +123,13 @@ public class AnomalyDetectionPolicy {
        wakeLockDetectionEnabled = mParserWrapper.getBoolean(KEY_WAKELOCK_DETECTION_ENABLED, true);
        wakeupAlarmDetectionEnabled = mParserWrapper.getBoolean(KEY_WAKEUP_ALARM_DETECTION_ENABLED,
                true);
        bluetoothScanDetectionEnabled = mParserWrapper.getBoolean(
                KEY_BLUETOOTH_SCAN_DETECTION_ENABLED, true);
        wakeLockThreshold = mParserWrapper.getLong(KEY_WAKELOCK_THRESHOLD,
                DateUtils.HOUR_IN_MILLIS);
        wakeupAlarmThreshold = mParserWrapper.getLong(KEY_WAKEUP_ALARM_THRESHOLD, 60);
        bluetoothScanThreshold = mParserWrapper.getLong(KEY_BLUETOOTH_SCAN_THRESHOLD,
                30 * DateUtils.MINUTE_IN_MILLIS);
    }

    public boolean isAnomalyDetectorEnabled(@Anomaly.AnomalyType int type) {
@@ -114,6 +138,8 @@ public class AnomalyDetectionPolicy {
                return wakeLockDetectionEnabled;
            case Anomaly.AnomalyType.WAKEUP_ALARM:
                return wakeupAlarmDetectionEnabled;
            case Anomaly.AnomalyType.BLUETOOTH_SCAN:
                return bluetoothScanDetectionEnabled;
            default:
                return false; // Disabled when no this type
        }
+1 −2
Original line number Diff line number Diff line
@@ -57,8 +57,7 @@ public class BluetoothScanAnomalyDetector implements AnomalyDetector {
        mBatteryUtils = BatteryUtils.getInstance(context);
        mAnomalyAction = AnomalyUtils.getInstance(context).getAnomalyAction(
                Anomaly.AnomalyType.BLUETOOTH_SCAN);
        //TODO(b/36921532): hook up it to AnomalyDectionPolicy
        mBluetoothScanningThreshold = 30 * DateUtils.MINUTE_IN_MILLIS;
        mBluetoothScanningThreshold = policy.bluetoothScanThreshold;
    }

    @Override
+12 −1
Original line number Diff line number Diff line
@@ -44,7 +44,9 @@ public class AnomalyDetectionPolicyTest {
            + ",wakelock_enabled=false"
            + ",wakelock_threshold=3000"
            + ",wakeup_alarm_enabled=true"
            + ",wakeup_alarm_threshold=100";
            + ",wakeup_alarm_threshold=100"
            + ",bluetooth_scan_enabled=true"
            + ",bluetooth_scan_threshold=2000";
    private Context mContext;
    private KeyValueListParserWrapper mKeyValueListParserWrapper;

@@ -64,6 +66,8 @@ public class AnomalyDetectionPolicyTest {
        assertThat(anomalyDetectionPolicy.wakeLockThreshold).isEqualTo(3000);
        assertThat(anomalyDetectionPolicy.wakeupAlarmDetectionEnabled).isTrue();
        assertThat(anomalyDetectionPolicy.wakeupAlarmThreshold).isEqualTo(100);
        assertThat(anomalyDetectionPolicy.bluetoothScanDetectionEnabled).isTrue();
        assertThat(anomalyDetectionPolicy.bluetoothScanThreshold).isEqualTo(2000);
    }

    @Test
@@ -82,6 +86,9 @@ public class AnomalyDetectionPolicyTest {
        assertThat(anomalyDetectionPolicy.wakeLockThreshold).isEqualTo(DateUtils.HOUR_IN_MILLIS);
        assertThat(anomalyDetectionPolicy.wakeupAlarmDetectionEnabled).isTrue();
        assertThat(anomalyDetectionPolicy.wakeupAlarmThreshold).isEqualTo(60);
        assertThat(anomalyDetectionPolicy.bluetoothScanDetectionEnabled).isTrue();
        assertThat(anomalyDetectionPolicy.bluetoothScanThreshold).isEqualTo(
                30 * DateUtils.MINUTE_IN_MILLIS);
    }

    @Test
@@ -92,6 +99,8 @@ public class AnomalyDetectionPolicyTest {
                Anomaly.AnomalyType.WAKE_LOCK)).isFalse();
        assertThat(anomalyDetectionPolicy.isAnomalyDetectorEnabled(
                Anomaly.AnomalyType.WAKEUP_ALARM)).isTrue();
        assertThat(anomalyDetectionPolicy.isAnomalyDetectorEnabled(
                Anomaly.AnomalyType.BLUETOOTH_SCAN)).isTrue();
    }

    private AnomalyDetectionPolicy createAnomalyPolicyWithConfig() {
@@ -104,6 +113,8 @@ public class AnomalyDetectionPolicyTest {
                AnomalyDetectionPolicy.KEY_WAKELOCK_DETECTION_ENABLED, true);
        doReturn(true).when(mKeyValueListParserWrapper).getBoolean(
                AnomalyDetectionPolicy.KEY_WAKEUP_ALARM_DETECTION_ENABLED, true);
        doReturn(true).when(mKeyValueListParserWrapper).getBoolean(
                AnomalyDetectionPolicy.KEY_BLUETOOTH_SCAN_DETECTION_ENABLED, true);

        return new AnomalyDetectionPolicy(mContext, mKeyValueListParserWrapper);
    }
+3 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers;

import java.util.ArrayList;
import java.util.List;
@@ -89,6 +90,8 @@ public class BluetoothScanAnomalyDetectorTest {
        MockitoAnnotations.initMocks(this);

        mContext = spy(RuntimeEnvironment.application);
        ReflectionHelpers.setField(mPolicy, "bluetoothScanThreshold",
                30 * DateUtils.MINUTE_IN_MILLIS);

        mAnomalySipper.uidObj = mAnomalyUid;
        doReturn(ANOMALY_UID).when(mAnomalyUid).getUid();