Merge "Revert "Exposing content insets and minimized home bounds for recents transition""
This commit is contained in:
@@ -16,7 +16,6 @@
|
||||
|
||||
package android.view;
|
||||
|
||||
import android.graphics.Rect;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.view.IRecentsAnimationController;
|
||||
|
||||
@@ -29,26 +28,15 @@ import android.view.IRecentsAnimationController;
|
||||
oneway interface IRecentsAnimationRunner {
|
||||
|
||||
/**
|
||||
* Deprecated, to be removed once Launcher updates
|
||||
* Called when the system is ready for the handler to start animating all the visible tasks.
|
||||
*/
|
||||
void onAnimationStart(in IRecentsAnimationController controller,
|
||||
in RemoteAnimationTarget[] apps) = 0;
|
||||
in RemoteAnimationTarget[] apps);
|
||||
|
||||
/**
|
||||
* Called when the system needs to cancel the current animation. This can be due to the
|
||||
* wallpaper not drawing in time, or the handler not finishing the animation within a predefined
|
||||
* amount of time.
|
||||
*/
|
||||
void onAnimationCanceled() = 1;
|
||||
|
||||
/**
|
||||
* Called when the system is ready for the handler to start animating all the visible tasks.
|
||||
*
|
||||
* @param homeContentInsets The current home app content insets
|
||||
* @param minimizedHomeBounds Specifies the bounds of the minimized home app, will be
|
||||
* {@code null} if the device is not currently in split screen
|
||||
*/
|
||||
void onAnimationStart_New(in IRecentsAnimationController controller,
|
||||
in RemoteAnimationTarget[] apps, in Rect homeContentInsets,
|
||||
in Rect minimizedHomeBounds) = 2;
|
||||
void onAnimationCanceled();
|
||||
}
|
||||
|
||||
@@ -78,11 +78,6 @@ public class RemoteAnimationTarget implements Parcelable {
|
||||
*/
|
||||
public final Rect clipRect;
|
||||
|
||||
/**
|
||||
* The insets of the main app window.
|
||||
*/
|
||||
public final Rect contentInsets;
|
||||
|
||||
/**
|
||||
* The index of the element in the tree in prefix order. This should be used for z-layering
|
||||
* to preserve original z-layer order in the hierarchy tree assuming no "boosting" needs to
|
||||
@@ -110,14 +105,13 @@ public class RemoteAnimationTarget implements Parcelable {
|
||||
public final WindowConfiguration windowConfiguration;
|
||||
|
||||
public RemoteAnimationTarget(int taskId, int mode, SurfaceControl leash, boolean isTranslucent,
|
||||
Rect clipRect, Rect contentInsets, int prefixOrderIndex, Point position,
|
||||
Rect sourceContainerBounds, WindowConfiguration windowConfig) {
|
||||
Rect clipRect, int prefixOrderIndex, Point position, Rect sourceContainerBounds,
|
||||
WindowConfiguration windowConfig) {
|
||||
this.mode = mode;
|
||||
this.taskId = taskId;
|
||||
this.leash = leash;
|
||||
this.isTranslucent = isTranslucent;
|
||||
this.clipRect = new Rect(clipRect);
|
||||
this.contentInsets = new Rect(contentInsets);
|
||||
this.prefixOrderIndex = prefixOrderIndex;
|
||||
this.position = new Point(position);
|
||||
this.sourceContainerBounds = new Rect(sourceContainerBounds);
|
||||
@@ -130,7 +124,6 @@ public class RemoteAnimationTarget implements Parcelable {
|
||||
leash = in.readParcelable(null);
|
||||
isTranslucent = in.readBoolean();
|
||||
clipRect = in.readParcelable(null);
|
||||
contentInsets = in.readParcelable(null);
|
||||
prefixOrderIndex = in.readInt();
|
||||
position = in.readParcelable(null);
|
||||
sourceContainerBounds = in.readParcelable(null);
|
||||
@@ -149,7 +142,6 @@ public class RemoteAnimationTarget implements Parcelable {
|
||||
dest.writeParcelable(leash, 0 /* flags */);
|
||||
dest.writeBoolean(isTranslucent);
|
||||
dest.writeParcelable(clipRect, 0 /* flags */);
|
||||
dest.writeParcelable(contentInsets, 0 /* flags */);
|
||||
dest.writeInt(prefixOrderIndex);
|
||||
dest.writeParcelable(position, 0 /* flags */);
|
||||
dest.writeParcelable(sourceContainerBounds, 0 /* flags */);
|
||||
|
||||
@@ -43,7 +43,6 @@ import android.content.pm.UserInfo;
|
||||
import android.content.res.Resources;
|
||||
import android.content.res.Resources.NotFoundException;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
@@ -58,7 +57,6 @@ import android.view.IRecentsAnimationController;
|
||||
import android.view.IRecentsAnimationRunner;
|
||||
|
||||
import android.view.RemoteAnimationTarget;
|
||||
import android.view.WindowManagerGlobal;
|
||||
import com.android.systemui.shared.recents.model.Task;
|
||||
import com.android.systemui.shared.recents.model.Task.TaskKey;
|
||||
import com.android.systemui.shared.recents.model.ThumbnailData;
|
||||
@@ -273,20 +271,11 @@ public class ActivityManagerWrapper {
|
||||
runner = new IRecentsAnimationRunner.Stub() {
|
||||
public void onAnimationStart(IRecentsAnimationController controller,
|
||||
RemoteAnimationTarget[] apps) {
|
||||
final Rect stableInsets = new Rect();
|
||||
WindowManagerWrapper.getInstance().getStableInsets(stableInsets);
|
||||
onAnimationStart_New(controller, apps, stableInsets, null);
|
||||
}
|
||||
|
||||
public void onAnimationStart_New(IRecentsAnimationController controller,
|
||||
RemoteAnimationTarget[] apps, Rect homeContentInsets,
|
||||
Rect minimizedHomeBounds) {
|
||||
final RecentsAnimationControllerCompat controllerCompat =
|
||||
new RecentsAnimationControllerCompat(controller);
|
||||
final RemoteAnimationTargetCompat[] appsCompat =
|
||||
RemoteAnimationTargetCompat.wrap(apps);
|
||||
animationHandler.onAnimationStart(controllerCompat, appsCompat,
|
||||
homeContentInsets, minimizedHomeBounds);
|
||||
animationHandler.onAnimationStart(controllerCompat, appsCompat);
|
||||
}
|
||||
|
||||
public void onAnimationCanceled() {
|
||||
|
||||
@@ -16,15 +16,13 @@
|
||||
|
||||
package com.android.systemui.shared.system;
|
||||
|
||||
import android.graphics.Rect;
|
||||
|
||||
public interface RecentsAnimationListener {
|
||||
|
||||
/**
|
||||
* Called when the animation into Recents can start. This call is made on the binder thread.
|
||||
*/
|
||||
void onAnimationStart(RecentsAnimationControllerCompat controller,
|
||||
RemoteAnimationTargetCompat[] apps, Rect homeContentInsets, Rect minimizedHomeBounds);
|
||||
RemoteAnimationTargetCompat[] apps);
|
||||
|
||||
/**
|
||||
* Called when the animation into Recents was canceled. This call is made on the binder thread.
|
||||
|
||||
@@ -16,9 +16,6 @@
|
||||
|
||||
package com.android.systemui.shared.system;
|
||||
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
|
||||
|
||||
import android.app.WindowConfiguration;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.Rect;
|
||||
import android.view.RemoteAnimationTarget;
|
||||
@@ -40,10 +37,7 @@ public class RemoteAnimationTargetCompat {
|
||||
public final Point position;
|
||||
public final Rect sourceContainerBounds;
|
||||
|
||||
private final RemoteAnimationTarget mTarget;
|
||||
|
||||
public RemoteAnimationTargetCompat(RemoteAnimationTarget app) {
|
||||
mTarget = app;
|
||||
taskId = app.taskId;
|
||||
mode = app.mode;
|
||||
leash = new SurfaceControlCompat(app.leash);
|
||||
@@ -62,18 +56,4 @@ public class RemoteAnimationTargetCompat {
|
||||
}
|
||||
return appsCompat;
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: Get as a method for compatibility (will move into ctor once Launcher updates)
|
||||
*/
|
||||
public Rect getContentInsets() {
|
||||
return mTarget.contentInsets;
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: Get as a method for compatibility (will move into ctor once Launcher updates)
|
||||
*/
|
||||
public boolean isAssistantActivityType() {
|
||||
return mTarget.windowConfiguration.getActivityType() == ACTIVITY_TYPE_ASSISTANT;
|
||||
}
|
||||
}
|
||||
@@ -20,7 +20,6 @@ import static android.app.ActivityManager.StackId.INVALID_STACK_ID;
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
|
||||
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
|
||||
import static android.content.Intent.FLAG_ACTIVITY_NO_ANIMATION;
|
||||
import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER;
|
||||
import static android.view.WindowManager.TRANSIT_NONE;
|
||||
import static com.android.server.am.ActivityStackSupervisor.PRESERVE_WINDOWS;
|
||||
|
||||
@@ -28,7 +27,6 @@ import android.app.ActivityOptions;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Intent;
|
||||
import android.os.Handler;
|
||||
import android.os.Trace;
|
||||
import android.view.IRecentsAnimationRunner;
|
||||
import com.android.server.wm.RecentsAnimationController.RecentsAnimationCallbacks;
|
||||
import com.android.server.wm.WindowManagerService;
|
||||
@@ -72,7 +70,6 @@ class RecentsAnimation implements RecentsAnimationCallbacks {
|
||||
|
||||
void startRecentsActivity(Intent intent, IRecentsAnimationRunner recentsAnimationRunner,
|
||||
ComponentName recentsComponent, int recentsUid) {
|
||||
Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "RecentsAnimation#startRecentsActivity");
|
||||
mWindowManager.deferSurfaceLayout();
|
||||
try {
|
||||
// Cancel the previous recents animation if necessary
|
||||
@@ -127,7 +124,6 @@ class RecentsAnimation implements RecentsAnimationCallbacks {
|
||||
mHandler.postDelayed(mCancelAnimationRunnable, RECENTS_ANIMATION_TIMEOUT);
|
||||
} finally {
|
||||
mWindowManager.continueSurfaceLayout();
|
||||
Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -138,8 +134,6 @@ class RecentsAnimation implements RecentsAnimationCallbacks {
|
||||
if (mWindowManager.getRecentsAnimationController() == null) return;
|
||||
|
||||
mWindowManager.inSurfaceTransaction(() -> {
|
||||
Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER,
|
||||
"RecentsAnimation#onAnimationFinished_inSurfaceTransaction");
|
||||
mWindowManager.deferSurfaceLayout();
|
||||
try {
|
||||
mWindowManager.cleanupRecentsAnimation();
|
||||
@@ -173,7 +167,6 @@ class RecentsAnimation implements RecentsAnimationCallbacks {
|
||||
mWindowManager.executeAppTransition();
|
||||
} finally {
|
||||
mWindowManager.continueSurfaceLayout();
|
||||
Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -62,7 +62,6 @@ public class RecentsAnimationController {
|
||||
|
||||
// The recents component app token that is shown behind the visibile tasks
|
||||
private AppWindowToken mHomeAppToken;
|
||||
private Rect mMinimizedHomeBounds = new Rect();
|
||||
|
||||
// We start the RecentsAnimationController in a pending-start state since we need to wait for
|
||||
// the wallpaper/activity to draw before we can give control to the handler to start animating
|
||||
@@ -106,7 +105,7 @@ public class RecentsAnimationController {
|
||||
final AppWindowToken topChild = task.getTopChild();
|
||||
final WindowState mainWindow = topChild.findMainWindow();
|
||||
return new TaskSnapshot(buffer, topChild.getConfiguration().orientation,
|
||||
mainWindow.mContentInsets,
|
||||
mainWindow.mStableInsets,
|
||||
ActivityManager.isLowRamDeviceStatic() /* reduced */,
|
||||
1.0f /* scale */);
|
||||
}
|
||||
@@ -164,6 +163,8 @@ public class RecentsAnimationController {
|
||||
* @param remoteAnimationRunner The remote runner which should be notified when the animation is
|
||||
* ready to start or has been canceled
|
||||
* @param callbacks Callbacks to be made when the animation finishes
|
||||
* @param restoreHomeBehindStackId The stack id to restore the home stack behind once the
|
||||
* animation is complete. Will be passed to the callback.
|
||||
*/
|
||||
RecentsAnimationController(WindowManagerService service,
|
||||
IRecentsAnimationRunner remoteAnimationRunner, RecentsAnimationCallbacks callbacks,
|
||||
@@ -199,15 +200,13 @@ public class RecentsAnimationController {
|
||||
if (recentsComponentAppToken != null) {
|
||||
if (DEBUG) Log.d(TAG, "setHomeApp(" + recentsComponentAppToken.getName() + ")");
|
||||
mHomeAppToken = recentsComponentAppToken;
|
||||
final WallpaperController wc = dc.mWallpaperController;
|
||||
if (recentsComponentAppToken.windowsCanBeWallpaperTarget()) {
|
||||
dc.pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER;
|
||||
dc.setLayoutNeeded();
|
||||
}
|
||||
}
|
||||
|
||||
// Save the minimized home height
|
||||
dc.getDockedDividerController().getHomeStackBoundsInDockedMode(mMinimizedHomeBounds);
|
||||
|
||||
mService.mWindowPlacerLocked.performSurfacePlacement();
|
||||
}
|
||||
|
||||
@@ -233,12 +232,7 @@ public class RecentsAnimationController {
|
||||
appAnimations[i] = mPendingAnimations.get(i).createRemoteAnimationApp();
|
||||
}
|
||||
mPendingStart = false;
|
||||
|
||||
final Rect minimizedHomeBounds =
|
||||
mHomeAppToken != null && mHomeAppToken.inSplitScreenSecondaryWindowingMode()
|
||||
? mMinimizedHomeBounds : null;
|
||||
mRunner.onAnimationStart_New(mController, appAnimations,
|
||||
mHomeAppToken.findMainWindow().mContentInsets, minimizedHomeBounds);
|
||||
mRunner.onAnimationStart(mController, appAnimations);
|
||||
} catch (RemoteException e) {
|
||||
Slog.e(TAG, "Failed to start recents animation", e);
|
||||
}
|
||||
@@ -340,15 +334,11 @@ public class RecentsAnimationController {
|
||||
}
|
||||
|
||||
RemoteAnimationTarget createRemoteAnimationApp() {
|
||||
final Point position = new Point();
|
||||
final Rect bounds = new Rect();
|
||||
final WindowContainer container = mTask.getParent();
|
||||
container.getRelativePosition(position);
|
||||
container.getBounds(bounds);
|
||||
final WindowState mainWindow = mTask.getTopVisibleAppMainWindow();
|
||||
// TODO: Do we need position and stack bounds?
|
||||
return new RemoteAnimationTarget(mTask.mTaskId, MODE_CLOSING, mCapturedLeash,
|
||||
!mTask.fillsParent(), mainWindow.mWinAnimator.mLastClipRect,
|
||||
mainWindow.mContentInsets, mTask.getPrefixOrderIndex(), position, bounds,
|
||||
!mTask.fillsParent(),
|
||||
mTask.getTopVisibleAppMainWindow().mWinAnimator.mLastClipRect,
|
||||
mTask.getPrefixOrderIndex(), new Point(), new Rect(),
|
||||
mTask.getWindowConfiguration());
|
||||
}
|
||||
|
||||
|
||||
@@ -166,7 +166,7 @@ class RemoteAnimationController {
|
||||
}
|
||||
return new RemoteAnimationTarget(task.mTaskId, getMode(),
|
||||
mCapturedLeash, !mAppWindowToken.fillsParent(),
|
||||
mainWindow.mWinAnimator.mLastClipRect, mainWindow.mContentInsets,
|
||||
mainWindow.mWinAnimator.mLastClipRect,
|
||||
mAppWindowToken.getPrefixOrderIndex(), mPosition, mStackBounds,
|
||||
task.getWindowConfiguration());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user