Merge "Unregister Touch Sensors for DOZE_AOD_DOCKED" into rvc-qpr-dev
This commit is contained in:
@@ -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());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user