Merge "Revert "Suppress app transition while recents is running"" into tm-dev
This commit is contained in:
@@ -2485,12 +2485,6 @@
|
||||
"group": "WM_ERROR",
|
||||
"at": "com\/android\/server\/wm\/WindowManagerService.java"
|
||||
},
|
||||
"323235828": {
|
||||
"message": "Delaying app transition for recents animation to finish",
|
||||
"level": "VERBOSE",
|
||||
"group": "WM_DEBUG_APP_TRANSITIONS",
|
||||
"at": "com\/android\/server\/wm\/AppTransitionController.java"
|
||||
},
|
||||
"327461496": {
|
||||
"message": "Complete pause: %s",
|
||||
"level": "VERBOSE",
|
||||
|
||||
@@ -68,7 +68,6 @@ import static com.android.server.wm.AppTransition.isNormalTransit;
|
||||
import static com.android.server.wm.NonAppWindowAnimationAdapter.shouldAttachNavBarToApp;
|
||||
import static com.android.server.wm.NonAppWindowAnimationAdapter.shouldStartNonAppWindowAnimationsForKeyguardExit;
|
||||
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION;
|
||||
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_RECENTS;
|
||||
import static com.android.server.wm.WallpaperAnimationAdapter.shouldStartWallpaperAnimation;
|
||||
import static com.android.server.wm.WindowContainer.AnimationFlags.PARENTS;
|
||||
import static com.android.server.wm.WindowManagerDebugConfig.SHOW_LIGHT_TRANSACTIONS;
|
||||
@@ -1143,17 +1142,13 @@ public class AppTransitionController {
|
||||
if (activity == null) {
|
||||
continue;
|
||||
}
|
||||
if (activity.isAnimating(PARENTS, ANIMATION_TYPE_RECENTS)) {
|
||||
ProtoLog.v(WM_DEBUG_APP_TRANSITIONS,
|
||||
"Delaying app transition for recents animation to finish");
|
||||
return false;
|
||||
}
|
||||
ProtoLog.v(WM_DEBUG_APP_TRANSITIONS,
|
||||
"Check opening app=%s: allDrawn=%b startingDisplayed=%b "
|
||||
+ "startingMoved=%b isRelaunching()=%b startingWindow=%s",
|
||||
activity, activity.allDrawn, activity.startingDisplayed,
|
||||
activity.startingMoved, activity.isRelaunching(),
|
||||
activity.mStartingWindow);
|
||||
|
||||
final boolean allDrawn = activity.allDrawn && !activity.isRelaunching();
|
||||
if (!allDrawn && !activity.startingDisplayed && !activity.startingMoved) {
|
||||
return false;
|
||||
|
||||
@@ -1584,14 +1584,6 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
|
||||
return true;
|
||||
}
|
||||
|
||||
void forAllWindowContainers(Consumer<WindowContainer> callback) {
|
||||
callback.accept(this);
|
||||
final int count = mChildren.size();
|
||||
for (int i = 0; i < count; i++) {
|
||||
mChildren.get(i).forAllWindowContainers(callback);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* For all windows at or below this container call the callback.
|
||||
* @param callback Calls the {@link ToBooleanFunction#apply} method for each window found and
|
||||
|
||||
@@ -118,7 +118,6 @@ import static com.android.server.wm.DisplayContent.IME_TARGET_CONTROL;
|
||||
import static com.android.server.wm.DisplayContent.IME_TARGET_LAYERING;
|
||||
import static com.android.server.wm.RootWindowContainer.MATCH_ATTACHED_TASK_OR_RECENT_TASKS;
|
||||
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_ALL;
|
||||
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION;
|
||||
import static com.android.server.wm.WindowContainer.AnimationFlags.CHILDREN;
|
||||
import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION;
|
||||
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG;
|
||||
@@ -3053,22 +3052,13 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void cleanupRecentsAnimation(@RecentsAnimationController.ReorderMode int reorderMode) {
|
||||
if (mRecentsAnimationController != null) {
|
||||
final RecentsAnimationController controller = mRecentsAnimationController;
|
||||
mRecentsAnimationController = null;
|
||||
controller.cleanupAnimation(reorderMode);
|
||||
// TODO(multi-display): currently only default display support recents animation.
|
||||
// Cancel any existing app transition animation running in the legacy transition
|
||||
// framework.
|
||||
final DisplayContent dc = getDefaultDisplayContentLocked();
|
||||
dc.mAppTransition.freeze();
|
||||
dc.forAllWindowContainers((wc) -> {
|
||||
if (wc.isAnimating(TRANSITION, ANIMATION_TYPE_APP_TRANSITION)) {
|
||||
wc.cancelAnimation();
|
||||
}
|
||||
});
|
||||
// TODO(mult-display): currently only default display support recents animation.
|
||||
getDefaultDisplayContentLocked().mAppTransition.updateBooster();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -39,10 +39,8 @@ import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentat
|
||||
import static com.android.dx.mockito.inline.extended.ExtendedMockito.anyInt;
|
||||
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;
|
||||
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
|
||||
import static com.android.dx.mockito.inline.extended.ExtendedMockito.eq;
|
||||
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
|
||||
import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
|
||||
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_RECENTS;
|
||||
import static com.android.server.wm.WindowContainer.POSITION_TOP;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
@@ -50,9 +48,7 @@ import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
|
||||
import android.graphics.Rect;
|
||||
import android.os.Binder;
|
||||
@@ -380,7 +376,7 @@ public class AppTransitionTests extends WindowTestsBase {
|
||||
doReturn(false).when(dc).onDescendantOrientationChanged(any());
|
||||
final WindowState exitingAppWindow = createWindow(null /* parent */, TYPE_BASE_APPLICATION,
|
||||
dc, "exiting app");
|
||||
final ActivityRecord exitingActivity = exitingAppWindow.mActivityRecord;
|
||||
final ActivityRecord exitingActivity= exitingAppWindow.mActivityRecord;
|
||||
// Wait until everything in animation handler get executed to prevent the exiting window
|
||||
// from being removed during WindowSurfacePlacer Traversal.
|
||||
waitUntilHandlersIdle();
|
||||
@@ -408,41 +404,6 @@ public class AppTransitionTests extends WindowTestsBase {
|
||||
assertTrue(runner.mCancelled);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDelayWhileRecents() {
|
||||
final DisplayContent dc = createNewDisplay(Display.STATE_ON);
|
||||
doReturn(false).when(dc).onDescendantOrientationChanged(any());
|
||||
final Task task = createTask(dc);
|
||||
|
||||
// Simulate activity1 launches activity2.
|
||||
final ActivityRecord activity1 = createActivityRecord(task);
|
||||
activity1.setVisible(true);
|
||||
activity1.mVisibleRequested = false;
|
||||
activity1.allDrawn = true;
|
||||
final ActivityRecord activity2 = createActivityRecord(task);
|
||||
activity2.setVisible(false);
|
||||
activity2.mVisibleRequested = true;
|
||||
activity2.allDrawn = true;
|
||||
|
||||
dc.mClosingApps.add(activity1);
|
||||
dc.mOpeningApps.add(activity2);
|
||||
dc.prepareAppTransition(TRANSIT_OPEN);
|
||||
assertTrue(dc.mAppTransition.containsTransitRequest(TRANSIT_OPEN));
|
||||
|
||||
// Wait until everything in animation handler get executed to prevent the exiting window
|
||||
// from being removed during WindowSurfacePlacer Traversal.
|
||||
waitUntilHandlersIdle();
|
||||
|
||||
// Start recents
|
||||
doReturn(true).when(task)
|
||||
.isSelfAnimating(anyInt(), eq(ANIMATION_TYPE_RECENTS));
|
||||
|
||||
dc.mAppTransitionController.handleAppTransitionReady();
|
||||
|
||||
verify(activity1, never()).commitVisibility(anyBoolean(), anyBoolean(), anyBoolean());
|
||||
verify(activity2, never()).commitVisibility(anyBoolean(), anyBoolean(), anyBoolean());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAnimationStyleResId() {
|
||||
// Verify getAnimationStyleResId will return as LayoutParams.windowAnimations when without
|
||||
|
||||
Reference in New Issue
Block a user