Merge "Add willShowImeOnTarget in RemoteAnimationTarget(Compat)" into tm-qpr-dev am: 5c0ba8f0f5 am: 442b26f30d
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19395267 Change-Id: Icc7c12431ee12ca8046702a25bce06b34a2d0f2e Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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 {}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -9744,6 +9744,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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -54,6 +54,7 @@ import static android.window.TransitionInfo.FLAG_OCCLUDES_KEYGUARD;
|
||||
import static android.window.TransitionInfo.FLAG_SHOW_WALLPAPER;
|
||||
import static android.window.TransitionInfo.FLAG_STARTING_WINDOW_TRANSFER_RECIPIENT;
|
||||
import static android.window.TransitionInfo.FLAG_TRANSLUCENT;
|
||||
import static android.window.TransitionInfo.FLAG_WILL_IME_SHOWN;
|
||||
|
||||
import static com.android.server.wm.ActivityRecord.State.RESUMED;
|
||||
import static com.android.server.wm.ActivityTaskManagerInternal.APP_TRANSITION_RECENTS_ANIM;
|
||||
@@ -1728,6 +1729,13 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe
|
||||
if (task != null && task.voiceSession != null) {
|
||||
flags |= FLAG_IS_VOICE_INTERACTION;
|
||||
}
|
||||
if (task != null) {
|
||||
final ActivityRecord topActivity = task.getTopNonFinishingActivity();
|
||||
if (topActivity != null && topActivity.mStartingData != null
|
||||
&& topActivity.mStartingData.hasImeSurface()) {
|
||||
flags |= FLAG_WILL_IME_SHOWN;
|
||||
}
|
||||
}
|
||||
final ActivityRecord record = wc.asActivityRecord();
|
||||
if (record != null) {
|
||||
if (record.mUseTransferredAnimation) {
|
||||
|
||||
Reference in New Issue
Block a user