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

Commit 442b26f3 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Add willShowImeOnTarget in RemoteAnimationTarget(Compat)" into tm-qpr-dev am: 5c0ba8f0

parents 6b8eeded 5c0ba8f0
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.proto.ProtoOutputStream;
import android.window.TaskSnapshot;

import java.io.PrintWriter;
import java.lang.annotation.Retention;
@@ -234,6 +235,12 @@ public class RemoteAnimationTarget implements Parcelable {
     */
    public @ColorInt int backgroundColor;

    /**
     * Whether the activity is going to show IME on the target window after the app transition.
     * @see TaskSnapshot#hasImeSurface() that used the task snapshot during animating task.
     */
    public boolean willShowImeOnTarget;

    public RemoteAnimationTarget(int taskId, int mode, SurfaceControl leash, boolean isTranslucent,
            Rect clipRect, Rect contentInsets, int prefixOrderIndex, Point position,
            Rect localBounds, Rect screenSpaceBounds,
@@ -294,12 +301,21 @@ public class RemoteAnimationTarget implements Parcelable {
        hasAnimatingParent = in.readBoolean();
        backgroundColor = in.readInt();
        showBackdrop = in.readBoolean();
        willShowImeOnTarget = in.readBoolean();
    }

    public void setShowBackdrop(boolean shouldShowBackdrop) {
        showBackdrop = shouldShowBackdrop;
    }

    public void setWillShowImeOnTarget(boolean showImeOnTarget) {
        willShowImeOnTarget = showImeOnTarget;
    }

    public boolean willShowImeOnTarget() {
        return willShowImeOnTarget;
    }

    @Override
    public int describeContents() {
        return 0;
@@ -328,6 +344,7 @@ public class RemoteAnimationTarget implements Parcelable {
        dest.writeBoolean(hasAnimatingParent);
        dest.writeInt(backgroundColor);
        dest.writeBoolean(showBackdrop);
        dest.writeBoolean(willShowImeOnTarget);
    }

    public void dump(PrintWriter pw, String prefix) {
@@ -350,6 +367,7 @@ public class RemoteAnimationTarget implements Parcelable {
        pw.print(prefix); pw.print("hasAnimatingParent="); pw.print(hasAnimatingParent);
        pw.print(prefix); pw.print("backgroundColor="); pw.print(backgroundColor);
        pw.print(prefix); pw.print("showBackdrop="); pw.print(showBackdrop);
        pw.print(prefix); pw.print("willShowImeOnTarget="); pw.print(willShowImeOnTarget);
    }

    public void dumpDebug(ProtoOutputStream proto, long fieldId) {
+5 −1
Original line number Diff line number Diff line
@@ -116,6 +116,9 @@ public final class TransitionInfo implements Parcelable {
    /** The first unused bit. This can be used by remotes to attach custom flags to this change. */
    public static final int FLAG_FIRST_CUSTOM = 1 << 10;

    /** The container is going to show IME on its task after the transition. */
    public static final int FLAG_WILL_IME_SHOWN = 1 << 11;

    /** @hide */
    @IntDef(prefix = { "FLAG_" }, value = {
            FLAG_NONE,
@@ -129,7 +132,8 @@ public final class TransitionInfo implements Parcelable {
            FLAG_DISPLAY_HAS_ALERT_WINDOWS,
            FLAG_IS_INPUT_METHOD,
            FLAG_IS_EMBEDDED,
            FLAG_FIRST_CUSTOM
            FLAG_FIRST_CUSTOM,
            FLAG_WILL_IME_SHOWN
    })
    public @interface ChangeFlags {}

+7 −2
Original line number Diff line number Diff line
@@ -79,6 +79,8 @@ public class RemoteAnimationTargetCompat {
    // Fields used only to unrap into RemoteAnimationTarget
    private final Rect startBounds;

    public final boolean willShowImeOnTarget;

    public RemoteAnimationTargetCompat(RemoteAnimationTarget app) {
        taskId = app.taskId;
        mode = app.mode;
@@ -102,6 +104,7 @@ public class RemoteAnimationTargetCompat {
        windowType = app.windowType;
        windowConfiguration = app.windowConfiguration;
        startBounds = app.startBounds;
        willShowImeOnTarget = app.willShowImeOnTarget;
    }

    private static int newModeToLegacyMode(int newMode) {
@@ -118,14 +121,15 @@ public class RemoteAnimationTargetCompat {
    }

    public RemoteAnimationTarget unwrap() {
        return new RemoteAnimationTarget(
        final RemoteAnimationTarget target = new RemoteAnimationTarget(
                taskId, mode, leash, isTranslucent, clipRect, contentInsets,
                prefixOrderIndex, position, localBounds, screenSpaceBounds, windowConfiguration,
                isNotInRecents, mStartLeash, startBounds, taskInfo, allowEnterPip, windowType
        );
        target.setWillShowImeOnTarget(willShowImeOnTarget);
        return target;
    }


    /**
     * Almost a copy of Transitions#setupStartState.
     * TODO: remove when there is proper cross-process transaction sync.
@@ -234,6 +238,7 @@ public class RemoteAnimationTargetCompat {
            ? change.getTaskInfo().configuration.windowConfiguration
            : new WindowConfiguration();
        startBounds = change.getStartAbsBounds();
        willShowImeOnTarget = (change.getFlags() & TransitionInfo.FLAG_WILL_IME_SHOWN) != 0;
    }

    public static RemoteAnimationTargetCompat[] wrap(RemoteAnimationTarget[] apps) {
+1 −0
Original line number Diff line number Diff line
@@ -9755,6 +9755,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
                record.mThumbnailAdapter != null ? record.mThumbnailAdapter.mCapturedLeash : null,
                record.mStartBounds, task.getTaskInfo(), checkEnterPictureInPictureAppOpsState());
        target.setShowBackdrop(record.mShowBackdrop);
        target.setWillShowImeOnTarget(mStartingData != null && mStartingData.hasImeSurface());
        target.hasAnimatingParent = record.hasAnimatingParent();
        return target;
    }
+6 −0
Original line number Diff line number Diff line
@@ -1183,6 +1183,12 @@ public class RecentsAnimationController implements DeathRecipient {
                    mLocalBounds, mBounds, mTask.getWindowConfiguration(),
                    mIsRecentTaskInvisible, null, null, mTask.getTaskInfo(),
                    topApp.checkEnterPictureInPictureAppOpsState());

            final ActivityRecord topActivity = mTask.getTopNonFinishingActivity();
            if (topActivity != null && topActivity.mStartingData != null
                    && topActivity.mStartingData.hasImeSurface()) {
                mTarget.setWillShowImeOnTarget(true);
            }
            return mTarget;
        }

Loading