diff options
| author | 2024-04-23 06:56:10 +0000 | |
|---|---|---|
| committer | 2024-04-23 06:56:10 +0000 | |
| commit | cf8362a57f743b675704ed93deb7f0a247e0813a (patch) | |
| tree | 9958c219da24def3c0242f7a934c96dbc74422bf | |
| parent | 6adcebe74ab9d491abc176583292986a023ba02c (diff) | |
| parent | f380fff3c32fef3cfb2f6127b227e7d611690526 (diff) | |
Merge "Stay registered to proximity sensor while activities are occluding keyguard" into 24D1-dev
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java | 30 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java | 14 |
2 files changed, 42 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java index 3819e614aca0..4f4f3d0324b3 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java @@ -97,6 +97,14 @@ class FalsingCollectorImpl implements FalsingCollector { } }; + private final KeyguardStateController.Callback mKeyguardStateControllerCallback = + new KeyguardStateController.Callback() { + @Override + public void onKeyguardShowingChanged() { + updateSensorRegistration(); + } + }; + private final KeyguardUpdateMonitorCallback mKeyguardUpdateCallback = new KeyguardUpdateMonitorCallback() { @@ -176,6 +184,8 @@ class FalsingCollectorImpl implements FalsingCollector { mStatusBarStateController.addCallback(mStatusBarStateListener); mState = mStatusBarStateController.getState(); + mKeyguardStateController.addCallback(mKeyguardStateControllerCallback); + mKeyguardUpdateMonitor.registerCallback(mKeyguardUpdateCallback); mJavaAdapter.alwaysCollectFlow( @@ -364,6 +374,24 @@ class FalsingCollectorImpl implements FalsingCollector { } else { sessionEnd(); } + updateSensorRegistration(); + } + + private boolean shouldBeRegisteredToSensors() { + return mScreenOn + && (mState == StatusBarState.KEYGUARD + || (mState == StatusBarState.SHADE + && mKeyguardStateController.isOccluded() + && mKeyguardStateController.isShowing())) + && !mShowingAod; + } + + private void updateSensorRegistration() { + if (shouldBeRegisteredToSensors()) { + registerSensors(); + } else { + unregisterSensors(); + } } private void sessionStart() { @@ -371,7 +399,6 @@ class FalsingCollectorImpl implements FalsingCollector { logDebug("Starting Session"); mSessionStarted = true; mFalsingDataProvider.setJustUnlockedWithFace(false); - registerSensors(); mFalsingDataProvider.onSessionStarted(); } } @@ -380,7 +407,6 @@ class FalsingCollectorImpl implements FalsingCollector { if (mSessionStarted) { logDebug("Ending Session"); mSessionStarted = false; - unregisterSensors(); mFalsingDataProvider.onSessionEnd(); } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java index 3f13033217b3..45d20dcd9d11 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java @@ -188,6 +188,20 @@ public class FalsingCollectorImplTest extends SysuiTestCase { } @Test + public void testRegisterSensor_OccludingActivity() { + when(mKeyguardStateController.isOccluded()).thenReturn(true); + + ArgumentCaptor<StatusBarStateController.StateListener> stateListenerArgumentCaptor = + ArgumentCaptor.forClass(StatusBarStateController.StateListener.class); + verify(mStatusBarStateController).addCallback(stateListenerArgumentCaptor.capture()); + + mFalsingCollector.onScreenTurningOn(); + reset(mProximitySensor); + stateListenerArgumentCaptor.getValue().onStateChanged(StatusBarState.SHADE); + verify(mProximitySensor).register(any(ThresholdSensor.Listener.class)); + } + + @Test public void testPassThroughGesture() { MotionEvent down = MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN, 0, 0, 0); MotionEvent up = MotionEvent.obtain(0, 0, MotionEvent.ACTION_UP, 0, 0, 0); |