summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Dave Mankoff <mankoff@google.com> 2019-09-18 11:44:29 -0400
committer Dave Mankoff <mankoff@google.com> 2019-09-18 11:44:29 -0400
commitbc3091c027ec37a4863a34c7eba46cbd1fd4a57c (patch)
tree3f858fe60ae75a13fbfc975c42c982d3ee4cbd75
parent63a1282b037d1df9ac85c92107f44baaaff7b2ca (diff)
Remove SensorRateLimiter, as it should be unnecessary.
Bug: 141122220 Test: atest SystemUITests Change-Id: I52f9293fc190b58e720a87e3ef0ab2a234b62df1
-rw-r--r--packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/util/sensors/LimitableSensor.java32
-rw-r--r--packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java34
-rw-r--r--packages/SystemUI/src/com/android/systemui/util/sensors/SensorRateLimiter.java77
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorTest.java43
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/util/sensors/RateLimiterTest.java119
6 files changed, 4 insertions, 304 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
index 7c1c04048c21..67eefc5588e3 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
@@ -48,7 +48,6 @@ import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.util.sensors.AsyncSensorManager;
import com.android.systemui.util.sensors.ProximitySensor;
-import com.android.systemui.util.sensors.SensorRateLimiter;
import com.android.systemui.util.wakelock.WakeLock;
import java.io.PrintWriter;
@@ -150,8 +149,6 @@ public class DozeSensors {
mProximitySensor = new ProximitySensor(
context, sensorManager, Dependency.get(PluginManager.class));
- new SensorRateLimiter(mProximitySensor, mAlarmManager, policy.proxCooldownTriggerMs,
- policy.proxCooldownPeriodMs, "prox_sensor");
mProximitySensor.register(
proximityEvent -> mProxCallback.accept(!proximityEvent.getNear()));
diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/LimitableSensor.java b/packages/SystemUI/src/com/android/systemui/util/sensors/LimitableSensor.java
deleted file mode 100644
index 2dfd187e1c1b..000000000000
--- a/packages/SystemUI/src/com/android/systemui/util/sensors/LimitableSensor.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.util.sensors;
-
-/**
- * Represents a sensor that can be throttled by a {@link SensorRateLimiter}.
- */
-public interface LimitableSensor {
- /**
- * Allows a sensor to be temporarily throttled or disabled.
- */
- void setRateLimited(boolean limited);
-
- /**
- * Registers a {@link SensorRateLimiter} with the sensor.
- */
- void setRateLimiter(SensorRateLimiter rateLimiter);
-}
diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java b/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java
index 1eed56650073..c48bdde6adef 100644
--- a/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java
+++ b/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java
@@ -37,7 +37,7 @@ import javax.inject.Inject;
/**
* Simple wrapper around SensorManager customized for the Proximity sensor.
*/
-public class ProximitySensor implements LimitableSensor {
+public class ProximitySensor {
private static final String TAG = "ProxSensor";
private static final boolean DEBUG = false;
@@ -51,8 +51,6 @@ public class ProximitySensor implements LimitableSensor {
private int mSensorDelay = SensorManager.SENSOR_DELAY_NORMAL;
private boolean mPaused;
private boolean mRegistered;
- private SensorRateLimiter mRateLimiter;
- private boolean mRateLimited = false;
private SensorEventListener mSensorEventListener = new SensorEventListener() {
@Override
@@ -109,14 +107,6 @@ public class ProximitySensor implements LimitableSensor {
registerInternal();
}
- /**
- * Supply a {@link SensorRateLimiter} to help limit power usage.
- */
- @Override
- public void setRateLimiter(SensorRateLimiter rateLimiter) {
- mRateLimiter = rateLimiter;
- }
-
private Sensor findBrightnessSensor(Context context) {
String sensorType = context.getString(R.string.doze_brightness_sensor_type);
List<Sensor> sensorList = mSensorManager.getSensorList(Sensor.TYPE_ALL);
@@ -132,19 +122,6 @@ public class ProximitySensor implements LimitableSensor {
}
/**
- * Registers/unregisters the proximity sensor with the SensorManager.
- */
- @Override
- public void setRateLimited(boolean limited) {
- mRateLimited = limited;
- if (mRateLimited) {
- unregisterInternal();
- } else {
- registerInternal();
- }
- }
-
- /**
* Returns true if we are registered with the SensorManager.
*/
public boolean isRegistered() {
@@ -177,7 +154,7 @@ public class ProximitySensor implements LimitableSensor {
}
private void registerInternal() {
- if (mRegistered || mRateLimited || mPaused || mListeners.isEmpty()) {
+ if (mRegistered || mPaused || mListeners.isEmpty()) {
return;
}
logDebug("Registering sensor listener");
@@ -224,15 +201,12 @@ public class ProximitySensor implements LimitableSensor {
}
mLastEvent = new ProximityEvent(near, event.timestamp);
alertListeners();
- if (mRateLimiter != null) {
- mRateLimiter.onSensorEvent(mLastEvent.getTimestampMs());
- }
}
@Override
public String toString() {
- return String.format("{registered=%s, paused=%s, near=%s, rateLimiter=%s, sensor=%s}",
- isRegistered(), mPaused, isNear(), mRateLimiter, mSensor);
+ return String.format("{registered=%s, paused=%s, near=%s, sensor=%s}",
+ isRegistered(), mPaused, isNear(), mSensor);
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/SensorRateLimiter.java b/packages/SystemUI/src/com/android/systemui/util/sensors/SensorRateLimiter.java
deleted file mode 100644
index 00f5bb04465b..000000000000
--- a/packages/SystemUI/src/com/android/systemui/util/sensors/SensorRateLimiter.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.util.sensors;
-
-import android.app.AlarmManager;
-import android.os.Handler;
-
-import com.android.systemui.util.AlarmTimeout;
-
-/**
- * Monitors a sensor for over-activity and can throttle it down as needed.
- *
- * Currently, this class is designed with the {@link ProximitySensor} in mind.
- */
-public class SensorRateLimiter {
- private final LimitableSensor mSensor;
- private final AlarmTimeout mCooldownTimer;
- private final long mCoolDownTriggerMs;
- private final long mCoolDownPeriodMs;
- private long mLastTimestampMs;
-
- public SensorRateLimiter(
- LimitableSensor sensor,
- AlarmManager alarmManager,
- long coolDownTriggerMs,
- long coolDownPeriodMs,
- String alarmTag) {
-
- mSensor = sensor;
- mCoolDownTriggerMs = coolDownTriggerMs;
- mCoolDownPeriodMs = coolDownPeriodMs;
- mLastTimestampMs = -1;
-
- Handler handler = new Handler();
- mCooldownTimer = new AlarmTimeout(alarmManager, this::coolDownComplete, alarmTag, handler);
-
- mSensor.setRateLimiter(this);
- }
-
-
- void onSensorEvent(long timestampMs) {
- if (mLastTimestampMs >= 0 && mCoolDownTriggerMs > 0 && mCoolDownPeriodMs > 0
- && timestampMs - mLastTimestampMs < mCoolDownTriggerMs) {
- scheduleCoolDown();
- }
-
- mLastTimestampMs = timestampMs;
- }
-
- private void scheduleCoolDown() {
- mSensor.setRateLimited(true);
- mCooldownTimer.schedule(mCoolDownPeriodMs, AlarmTimeout.MODE_IGNORE_IF_SCHEDULED);
- }
-
- private void coolDownComplete() {
- mSensor.setRateLimited(false);
- }
-
- @Override
- public String toString() {
- return String.format("{coolingDown=%s}", mCooldownTimer.isScheduled());
- }
-}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorTest.java
index 9c316c54d2f3..6d13408058cc 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorTest.java
@@ -164,49 +164,6 @@ public class ProximitySensorTest extends SysuiTestCase {
assertFalse(mProximitySensor.isRegistered());
}
-
- @Test
- public void testRateLimit() {
- TestableListener listener = new TestableListener();
-
- assertFalse(mProximitySensor.isRegistered());
- mProximitySensor.register(listener);
- waitForSensorManager();
- assertTrue(mProximitySensor.isRegistered());
- assertNull(listener.mLastEvent);
-
- mFakeProximitySensor.sendProximityResult(true);
- assertFalse(listener.mLastEvent.getNear());
- assertEquals(listener.mCallCount, 1);
-
- mProximitySensor.setRateLimited(true);
- waitForSensorManager();
- assertFalse(mProximitySensor.isRegistered());
-
- // More events do nothing when rate limited.
- mFakeProximitySensor.sendProximityResult(true);
- assertFalse(listener.mLastEvent.getNear());
- assertEquals(listener.mCallCount, 1);
- mFakeProximitySensor.sendProximityResult(false);
- assertFalse(listener.mLastEvent.getNear());
- assertEquals(listener.mCallCount, 1);
-
- mProximitySensor.setRateLimited(false);
- waitForSensorManager();
- assertTrue(mProximitySensor.isRegistered());
- // Still matches our previous call
- assertFalse(listener.mLastEvent.getNear());
- assertEquals(listener.mCallCount, 1);
-
- mFakeProximitySensor.sendProximityResult(true);
- assertFalse(listener.mLastEvent.getNear());
- assertEquals(listener.mCallCount, 2);
-
- mProximitySensor.unregister(listener);
- waitForSensorManager();
- assertFalse(mProximitySensor.isRegistered());
- }
-
@Test
public void testAlertListeners() {
TestableListener listenerA = new TestableListener();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/RateLimiterTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/RateLimiterTest.java
deleted file mode 100644
index cd43cf7ee78a..000000000000
--- a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/RateLimiterTest.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.util.sensors;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.anyLong;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-
-import android.app.AlarmManager;
-import android.os.Handler;
-import android.testing.AndroidTestingRunner;
-import android.testing.TestableLooper;
-
-import androidx.test.filters.SmallTest;
-
-import com.android.systemui.SysuiTestCase;
-import com.android.systemui.util.AlarmTimeout;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-@SmallTest
-@RunWith(AndroidTestingRunner.class)
-@TestableLooper.RunWithLooper
-public class RateLimiterTest extends SysuiTestCase {
-
- private static final long COOL_DOWN_TRIGGER_MS = 100;
- private static final long COOL_DOWN_PERIOD_MS = 200;
- private static final String ALARM_TAG = "rate_limiter_test";
-
- @Mock
- LimitableSensor mSensor;
- @Mock
- private AlarmManager mAlarmManager;
-
- private SensorRateLimiter mSensorRateLimiter;
-
- @Before
- public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
- mSensorRateLimiter = new SensorRateLimiter(mSensor, mAlarmManager, COOL_DOWN_TRIGGER_MS,
- COOL_DOWN_PERIOD_MS, ALARM_TAG);
- }
-
- @Test
- public void testInfrequentEvents() {
- mSensorRateLimiter.onSensorEvent(0);
- mSensorRateLimiter.onSensorEvent(COOL_DOWN_TRIGGER_MS);
- mSensorRateLimiter.onSensorEvent(COOL_DOWN_TRIGGER_MS * 2);
- mSensorRateLimiter.onSensorEvent(COOL_DOWN_TRIGGER_MS * 4);
- mSensorRateLimiter.onSensorEvent(COOL_DOWN_TRIGGER_MS * 8);
-
- verify(mSensor, never()).setRateLimited(true);
- }
-
- @Test
- public void testRateLimit() {
- mSensorRateLimiter.onSensorEvent(0);
- mSensorRateLimiter.onSensorEvent(COOL_DOWN_TRIGGER_MS - 1);
-
- verify(mSensor).setRateLimited(true);
- verify(mAlarmManager).setExact(
- anyInt(), anyLong(), eq(ALARM_TAG), any(AlarmTimeout.class), any(Handler.class));
- }
-
- @Test
- public void testSlowToOverTrigger() {
- mSensorRateLimiter.onSensorEvent(0);
- mSensorRateLimiter.onSensorEvent(COOL_DOWN_TRIGGER_MS);
- mSensorRateLimiter.onSensorEvent(COOL_DOWN_TRIGGER_MS * 2);
- mSensorRateLimiter.onSensorEvent(COOL_DOWN_TRIGGER_MS * 4);
-
- verify(mSensor, never()).setRateLimited(true);
-
- mSensorRateLimiter.onSensorEvent(COOL_DOWN_TRIGGER_MS * 5 - 1);
-
- verify(mSensor).setRateLimited(true);
- verify(mAlarmManager).setExact(
- anyInt(), anyLong(), eq(ALARM_TAG), any(AlarmTimeout.class), any(Handler.class));
- }
-
- @Test
- public void testCoolDownComplete() {
- mSensorRateLimiter.onSensorEvent(0);
- mSensorRateLimiter.onSensorEvent(COOL_DOWN_TRIGGER_MS - 1);
-
- ArgumentCaptor<AlarmManager.OnAlarmListener> listenerArgumentCaptor =
- ArgumentCaptor.forClass(AlarmManager.OnAlarmListener.class);
-
- verify(mSensor).setRateLimited(true);
- verify(mAlarmManager).setExact(
- anyInt(), anyLong(), eq(ALARM_TAG), listenerArgumentCaptor.capture(),
- any(Handler.class));
-
- listenerArgumentCaptor.getValue().onAlarm();
- verify(mSensor).setRateLimited(false);
- }
-}