diff options
3 files changed, 50 insertions, 1 deletions
diff --git a/packages/SystemUI/aconfig/systemui.aconfig b/packages/SystemUI/aconfig/systemui.aconfig index fd2fa07f5e9d..0dd7b251b39c 100644 --- a/packages/SystemUI/aconfig/systemui.aconfig +++ b/packages/SystemUI/aconfig/systemui.aconfig @@ -746,6 +746,16 @@ flag { } flag { + name: "remove_dream_overlay_hide_on_touch" + namespace: "systemui" + description: "Removes logic to hide the dream overlay on user interaction, as it conflicts with various transitions" + bug: "329091030" + metadata { + purpose: PURPOSE_BUGFIX + } +} + +flag { name: "keyboard_docking_indicator" namespace: "systemui" description: "Glow bar indicator reveals upon keyboard docking." diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/complication/HideComplicationTouchHandlerTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/complication/HideComplicationTouchHandlerTest.java index 315a24bfd945..a43415869580 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/complication/HideComplicationTouchHandlerTest.java +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/complication/HideComplicationTouchHandlerTest.java @@ -16,6 +16,8 @@ package com.android.systemui.dreams.complication; +import static com.android.systemui.Flags.FLAG_REMOVE_DREAM_OVERLAY_HIDE_ON_TOUCH; + import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.never; @@ -23,6 +25,8 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.os.Handler; +import android.platform.test.annotations.DisableFlags; +import android.platform.test.annotations.EnableFlags; import android.view.MotionEvent; import android.view.View; @@ -90,6 +94,7 @@ public class HideComplicationTouchHandlerTest extends SysuiTestCase { * Ensures no actions are taken when there multiple sessions. */ @Test + @DisableFlags(FLAG_REMOVE_DREAM_OVERLAY_HIDE_ON_TOUCH) public void testSessionEndOnMultipleSessions() { final HideComplicationTouchHandler touchHandler = new HideComplicationTouchHandler( mVisibilityController, @@ -122,6 +127,7 @@ public class HideComplicationTouchHandlerTest extends SysuiTestCase { * Ensures no actions are taken when the bouncer is showing. */ @Test + @DisableFlags(FLAG_REMOVE_DREAM_OVERLAY_HIDE_ON_TOUCH) public void testSessionEndWhenBouncerShowing() { final HideComplicationTouchHandler touchHandler = new HideComplicationTouchHandler( mVisibilityController, @@ -154,6 +160,7 @@ public class HideComplicationTouchHandlerTest extends SysuiTestCase { * Ensures no actions are taken when there multiple sessions. */ @Test + @DisableFlags(FLAG_REMOVE_DREAM_OVERLAY_HIDE_ON_TOUCH) public void testSessionEndWithTouchInInset() { final HideComplicationTouchHandler touchHandler = new HideComplicationTouchHandler( mVisibilityController, @@ -202,6 +209,7 @@ public class HideComplicationTouchHandlerTest extends SysuiTestCase { * Make sure visibility changes are triggered from session events. */ @Test + @DisableFlags(FLAG_REMOVE_DREAM_OVERLAY_HIDE_ON_TOUCH) public void testSessionLifecycle() { final HideComplicationTouchHandler touchHandler = new HideComplicationTouchHandler( mVisibilityController, @@ -259,4 +267,34 @@ public class HideComplicationTouchHandlerTest extends SysuiTestCase { // Verify session ended. verify(mSession).pop(); } + + @Test + @EnableFlags(FLAG_REMOVE_DREAM_OVERLAY_HIDE_ON_TOUCH) + public void testNoActionWhenDisabledByFlag() { + final HideComplicationTouchHandler touchHandler = new HideComplicationTouchHandler( + mVisibilityController, + RESTORE_TIMEOUT, + HIDE_DELAY, + mTouchInsetManager, + mStatusBarKeyguardViewManager, + mFakeExecutor, + mStateController); + + // Report one session. + when(mSession.getActiveSessionCount()).thenReturn(1); + + // Bouncer is showing. + when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(false); + + // Start session. + touchHandler.onSessionStart(mSession); + + // Verify session end. + verify(mSession).pop(); + + mClock.advanceTime(HIDE_DELAY); + + // Verify no interaction with visibility controller. + verify(mVisibilityController, never()).setVisibility(anyInt()); + } } diff --git a/packages/SystemUI/src/com/android/systemui/dreams/complication/HideComplicationTouchHandler.java b/packages/SystemUI/src/com/android/systemui/dreams/complication/HideComplicationTouchHandler.java index ee48ee5f50fd..d525ce36a061 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/complication/HideComplicationTouchHandler.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/complication/HideComplicationTouchHandler.java @@ -16,6 +16,7 @@ package com.android.systemui.dreams.complication; +import static com.android.systemui.Flags.removeDreamOverlayHideOnTouch; import static com.android.systemui.dreams.complication.dagger.ComplicationModule.COMPLICATIONS_FADE_OUT_DELAY; import static com.android.systemui.dreams.complication.dagger.ComplicationModule.COMPLICATIONS_RESTORE_TIMEOUT; @@ -120,7 +121,7 @@ public class HideComplicationTouchHandler implements DreamTouchHandler { final boolean bouncerShowing = mStatusBarKeyguardViewManager.isBouncerShowing(); // If other sessions are interested in this touch, do not fade out elements. - if (session.getActiveSessionCount() > 1 || bouncerShowing + if (removeDreamOverlayHideOnTouch() || session.getActiveSessionCount() > 1 || bouncerShowing || mOverlayStateController.areExitAnimationsRunning()) { if (DEBUG) { Log.d(TAG, "not fading. Active session count: " + session.getActiveSessionCount() |