Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f6db688f authored by Lucas Silva's avatar Lucas Silva
Browse files

Add flag to disable hiding complications on touch

The existing logic to hide dream overlay complications on touch is
conflicting with transitions to/from the hub.

Bug: 329091030
Test: "adb shell device_config override systemui
com.android.systemui.remove_dream_overlay_hide_on_touch true" and
verified overlays are no longer hidden on touch
Flag: ACONFIG com.android.systemui.remove_dream_overlay_hide_on_touch DISABLED

Change-Id: I1fca6cc533769e6fb32c54297888f48a2aecf210
parent f15aa9f9
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -745,6 +745,16 @@ flag {
    bug: "325099249"
}

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"
+38 −0
Original line number Diff line number Diff line
@@ -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());
    }
}
+2 −1
Original line number Diff line number Diff line
@@ -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()