diff options
8 files changed, 54 insertions, 43 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java b/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java index 32bc9de40f5b..ae412152b10e 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java @@ -269,9 +269,10 @@ public class DozeMachine { return mPulseReason; } - /** Requests the PowerManager to wake up now. */ - public void wakeUp() { - mDozeService.requestWakeUp(); + /** Requests the PowerManager to wake up now. + * @param reason {@link DozeLog.Reason} that woke up the device.*/ + public void wakeUp(@DozeLog.Reason int reason) { + mDozeService.requestWakeUp(reason); } public boolean isExecutingTransition() { @@ -469,7 +470,7 @@ public class DozeMachine { void setDozeScreenState(int state); /** Request waking up. */ - void requestWakeUp(); + void requestWakeUp(@DozeLog.Reason int reason); /** Set screen brightness */ void setDozeScreenBrightness(int brightness); @@ -492,8 +493,8 @@ public class DozeMachine { } @Override - public void requestWakeUp() { - mDelegate.requestWakeUp(); + public void requestWakeUp(@DozeLog.Reason int reason) { + mDelegate.requestWakeUp(reason); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java index b06bf89ffdeb..a2eb4e3bb640 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java @@ -113,10 +113,10 @@ public class DozeService extends DreamService } @Override - public void requestWakeUp() { + public void requestWakeUp(@DozeLog.Reason int reason) { PowerManager pm = getSystemService(PowerManager.class); pm.wakeUp(SystemClock.uptimeMillis(), PowerManager.WAKE_REASON_GESTURE, - "com.android.systemui:NODOZE"); + "com.android.systemui:NODOZE " + DozeLog.reasonToString(reason)); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java index 0014d6bbaf24..00ac8bc7e3fa 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java @@ -16,6 +16,8 @@ package com.android.systemui.doze; +import static android.app.StatusBarManager.SESSION_KEYGUARD; + import static com.android.systemui.doze.DozeMachine.State.DOZE_SUSPEND_TRIGGERS; import static com.android.systemui.doze.DozeMachine.State.FINISH; import static com.android.systemui.doze.DozeMachine.State.UNINITIALIZED; @@ -34,19 +36,19 @@ import android.util.Log; import android.view.Display; import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.logging.InstanceId; import com.android.internal.logging.UiEvent; import com.android.internal.logging.UiEventLogger; import com.android.systemui.biometrics.AuthController; import com.android.systemui.broadcast.BroadcastDispatcher; -import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dock.DockManager; import com.android.systemui.doze.DozeMachine.State; import com.android.systemui.doze.dagger.DozeScope; +import com.android.systemui.log.SessionTracker; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.policy.DevicePostureController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.Assert; -import com.android.systemui.util.concurrency.DelayableExecutor; import com.android.systemui.util.sensors.AsyncSensorManager; import com.android.systemui.util.sensors.ProximityCheck; import com.android.systemui.util.sensors.ProximitySensor; @@ -80,6 +82,7 @@ public class DozeTriggers implements DozeMachine.Part { private static final int PROXIMITY_TIMEOUT_DELAY_MS = 500; private final Context mContext; + private final SessionTracker mSessionTracker; private DozeMachine mMachine; private final DozeLog mDozeLog; private final DozeSensors mDozeSensors; @@ -95,10 +98,8 @@ public class DozeTriggers implements DozeMachine.Part { private final ProximityCheck mProxCheck; private final BroadcastDispatcher mBroadcastDispatcher; private final AuthController mAuthController; - private final DelayableExecutor mMainExecutor; private final KeyguardStateController mKeyguardStateController; private final UiEventLogger mUiEventLogger; - private final DevicePostureController mDevicePostureController; private long mNotificationPulseTime; private boolean mPulsePending; @@ -185,8 +186,8 @@ public class DozeTriggers implements DozeMachine.Part { ProximityCheck proxCheck, DozeLog dozeLog, BroadcastDispatcher broadcastDispatcher, SecureSettings secureSettings, AuthController authController, - @Main DelayableExecutor mainExecutor, UiEventLogger uiEventLogger, + SessionTracker sessionTracker, KeyguardStateController keyguardStateController, DevicePostureController devicePostureController) { mContext = context; @@ -196,8 +197,8 @@ public class DozeTriggers implements DozeMachine.Part { mSensorManager = sensorManager; mWakeLock = wakeLock; mAllowPulseTriggers = true; + mSessionTracker = sessionTracker; - mDevicePostureController = devicePostureController; mDozeSensors = new DozeSensors(context, mSensorManager, dozeParameters, config, wakeLock, this::onSensor, this::onProximityFar, dozeLog, proximitySensor, secureSettings, authController, devicePostureController); @@ -206,14 +207,9 @@ public class DozeTriggers implements DozeMachine.Part { mDozeLog = dozeLog; mBroadcastDispatcher = broadcastDispatcher; mAuthController = authController; - mMainExecutor = mainExecutor; mUiEventLogger = uiEventLogger; mKeyguardStateController = keyguardStateController; } - private final DevicePostureController.Callback mDevicePostureCallback = - posture -> { - - }; @Override public void setDozeMachine(DozeMachine dozeMachine) { @@ -271,7 +267,7 @@ public class DozeTriggers implements DozeMachine.Part { mProxCheck.check(PROXIMITY_TIMEOUT_DELAY_MS, near -> { final long end = SystemClock.uptimeMillis(); mDozeLog.traceProximityResult( - near == null ? false : near, + near != null && near, end - start, reason); callback.accept(near); @@ -354,17 +350,17 @@ public class DozeTriggers implements DozeMachine.Part { return mKeyguardStateController.isOccluded(); } - private void gentleWakeUp(int reason) { + private void gentleWakeUp(@DozeLog.Reason int reason) { // Log screen wake up reason (lift/pickup, tap, double-tap) Optional.ofNullable(DozingUpdateUiEvent.fromReason(reason)) - .ifPresent(mUiEventLogger::log); + .ifPresent(uiEventEnum -> mUiEventLogger.log(uiEventEnum, getKeyguardSessionId())); if (mDozeParameters.getDisplayNeedsBlanking()) { // Let's prepare the display to wake-up by drawing black. // This will cover the hardware wake-up sequence, where the display // becomes black for a few frames. mDozeHost.setAodDimmingScrim(1f); } - mMachine.wakeUp(); + mMachine.wakeUp(reason); } private void onProximityFar(boolean far) { @@ -384,11 +380,10 @@ public class DozeTriggers implements DozeMachine.Part { if (state == DozeMachine.State.DOZE_PULSING || state == DozeMachine.State.DOZE_PULSING_BRIGHT) { - boolean ignoreTouch = near; if (DEBUG) { - Log.i(TAG, "Prox changed, ignore touch = " + ignoreTouch); + Log.i(TAG, "Prox changed, ignore touch = " + near); } - mDozeHost.onIgnoreTouchWhilePulsing(ignoreTouch); + mDozeHost.onIgnoreTouchWhilePulsing(near); } if (far && (paused || pausing)) { @@ -424,7 +419,8 @@ public class DozeTriggers implements DozeMachine.Part { mMachine.requestState(DozeMachine.State.DOZE_AOD); // Log sensor triggered Optional.ofNullable(DozingUpdateUiEvent.fromReason(reason)) - .ifPresent(mUiEventLogger::log); + .ifPresent(uiEventEnum -> + mUiEventLogger.log(uiEventEnum, getKeyguardSessionId())); } }, false /* alreadyPerformedProxCheck */, reason); } else { @@ -564,7 +560,7 @@ public class DozeTriggers implements DozeMachine.Part { // Logs request pulse reason on AOD screen. Optional.ofNullable(DozingUpdateUiEvent.fromReason(reason)) - .ifPresent(mUiEventLogger::log); + .ifPresent(uiEventEnum -> mUiEventLogger.log(uiEventEnum, getKeyguardSessionId())); } private boolean canPulse() { @@ -583,6 +579,11 @@ public class DozeTriggers implements DozeMachine.Part { mMachine.requestPulse(reason); } + @Nullable + private InstanceId getKeyguardSessionId() { + return mSessionTracker.getSessionId(SESSION_KEYGUARD); + } + @Override public void dump(PrintWriter pw) { pw.println(" mAodInterruptRunnable=" + mAodInterruptRunnable); diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeMachineTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeMachineTest.java index abe7ae1a0b1c..6a55a60c2fda 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeMachineTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeMachineTest.java @@ -448,7 +448,7 @@ public class DozeMachineTest extends SysuiTestCase { @Test public void testWakeUp_wakesUp() { - mMachine.wakeUp(); + mMachine.wakeUp(DozeLog.REASON_SENSOR_PICKUP); assertTrue(mServiceFake.requestedWakeup); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenStatePreventingAdapterTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenStatePreventingAdapterTest.java index 903e4a1efa53..6b3ec682b12b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenStatePreventingAdapterTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenStatePreventingAdapterTest.java @@ -75,9 +75,9 @@ public class DozeScreenStatePreventingAdapterTest extends SysuiTestCase { } @Test - public void forwards_requestWakeUp() throws Exception { - mWrapper.requestWakeUp(); - verify(mInner).requestWakeUp(); + public void forwards_requestWakeUp() { + mWrapper.requestWakeUp(DozeLog.REASON_SENSOR_PICKUP); + verify(mInner).requestWakeUp(DozeLog.REASON_SENSOR_PICKUP); } @Test diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeServiceFake.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeServiceFake.java index 75f97a2efa8f..928b314197b1 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeServiceFake.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeServiceFake.java @@ -48,7 +48,7 @@ public class DozeServiceFake implements DozeMachine.Service { } @Override - public void requestWakeUp() { + public void requestWakeUp(@DozeLog.Reason int reason) { requestedWakeup = true; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSuspendScreenStatePreventingAdapterTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSuspendScreenStatePreventingAdapterTest.java index fac58a0a78ea..9ae7217d317e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSuspendScreenStatePreventingAdapterTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSuspendScreenStatePreventingAdapterTest.java @@ -81,9 +81,9 @@ public class DozeSuspendScreenStatePreventingAdapterTest extends SysuiTestCase { } @Test - public void forwards_requestWakeUp() throws Exception { - mWrapper.requestWakeUp(); - verify(mInner).requestWakeUp(); + public void forwards_requestWakeUp() { + mWrapper.requestWakeUp(DozeLog.REASON_SENSOR_PICKUP); + verify(mInner).requestWakeUp(DozeLog.REASON_SENSOR_PICKUP); } @Test 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 01a1a3718765..6436981aee06 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java @@ -32,6 +32,7 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.app.StatusBarManager; import android.hardware.Sensor; import android.hardware.display.AmbientDisplayConfiguration; import android.testing.AndroidTestingRunner; @@ -40,12 +41,14 @@ import android.view.Display; import androidx.test.filters.SmallTest; +import com.android.internal.logging.InstanceId; import com.android.internal.logging.UiEventLogger; import com.android.systemui.SysuiTestCase; import com.android.systemui.biometrics.AuthController; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dock.DockManager; import com.android.systemui.doze.DozeTriggers.DozingUpdateUiEvent; +import com.android.systemui.log.SessionTracker; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.policy.DevicePostureController; import com.android.systemui.statusbar.policy.KeyguardStateController; @@ -92,12 +95,14 @@ public class DozeTriggersTest extends SysuiTestCase { private KeyguardStateController mKeyguardStateController; @Mock private DevicePostureController mDevicePostureController; + @Mock + private SessionTracker mSessionTracker; private DozeTriggers mTriggers; private FakeSensorManager mSensors; private Sensor mTapSensor; private FakeProximitySensor mProximitySensor; - private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock()); + private final FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock()); @Before public void setUp() throws Exception { @@ -123,14 +128,14 @@ public class DozeTriggersTest extends SysuiTestCase { mTriggers = new DozeTriggers(mContext, mHost, config, dozeParameters, asyncSensorManager, wakeLock, mDockManager, mProximitySensor, mProximityCheck, mock(DozeLog.class), mBroadcastDispatcher, new FakeSettings(), - mAuthController, mExecutor, mUiEventLogger, mKeyguardStateController, + mAuthController, mUiEventLogger, mSessionTracker, mKeyguardStateController, mDevicePostureController); mTriggers.setDozeMachine(mMachine); waitForSensorManager(); } @Test - public void testOnNotification_stillWorksAfterOneFailedProxCheck() throws Exception { + public void testOnNotification_stillWorksAfterOneFailedProxCheck() { when(mMachine.getState()).thenReturn(DozeMachine.State.DOZE); ArgumentCaptor<DozeHost.Callback> captor = ArgumentCaptor.forClass(DozeHost.Callback.class); doAnswer(invocation -> null).when(mHost).addCallback(captor.capture()); @@ -216,7 +221,7 @@ public class DozeTriggersTest extends SysuiTestCase { } @Test - public void testProximitySensorNotAvailablel() { + public void testProximitySensorNotAvailable() { mProximitySensor.setSensorAvailable(false); mTriggers.onSensor(DozeLog.PULSE_REASON_SENSOR_LONG_PRESS, 100, 100, null); mTriggers.onSensor(DozeLog.PULSE_REASON_SENSOR_WAKE_REACH, 100, 100, @@ -228,6 +233,9 @@ public class DozeTriggersTest extends SysuiTestCase { public void testQuickPickup() { // GIVEN device is in doze (screen blank, but running doze sensors) when(mMachine.getState()).thenReturn(DozeMachine.State.DOZE); + InstanceId keyguardSessionId = InstanceId.fakeInstanceId(99); + when(mSessionTracker.getSessionId(StatusBarManager.SESSION_KEYGUARD)) + .thenReturn(keyguardSessionId); // WHEN quick pick up is triggered mTriggers.onSensor(DozeLog.REASON_SENSOR_QUICK_PICKUP, 100, 100, null); @@ -236,7 +244,8 @@ public class DozeTriggersTest extends SysuiTestCase { verify(mMachine).requestPulse(anyInt()); // THEN a log is taken that quick pick up was triggered - verify(mUiEventLogger).log(DozingUpdateUiEvent.DOZING_UPDATE_QUICK_PICKUP); + verify(mUiEventLogger) + .log(DozingUpdateUiEvent.DOZING_UPDATE_QUICK_PICKUP, keyguardSessionId); } @Test @@ -249,7 +258,7 @@ public class DozeTriggersTest extends SysuiTestCase { mTriggers.onSensor(DozeLog.REASON_SENSOR_PICKUP, 100, 100, null); // THEN wakeup - verify(mMachine).wakeUp(); + verify(mMachine).wakeUp(DozeLog.REASON_SENSOR_PICKUP); } @Test @@ -262,7 +271,7 @@ public class DozeTriggersTest extends SysuiTestCase { mTriggers.onSensor(DozeLog.REASON_SENSOR_PICKUP, 100, 100, null); // THEN never wakeup - verify(mMachine, never()).wakeUp(); + verify(mMachine, never()).wakeUp(DozeLog.REASON_SENSOR_PICKUP); } @Test |