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

Commit b9e6bcc6 authored by Lucas Silva's avatar Lucas Silva Committed by Android (Google) Code Review
Browse files

Merge "Add flag to disable hiding complications on touch" into main

parents 840a4d64 f6db688f
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()