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

Commit bcaeb104 authored by Winson Chung's avatar Winson Chung Committed by Android (Google) Code Review
Browse files

Merge "Exposing content insets and minimized home bounds for recents transition"

parents a13430af 67f31199
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package android.view;

import android.graphics.Rect;
import android.view.RemoteAnimationTarget;
import android.view.IRecentsAnimationController;

@@ -28,15 +29,26 @@ import android.view.IRecentsAnimationController;
oneway interface IRecentsAnimationRunner {

    /**
     * Called when the system is ready for the handler to start animating all the visible tasks.
     * Deprecated, to be removed once Launcher updates
     */
    void onAnimationStart(in IRecentsAnimationController controller,
            in RemoteAnimationTarget[] apps);
            in RemoteAnimationTarget[] apps) = 0;

    /**
     * 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();
    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;
}
+10 −2
Original line number Diff line number Diff line
@@ -78,6 +78,11 @@ 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
@@ -105,13 +110,14 @@ public class RemoteAnimationTarget implements Parcelable {
    public final WindowConfiguration windowConfiguration;

    public RemoteAnimationTarget(int taskId, int mode, SurfaceControl leash, boolean isTranslucent,
            Rect clipRect, int prefixOrderIndex, Point position, Rect sourceContainerBounds,
            WindowConfiguration windowConfig) {
            Rect clipRect, Rect contentInsets, 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);
@@ -124,6 +130,7 @@ 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);
@@ -142,6 +149,7 @@ 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 */);
+12 −1
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ 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;
@@ -57,6 +58,7 @@ 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;
@@ -271,11 +273,20 @@ 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);
                        animationHandler.onAnimationStart(controllerCompat, appsCompat,
                                homeContentInsets, minimizedHomeBounds);
                    }

                    public void onAnimationCanceled() {
+3 −1
Original line number Diff line number Diff line
@@ -16,13 +16,15 @@

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);
            RemoteAnimationTargetCompat[] apps, Rect homeContentInsets, Rect minimizedHomeBounds);

    /**
     * Called when the animation into Recents was canceled. This call is made on the binder thread.
+20 −0
Original line number Diff line number Diff line
@@ -16,6 +16,9 @@

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;
@@ -37,7 +40,10 @@ 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);
@@ -56,4 +62,18 @@ 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;
    }
}
 No newline at end of file
Loading