summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Dave Mankoff <mankoff@google.com> 2021-01-11 19:07:36 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-01-11 19:07:36 +0000
commit263c0d5d5e792cf1ae776c1737265192ec08ebcc (patch)
treea0c3bbeba9475354f590515073f30291e7a9a736
parentc188fc2ed917a425a8946d0265ed2094f6ea12af (diff)
parent3995f0db93b6b5015fbdb6d89eefcc1952999b57 (diff)
Merge "Unregister Touch Sensors for DOZE_AOD_DOCKED" into rvc-qpr-dev
-rw-r--r--packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java23
-rw-r--r--packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java24
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java10
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java1
4 files changed, 31 insertions, 27 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
index aebf41b884c4..2eadbd0365e4 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
@@ -46,6 +46,7 @@ import com.android.internal.logging.UiEvent;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.logging.UiEventLoggerImpl;
import com.android.internal.logging.nano.MetricsProto;
+import com.android.internal.util.IndentingPrintWriter;
import com.android.systemui.plugins.SensorManagerPlugin;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.util.sensors.AsyncSensorManager;
@@ -80,6 +81,7 @@ public class DozeSensors {
private long mDebounceFrom;
private boolean mSettingRegistered;
private boolean mListening;
+ private boolean mListeningTouchScreenSensors;
@VisibleForTesting
public enum DozeSensorsUiEvent implements UiEventLogger.UiEventEnum {
@@ -222,22 +224,25 @@ public class DozeSensors {
/**
* If sensors should be registered and sending signals.
*/
- public void setListening(boolean listen) {
- if (mListening == listen) {
+ public void setListening(boolean listen, boolean includeTouchScreenSensors) {
+ if (mListening == listen && mListeningTouchScreenSensors == includeTouchScreenSensors) {
return;
}
mListening = listen;
+ mListeningTouchScreenSensors = includeTouchScreenSensors;
updateListening();
}
/**
* Registers/unregisters sensors based on internal state.
*/
- public void updateListening() {
+ private void updateListening() {
boolean anyListening = false;
for (TriggerSensor s : mSensors) {
- s.setListening(mListening);
- if (mListening) {
+ boolean listen = mListening
+ && (!s.mRequiresTouchscreen || mListeningTouchScreenSensors);
+ s.setListening(listen);
+ if (listen) {
anyListening = true;
}
}
@@ -309,10 +314,14 @@ public class DozeSensors {
/** Dump current state */
public void dump(PrintWriter pw) {
+ pw.println("mListening=" + mListening);
+ pw.println("mListeningTouchScreenSensors=" + mListeningTouchScreenSensors);
+ IndentingPrintWriter idpw = new IndentingPrintWriter(pw, " ");
+ idpw.increaseIndent();
for (TriggerSensor s : mSensors) {
- pw.println(" Sensor: " + s.toString());
+ idpw.println("Sensor: " + s.toString());
}
- pw.println(" ProxSensor: " + mProximitySensor.toString());
+ idpw.println("ProxSensor: " + mProximitySensor.toString());
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
index cbf8f578744c..043edee44492 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
@@ -38,6 +38,7 @@ import com.android.internal.logging.UiEvent;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.logging.UiEventLoggerImpl;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.internal.util.IndentingPrintWriter;
import com.android.systemui.Dependency;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dock.DockManager;
@@ -408,15 +409,12 @@ public class DozeTriggers implements DozeMachine.Part {
break;
case DOZE_PULSE_DONE:
mDozeSensors.requestTemporaryDisable();
- // A pulse will temporarily disable sensors that require a touch screen.
- // Let's make sure that they are re-enabled when the pulse is over.
- mDozeSensors.updateListening();
break;
case FINISH:
mBroadcastReceiver.unregister(mBroadcastDispatcher);
mDozeHost.removeCallback(mHostCallback);
mDockManager.removeListener(mDockEventListener);
- mDozeSensors.setListening(false);
+ mDozeSensors.setListening(false, false);
mDozeSensors.setProxListening(false);
mWantSensors = false;
mWantProx = false;
@@ -424,20 +422,16 @@ public class DozeTriggers implements DozeMachine.Part {
break;
default:
}
+ mDozeSensors.setListening(mWantSensors, mWantTouchScreenSensors);
}
@Override
public void onScreenState(int state) {
mDozeSensors.onScreenState(state);
- if (state == Display.STATE_DOZE || state == Display.STATE_DOZE_SUSPEND
- || state == Display.STATE_OFF) {
- mDozeSensors.setProxListening(mWantProx);
- mDozeSensors.setListening(mWantSensors);
- mDozeSensors.setTouchscreenSensorsListening(mWantTouchScreenSensors);
- } else {
- mDozeSensors.setProxListening(false);
- mDozeSensors.setListening(mWantSensors);
- }
+ mDozeSensors.setProxListening(mWantProx && (state == Display.STATE_DOZE
+ || state == Display.STATE_DOZE_SUSPEND
+ || state == Display.STATE_OFF));
+ mDozeSensors.setListening(mWantSensors, mWantTouchScreenSensors);
}
private void checkTriggersAtInit() {
@@ -513,7 +507,9 @@ public class DozeTriggers implements DozeMachine.Part {
pw.println(" pulsePending=" + mPulsePending);
pw.println("DozeSensors:");
- mDozeSensors.dump(pw);
+ IndentingPrintWriter idpw = new IndentingPrintWriter(pw, " ");
+ idpw.increaseIndent();
+ mDozeSensors.dump(idpw);
}
private class TriggerReceiver extends BroadcastReceiver {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java
index ebd2c3afe646..35e3bb392f7c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java
@@ -77,8 +77,6 @@ public class DozeSensorsTest extends SysuiTestCase {
@Mock
private Consumer<Boolean> mProxCallback;
@Mock
- private AlwaysOnDisplayPolicy mAlwaysOnDisplayPolicy;
- @Mock
private TriggerSensor mTriggerSensor;
@Mock
private DozeLog mDozeLog;
@@ -110,7 +108,7 @@ public class DozeSensorsTest extends SysuiTestCase {
@Test
public void testSensorDebounce() {
- mDozeSensors.setListening(true);
+ mDozeSensors.setListening(true, true);
mWakeLockScreenListener.onSensorChanged(mock(SensorManagerPlugin.SensorEvent.class));
mTestableLooper.processAllMessages();
@@ -128,7 +126,7 @@ public class DozeSensorsTest extends SysuiTestCase {
@Test
public void testSetListening_firstTrue_registerSettingsObserver() {
verify(mSensorManager, never()).registerListener(any(), any(Sensor.class), anyInt());
- mDozeSensors.setListening(true);
+ mDozeSensors.setListening(true, true);
verify(mTriggerSensor).registerSettingsObserver(any(ContentObserver.class));
}
@@ -136,8 +134,8 @@ public class DozeSensorsTest extends SysuiTestCase {
@Test
public void testSetListening_twiceTrue_onlyRegisterSettingsObserverOnce() {
verify(mSensorManager, never()).registerListener(any(), any(Sensor.class), anyInt());
- mDozeSensors.setListening(true);
- mDozeSensors.setListening(true);
+ mDozeSensors.setListening(true, true);
+ mDozeSensors.setListening(true, true);
verify(mTriggerSensor, times(1)).registerSettingsObserver(any(ContentObserver.class));
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java
index 655f933d28fe..be4fdb0babc6 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java
@@ -149,6 +149,7 @@ public class DozeTriggersTest extends SysuiTestCase {
clearInvocations(mSensors);
mTriggers.transitionTo(DozeMachine.State.DOZE_PULSING, DozeMachine.State.DOZE_PULSE_DONE);
+ mTriggers.transitionTo(DozeMachine.State.DOZE_PULSE_DONE, DozeMachine.State.DOZE_AOD);
waitForSensorManager();
verify(mSensors).requestTriggerSensor(any(), eq(mTapSensor));
}