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

Commit b0115622 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Allow back gesture on bouncer/shade over dream" into main

parents 45c33d0d b735e07a
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -1138,6 +1138,39 @@ class DreamOverlayServiceTest : SysuiTestCase() {
            .addGestureBlockedMatcher(any(), eq(GestureInteractor.Scope.Global))
    }

    @Test
    fun testDreamActivityGesturesNotBlockedWhenNotificationShadeShowing() {
        val client = client

        // Inform the overlay service of dream starting.
        client.startDream(
            mWindowParams,
            mDreamOverlayCallback,
            DREAM_COMPONENT,
            false /*isPreview*/,
            false /*shouldShowComplication*/
        )
        mMainExecutor.runAllReady()

        val matcherCaptor = argumentCaptor<TaskMatcher>()
        verify(gestureInteractor)
            .addGestureBlockedMatcher(matcherCaptor.capture(), eq(GestureInteractor.Scope.Global))
        val matcher = matcherCaptor.firstValue

        val dreamTaskInfo = TaskInfo(mock<ComponentName>(), WindowConfiguration.ACTIVITY_TYPE_DREAM)
        assertThat(matcher.matches(dreamTaskInfo)).isTrue()

        val callbackCaptor = ArgumentCaptor.forClass(KeyguardUpdateMonitorCallback::class.java)
        verify(mKeyguardUpdateMonitor).registerCallback(callbackCaptor.capture())

        // Notification shade opens.
        callbackCaptor.value.onShadeExpandedChanged(true)
        mMainExecutor.runAllReady()

        verify(gestureInteractor)
            .removeGestureBlockedMatcher(eq(matcher), eq(GestureInteractor.Scope.Global))
    }

    @Test
    fun testComponentsRecreatedBetweenDreams() {
        clearInvocations(
+16 −6
Original line number Diff line number Diff line
@@ -185,6 +185,7 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ
                        mShadeExpanded = expanded;

                        updateLifecycleStateLocked();
                        updateGestureBlockingLocked();
                    });
                }
            };
@@ -215,6 +216,7 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ
                mBouncerShowing = bouncerShowing;

                updateLifecycleStateLocked();
                updateGestureBlockingLocked();
            });
        }
    };
@@ -525,11 +527,7 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ
        mStarted = true;

        updateRedirectWakeup();

        if (!isDreamInPreviewMode()) {
            mGestureInteractor.addGestureBlockedMatcher(DREAM_TYPE_MATCHER,
                    GestureInteractor.Scope.Global);
        }
        updateGestureBlockingLocked();
    }

    private void updateRedirectWakeup() {
@@ -553,6 +551,18 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ
                null);
    }

    private void updateGestureBlockingLocked() {
        final boolean shouldBlock = !isDreamInPreviewMode() && !mShadeExpanded && !mBouncerShowing;

        if (shouldBlock) {
            mGestureInteractor.addGestureBlockedMatcher(DREAM_TYPE_MATCHER,
                    GestureInteractor.Scope.Global);
        } else {
            mGestureInteractor.removeGestureBlockedMatcher(DREAM_TYPE_MATCHER,
                    GestureInteractor.Scope.Global);
        }
    }

    private Lifecycle.State getLifecycleStateLocked() {
        return mLifecycleRegistry.getCurrentState();
    }