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

Commit febe4a22 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 6838106 from 6c6907db to rvc-qpr1-release

Change-Id: I605454445951e2742ced3cde88b7df05139d9f47
parents 7c5a650b 6c6907db
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -1990,7 +1990,7 @@ class ActivityStack extends Task {
        return mRootWindowContainer.resumeHomeActivity(prev, reason, getDisplayArea());
    }

    void startActivityLocked(ActivityRecord r, ActivityRecord focusedTopActivity,
    void startActivityLocked(ActivityRecord r, @Nullable ActivityRecord focusedTopActivity,
            boolean newTask, boolean keepCurTransition, ActivityOptions options) {
        Task rTask = r.getTask();
        final boolean allowMoveToFront = options == null || !options.getAvoidMoveToFront();
@@ -3336,7 +3336,11 @@ class ActivityStack extends Task {
        // Do not sleep activities in this stack if we're marked as focused and the keyguard
        // is in the process of going away.
        if (isFocusedStackOnDisplay()
                && mStackSupervisor.getKeyguardController().isKeyguardGoingAway()) {
                && mStackSupervisor.getKeyguardController().isKeyguardGoingAway()
                // Avoid resuming activities on secondary displays since we don't want bubble
                // activities to be resumed while bubble is still collapsed.
                // TODO(b/113840485): Having keyguard going away state for secondary displays.
                && display.isDefaultDisplay) {
            return false;
        }

+3 −2
Original line number Diff line number Diff line
@@ -1697,8 +1697,9 @@ class ActivityStarter {
        mRootWindowContainer.sendPowerHintForLaunchStartIfNeeded(
                false /* forceSend */, mStartActivity);

        mTargetStack.startActivityLocked(mStartActivity, topStack.getTopNonFinishingActivity(),
                newTask, mKeepCurTransition, mOptions);
        mTargetStack.startActivityLocked(mStartActivity,
                topStack != null ? topStack.getTopNonFinishingActivity() : null, newTask,
                mKeepCurTransition, mOptions);
        if (mDoResume) {
            final ActivityRecord topTaskActivity =
                    mStartActivity.getTask().topRunningActivityLocked();
+0 −4
Original line number Diff line number Diff line
@@ -2305,10 +2305,6 @@ class RootWindowContainer extends WindowContainer<DisplayContent>

        for (int displayNdx = getChildCount() - 1; displayNdx >= 0; --displayNdx) {
            final DisplayContent display = getChildAt(displayNdx);
            if (display.shouldSleep()) {
                continue;
            }

            boolean resumedOnDisplay = false;
            for (int tdaNdx = display.getTaskDisplayAreaCount() - 1; tdaNdx >= 0; --tdaNdx) {
                final TaskDisplayArea taskDisplayArea = display.getTaskDisplayAreaAt(tdaNdx);
+11 −6
Original line number Diff line number Diff line
@@ -1206,19 +1206,22 @@ public class ActivityStackTests extends ActivityTestsBase {
    @Test
    public void testShouldSleepActivities() {
        // When focused activity and keyguard is going away, we should not sleep regardless
        // of the display state
        // of the display state, but keyguard-going-away should only take effects on default
        // display since there is no keyguard on secondary displays (yet).
        verifyShouldSleepActivities(true /* focusedStack */, true /*keyguardGoingAway*/,
                true /* displaySleeping */, false /* expected*/);
                true /* displaySleeping */, true /* isDefaultDisplay */, false /* expected */);
        verifyShouldSleepActivities(true /* focusedStack */, true /*keyguardGoingAway*/,
                true /* displaySleeping */, false /* isDefaultDisplay */, true /* expected */);

        // When not the focused stack, defer to display sleeping state.
        verifyShouldSleepActivities(false /* focusedStack */, true /*keyguardGoingAway*/,
                true /* displaySleeping */, true /* expected*/);
                true /* displaySleeping */, true /* isDefaultDisplay */, true /* expected */);

        // If keyguard is going away, defer to the display sleeping state.
        verifyShouldSleepActivities(true /* focusedStack */, false /*keyguardGoingAway*/,
                true /* displaySleeping */, true /* expected*/);
                true /* displaySleeping */, true /* isDefaultDisplay */, true /* expected */);
        verifyShouldSleepActivities(true /* focusedStack */, false /*keyguardGoingAway*/,
                false /* displaySleeping */, false /* expected*/);
                false /* displaySleeping */, true /* isDefaultDisplay */, false /* expected */);
    }

    @Test
@@ -1428,9 +1431,11 @@ public class ActivityStackTests extends ActivityTestsBase {
    }

    private void verifyShouldSleepActivities(boolean focusedStack,
            boolean keyguardGoingAway, boolean displaySleeping, boolean expected) {
            boolean keyguardGoingAway, boolean displaySleeping, boolean isDefaultDisplay,
            boolean expected) {
        final DisplayContent display = mock(DisplayContent.class);
        final KeyguardController keyguardController = mSupervisor.getKeyguardController();
        display.isDefaultDisplay = isDefaultDisplay;

        doReturn(display).when(mStack).getDisplay();
        doReturn(keyguardGoingAway).when(keyguardController).isKeyguardGoingAway();
+0 −18
Original line number Diff line number Diff line
@@ -896,24 +896,6 @@ public class RootActivityContainerTests extends ActivityTestsBase {
        assertEquals(taskDisplayArea.getTopStack(), taskDisplayArea.getRootHomeTask());
    }

    @Test
    public void testResumeFocusedStackOnSleepingDisplay() {
        // Create an activity on secondary display.
        final TestDisplayContent secondDisplay = addNewDisplayContentAt(
                DisplayContent.POSITION_TOP);
        final ActivityStack stack = secondDisplay.getDefaultTaskDisplayArea()
                .createStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */);
        final ActivityRecord activity = new ActivityBuilder(mService).setStack(stack).build();
        spyOn(activity);
        spyOn(stack);

        // Cannot resumed activities on secondary display if the display should sleep.
        doReturn(true).when(secondDisplay).shouldSleep();
        mRootWindowContainer.resumeFocusedStacksTopActivities();
        verify(stack, never()).resumeTopActivityUncheckedLocked(any(), any());
        verify(activity, never()).makeActiveIfNeeded(any());
    }

    /**
     * Mock {@link RootWindowContainer#resolveHomeActivity} for returning consistent activity
     * info for test cases.