Loading packages/SystemUI/src/com/android/systemui/dreams/touch/HideComplicationTouchHandler.java +9 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.view.View; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dreams.complication.Complication; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.touch.TouchInsetManager; import com.google.common.util.concurrent.ListenableFuture; Loading @@ -50,6 +51,7 @@ public class HideComplicationTouchHandler implements DreamTouchHandler { private final Complication.VisibilityController mVisibilityController; private final int mRestoreTimeout; private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; private final Handler mHandler; private final Executor mExecutor; private final TouchInsetManager mTouchInsetManager; Loading @@ -65,10 +67,12 @@ public class HideComplicationTouchHandler implements DreamTouchHandler { HideComplicationTouchHandler(Complication.VisibilityController visibilityController, @Named(COMPLICATIONS_RESTORE_TIMEOUT) int restoreTimeout, TouchInsetManager touchInsetManager, StatusBarKeyguardViewManager statusBarKeyguardViewManager, @Main Executor executor, @Main Handler handler) { mVisibilityController = visibilityController; mRestoreTimeout = restoreTimeout; mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; mHandler = handler; mTouchInsetManager = touchInsetManager; mExecutor = executor; Loading @@ -80,10 +84,13 @@ public class HideComplicationTouchHandler implements DreamTouchHandler { Log.d(TAG, "onSessionStart"); } final boolean bouncerShowing = mStatusBarKeyguardViewManager.isBouncerShowing(); // If other sessions are interested in this touch, do not fade out elements. if (session.getActiveSessionCount() > 1) { if (session.getActiveSessionCount() > 1 || bouncerShowing) { if (DEBUG) { Log.d(TAG, "multiple active touch sessions, not fading"); Log.d(TAG, "not fading. Active session count: " + session.getActiveSessionCount() + ". Bouncer showing: " + bouncerShowing); } session.pop(); return; Loading packages/SystemUI/tests/src/com/android/systemui/dreams/touch/HideComplicationTouchHandlerTest.java +45 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; import com.android.systemui.dreams.complication.Complication; import com.android.systemui.shared.system.InputChannelCompat; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.touch.TouchInsetManager; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.time.FakeSystemClock; Loading @@ -58,6 +59,9 @@ public class HideComplicationTouchHandlerTest extends SysuiTestCase { @Mock TouchInsetManager mTouchInsetManager; @Mock StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; @Mock Handler mHandler; Loading @@ -83,12 +87,45 @@ public class HideComplicationTouchHandlerTest extends SysuiTestCase { mVisibilityController, RESTORE_TIMEOUT, mTouchInsetManager, mStatusBarKeyguardViewManager, mFakeExecutor, mHandler); // Report multiple active sessions. when(mSession.getActiveSessionCount()).thenReturn(2); // Bouncer hidden. when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(false); // Start session. touchHandler.onSessionStart(mSession); // Verify session end. verify(mSession).pop(); // Verify no interaction with visibility controller. verify(mVisibilityController, never()).setVisibility(anyInt(), anyBoolean()); } /** * Ensures no actions are taken when the bouncer is showing. */ @Test public void testSessionEndWhenBouncerShowing() { final HideComplicationTouchHandler touchHandler = new HideComplicationTouchHandler( mVisibilityController, RESTORE_TIMEOUT, mTouchInsetManager, mStatusBarKeyguardViewManager, mFakeExecutor, mHandler); // Report one session. when(mSession.getActiveSessionCount()).thenReturn(1); // Bouncer is showing. when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(true); // Start session. touchHandler.onSessionStart(mSession); Loading @@ -108,12 +145,16 @@ public class HideComplicationTouchHandlerTest extends SysuiTestCase { mVisibilityController, RESTORE_TIMEOUT, mTouchInsetManager, mStatusBarKeyguardViewManager, mFakeExecutor, mHandler); // Report one session when(mSession.getActiveSessionCount()).thenReturn(1); // Bouncer hidden. when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(false); // Start session touchHandler.onSessionStart(mSession); Loading Loading @@ -149,12 +190,16 @@ public class HideComplicationTouchHandlerTest extends SysuiTestCase { mVisibilityController, RESTORE_TIMEOUT, mTouchInsetManager, mStatusBarKeyguardViewManager, mFakeExecutor, mHandler); // Report one session when(mSession.getActiveSessionCount()).thenReturn(1); // Bouncer hidden. when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(false); // Start session touchHandler.onSessionStart(mSession); Loading Loading
packages/SystemUI/src/com/android/systemui/dreams/touch/HideComplicationTouchHandler.java +9 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.view.View; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dreams.complication.Complication; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.touch.TouchInsetManager; import com.google.common.util.concurrent.ListenableFuture; Loading @@ -50,6 +51,7 @@ public class HideComplicationTouchHandler implements DreamTouchHandler { private final Complication.VisibilityController mVisibilityController; private final int mRestoreTimeout; private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; private final Handler mHandler; private final Executor mExecutor; private final TouchInsetManager mTouchInsetManager; Loading @@ -65,10 +67,12 @@ public class HideComplicationTouchHandler implements DreamTouchHandler { HideComplicationTouchHandler(Complication.VisibilityController visibilityController, @Named(COMPLICATIONS_RESTORE_TIMEOUT) int restoreTimeout, TouchInsetManager touchInsetManager, StatusBarKeyguardViewManager statusBarKeyguardViewManager, @Main Executor executor, @Main Handler handler) { mVisibilityController = visibilityController; mRestoreTimeout = restoreTimeout; mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; mHandler = handler; mTouchInsetManager = touchInsetManager; mExecutor = executor; Loading @@ -80,10 +84,13 @@ public class HideComplicationTouchHandler implements DreamTouchHandler { Log.d(TAG, "onSessionStart"); } final boolean bouncerShowing = mStatusBarKeyguardViewManager.isBouncerShowing(); // If other sessions are interested in this touch, do not fade out elements. if (session.getActiveSessionCount() > 1) { if (session.getActiveSessionCount() > 1 || bouncerShowing) { if (DEBUG) { Log.d(TAG, "multiple active touch sessions, not fading"); Log.d(TAG, "not fading. Active session count: " + session.getActiveSessionCount() + ". Bouncer showing: " + bouncerShowing); } session.pop(); return; Loading
packages/SystemUI/tests/src/com/android/systemui/dreams/touch/HideComplicationTouchHandlerTest.java +45 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; import com.android.systemui.dreams.complication.Complication; import com.android.systemui.shared.system.InputChannelCompat; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.touch.TouchInsetManager; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.time.FakeSystemClock; Loading @@ -58,6 +59,9 @@ public class HideComplicationTouchHandlerTest extends SysuiTestCase { @Mock TouchInsetManager mTouchInsetManager; @Mock StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; @Mock Handler mHandler; Loading @@ -83,12 +87,45 @@ public class HideComplicationTouchHandlerTest extends SysuiTestCase { mVisibilityController, RESTORE_TIMEOUT, mTouchInsetManager, mStatusBarKeyguardViewManager, mFakeExecutor, mHandler); // Report multiple active sessions. when(mSession.getActiveSessionCount()).thenReturn(2); // Bouncer hidden. when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(false); // Start session. touchHandler.onSessionStart(mSession); // Verify session end. verify(mSession).pop(); // Verify no interaction with visibility controller. verify(mVisibilityController, never()).setVisibility(anyInt(), anyBoolean()); } /** * Ensures no actions are taken when the bouncer is showing. */ @Test public void testSessionEndWhenBouncerShowing() { final HideComplicationTouchHandler touchHandler = new HideComplicationTouchHandler( mVisibilityController, RESTORE_TIMEOUT, mTouchInsetManager, mStatusBarKeyguardViewManager, mFakeExecutor, mHandler); // Report one session. when(mSession.getActiveSessionCount()).thenReturn(1); // Bouncer is showing. when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(true); // Start session. touchHandler.onSessionStart(mSession); Loading @@ -108,12 +145,16 @@ public class HideComplicationTouchHandlerTest extends SysuiTestCase { mVisibilityController, RESTORE_TIMEOUT, mTouchInsetManager, mStatusBarKeyguardViewManager, mFakeExecutor, mHandler); // Report one session when(mSession.getActiveSessionCount()).thenReturn(1); // Bouncer hidden. when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(false); // Start session touchHandler.onSessionStart(mSession); Loading Loading @@ -149,12 +190,16 @@ public class HideComplicationTouchHandlerTest extends SysuiTestCase { mVisibilityController, RESTORE_TIMEOUT, mTouchInsetManager, mStatusBarKeyguardViewManager, mFakeExecutor, mHandler); // Report one session when(mSession.getActiveSessionCount()).thenReturn(1); // Bouncer hidden. when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(false); // Start session touchHandler.onSessionStart(mSession); Loading