Merge "Resume appSwitchesAllowed after exit PiP" into sc-v2-dev

This commit is contained in:
Hongwei Wang
2021-12-08 17:01:45 +00:00
committed by Android (Google) Code Review

View File

@@ -4581,14 +4581,15 @@ class Task extends TaskFragment {
}
super.setWindowingMode(windowingMode);
// Try reparent pinned activity back to its original task after onConfigurationChanged
// cascade finishes. This is done on Task level instead of
// {@link ActivityRecord#onConfigurationChanged(Configuration)} since when we exit PiP,
// we set final windowing mode on the ActivityRecord first and then on its Task when
// the exit PiP transition finishes. Meanwhile, the exit transition is always
// performed on its original task, reparent immediately in ActivityRecord breaks it.
if (currentMode == WINDOWING_MODE_PINNED) {
if (topActivity != null && topActivity.getLastParentBeforePip() != null) {
if (currentMode == WINDOWING_MODE_PINNED && topActivity != null) {
// Try reparent pinned activity back to its original task after
// onConfigurationChanged cascade finishes. This is done on Task level instead of
// {@link ActivityRecord#onConfigurationChanged(Configuration)} since when we exit
// PiP, we set final windowing mode on the ActivityRecord first and then on its
// Task when the exit PiP transition finishes. Meanwhile, the exit transition is
// always performed on its original task, reparent immediately in ActivityRecord
// breaks it.
if (topActivity.getLastParentBeforePip() != null) {
// Do not reparent if the pinned task is in removal, indicated by the
// force hidden flag.
if (!isForceHidden()) {
@@ -4601,6 +4602,11 @@ class Task extends TaskFragment {
}
}
}
// Resume app-switches-allowed flag when exiting from pinned mode since
// it does not follow the ActivityStarter path.
if (topActivity.shouldBeVisible()) {
mAtmService.resumeAppSwitches();
}
}
if (creating) {