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

Commit 37acde2c authored by Lucas Silva's avatar Lucas Silva Committed by Automerger Merge Worker
Browse files

Merge "Don't hide complications if bouncer is showing." into tm-qpr-dev am: a74fee41

parents e88d0c58 a74fee41
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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;
@@ -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;
+45 −0
Original line number Diff line number Diff line
@@ -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;
@@ -58,6 +59,9 @@ public class HideComplicationTouchHandlerTest extends SysuiTestCase {
    @Mock
    TouchInsetManager mTouchInsetManager;

    @Mock
    StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;

    @Mock
    Handler mHandler;

@@ -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);

@@ -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);

@@ -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);