summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java13
-rw-r--r--packages/SystemUI/src/com/android/systemui/doze/DozeService.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java41
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/doze/DozeMachineTest.java2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenStatePreventingAdapterTest.java6
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/doze/DozeServiceFake.java2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/doze/DozeSuspendScreenStatePreventingAdapterTest.java6
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java23
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