Loading core/java/android/view/RemoteAnimationTarget.java +18 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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, Loading Loading @@ -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; Loading Loading @@ -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) { Loading @@ -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) { Loading core/java/android/window/TransitionInfo.java +5 −1 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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 {} Loading packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationTargetCompat.java +7 −2 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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) { Loading @@ -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. Loading Loading @@ -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) { Loading services/core/java/com/android/server/wm/ActivityRecord.java +1 −0 Original line number Diff line number Diff line Loading @@ -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; } Loading services/core/java/com/android/server/wm/RecentsAnimationController.java +6 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
core/java/android/view/RemoteAnimationTarget.java +18 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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, Loading Loading @@ -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; Loading Loading @@ -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) { Loading @@ -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) { Loading
core/java/android/window/TransitionInfo.java +5 −1 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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 {} Loading
packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationTargetCompat.java +7 −2 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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) { Loading @@ -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. Loading Loading @@ -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) { Loading
services/core/java/com/android/server/wm/ActivityRecord.java +1 −0 Original line number Diff line number Diff line Loading @@ -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; } Loading
services/core/java/com/android/server/wm/RecentsAnimationController.java +6 −0 Original line number Diff line number Diff line Loading @@ -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