diff options
author | Ming-Shin Lu <lumark@google.com> | 2020-12-16 05:48:03 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-12-16 05:48:03 +0000 |
commit | 460e9b6bcea6c6352ef0460132147644e0e7afcb (patch) | |
tree | dafb0cf87fcb82e77550a47bb031bbaefcd0f498 | |
parent | 1a55dfc1e17416a0db9968f02982925a56271af8 (diff) | |
parent | b6c4b82ebf900ebc0dd79c7bead962f1f4878496 (diff) |
Merge "Move TaskSnapshot into android.window package"
42 files changed, 455 insertions, 421 deletions
diff --git a/apct-tests/perftests/windowmanager/src/android/wm/RecentsAnimationPerfTest.java b/apct-tests/perftests/windowmanager/src/android/wm/RecentsAnimationPerfTest.java index 2aea61f4e540..98b5938e4026 100644 --- a/apct-tests/perftests/windowmanager/src/android/wm/RecentsAnimationPerfTest.java +++ b/apct-tests/perftests/windowmanager/src/android/wm/RecentsAnimationPerfTest.java @@ -24,8 +24,8 @@ import static org.hamcrest.core.AnyOf.anyOf; import static org.hamcrest.core.Is.is; import android.app.ActivityManager; -import android.app.ActivityManager.TaskSnapshot; import android.app.ActivityTaskManager; +import android.window.TaskSnapshot; import android.app.IActivityTaskManager; import android.content.ComponentName; import android.content.Context; diff --git a/core/java/android/app/ActivityManager.aidl b/core/java/android/app/ActivityManager.aidl index 45a0e87ea2d8..341393c0d969 100644 --- a/core/java/android/app/ActivityManager.aidl +++ b/core/java/android/app/ActivityManager.aidl @@ -24,6 +24,4 @@ parcelable ActivityManager.RunningAppProcessInfo; parcelable ActivityManager.RunningServiceInfo; parcelable ActivityManager.RunningTaskInfo; /** @hide */ -parcelable ActivityManager.TaskThumbnail; -/** @hide */ -parcelable ActivityManager.TaskSnapshot;
\ No newline at end of file +parcelable ActivityManager.TaskThumbnail;
\ No newline at end of file diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java index a5d88ef4c8af..1227cc283743 100644 --- a/core/java/android/app/ActivityManager.java +++ b/core/java/android/app/ActivityManager.java @@ -2114,351 +2114,6 @@ public class ActivityManager { return ActivityTaskManager.getInstance().getTasks(maxNum); } - /** - * Represents a task snapshot. - * @hide - */ - public static class TaskSnapshot implements Parcelable { - // Identifier of this snapshot - private final long mId; - // Top activity in task when snapshot was taken - private final ComponentName mTopActivityComponent; - private final HardwareBuffer mSnapshot; - /** Indicates whether task was in landscape or portrait */ - @Configuration.Orientation - private final int mOrientation; - /** See {@link android.view.Surface.Rotation} */ - @Surface.Rotation - private int mRotation; - /** The size of the snapshot before scaling */ - private final Point mTaskSize; - private final Rect mContentInsets; - // Whether this snapshot is a down-sampled version of the high resolution snapshot, used - // mainly for loading snapshots quickly from disk when user is flinging fast - private final boolean mIsLowResolution; - // Whether or not the snapshot is a real snapshot or an app-theme generated snapshot due to - // the task having a secure window or having previews disabled - private final boolean mIsRealSnapshot; - private final int mWindowingMode; - private final @Appearance int mAppearance; - private final boolean mIsTranslucent; - // Must be one of the named color spaces, otherwise, always use SRGB color space. - private final ColorSpace mColorSpace; - - public TaskSnapshot(long id, - @NonNull ComponentName topActivityComponent, HardwareBuffer snapshot, - @NonNull ColorSpace colorSpace, int orientation, int rotation, Point taskSize, - Rect contentInsets, boolean isLowResolution, boolean isRealSnapshot, - int windowingMode, @Appearance int appearance, boolean isTranslucent) { - mId = id; - mTopActivityComponent = topActivityComponent; - mSnapshot = snapshot; - mColorSpace = colorSpace.getId() < 0 - ? ColorSpace.get(ColorSpace.Named.SRGB) : colorSpace; - mOrientation = orientation; - mRotation = rotation; - mTaskSize = new Point(taskSize); - mContentInsets = new Rect(contentInsets); - mIsLowResolution = isLowResolution; - mIsRealSnapshot = isRealSnapshot; - mWindowingMode = windowingMode; - mAppearance = appearance; - mIsTranslucent = isTranslucent; - } - - private TaskSnapshot(Parcel source) { - mId = source.readLong(); - mTopActivityComponent = ComponentName.readFromParcel(source); - mSnapshot = source.readParcelable(null /* classLoader */); - int colorSpaceId = source.readInt(); - mColorSpace = colorSpaceId >= 0 && colorSpaceId < ColorSpace.Named.values().length - ? ColorSpace.get(ColorSpace.Named.values()[colorSpaceId]) - : ColorSpace.get(ColorSpace.Named.SRGB); - mOrientation = source.readInt(); - mRotation = source.readInt(); - mTaskSize = source.readParcelable(null /* classLoader */); - mContentInsets = source.readParcelable(null /* classLoader */); - mIsLowResolution = source.readBoolean(); - mIsRealSnapshot = source.readBoolean(); - mWindowingMode = source.readInt(); - mAppearance = source.readInt(); - mIsTranslucent = source.readBoolean(); - } - - /** - * @return Identifier of this snapshot. - */ - public long getId() { - return mId; - } - - /** - * @return The top activity component for the task at the point this snapshot was taken. - */ - public ComponentName getTopActivityComponent() { - return mTopActivityComponent; - } - - /** - * @return The graphic buffer representing the screenshot. - * - * Note: Prefer {@link #getHardwareBuffer}, which returns the internal object. This version - * creates a new object. - */ - @UnsupportedAppUsage - public GraphicBuffer getSnapshot() { - return GraphicBuffer.createFromHardwareBuffer(mSnapshot); - } - - /** - * @return The hardware buffer representing the screenshot. - */ - public HardwareBuffer getHardwareBuffer() { - return mSnapshot; - } - - /** - * @return The color space of hardware buffer representing the screenshot. - */ - public ColorSpace getColorSpace() { - return mColorSpace; - } - - /** - * @return The screen orientation the screenshot was taken in. - */ - @UnsupportedAppUsage - public int getOrientation() { - return mOrientation; - } - - /** - * @return The screen rotation the screenshot was taken in. - */ - public int getRotation() { - return mRotation; - } - - /** - * @return The size of the task at the point this snapshot was taken. - */ - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - public Point getTaskSize() { - return mTaskSize; - } - - /** - * @return The system/content insets on the snapshot. These can be clipped off in order to - * remove any areas behind system bars in the snapshot. - */ - @UnsupportedAppUsage - public Rect getContentInsets() { - return mContentInsets; - } - - /** - * @return Whether this snapshot is a down-sampled version of the full resolution. - */ - @UnsupportedAppUsage - public boolean isLowResolution() { - return mIsLowResolution; - } - - /** - * @return Whether or not the snapshot is a real snapshot or an app-theme generated snapshot - * due to the task having a secure window or having previews disabled. - */ - @UnsupportedAppUsage - public boolean isRealSnapshot() { - return mIsRealSnapshot; - } - - /** - * @return Whether or not the snapshot is of a translucent app window (non-fullscreen or has - * a non-opaque pixel format). - */ - public boolean isTranslucent() { - return mIsTranslucent; - } - - /** - * @return The windowing mode of the task when this snapshot was taken. - */ - public int getWindowingMode() { - return mWindowingMode; - } - - /** - * @return The {@link Appearance} flags for the top most visible fullscreen window at the - * time that the snapshot was taken. - */ - public @Appearance int getAppearance() { - return mAppearance; - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeLong(mId); - ComponentName.writeToParcel(mTopActivityComponent, dest); - dest.writeParcelable(mSnapshot != null && !mSnapshot.isClosed() ? mSnapshot : null, - 0); - dest.writeInt(mColorSpace.getId()); - dest.writeInt(mOrientation); - dest.writeInt(mRotation); - dest.writeParcelable(mTaskSize, 0); - dest.writeParcelable(mContentInsets, 0); - dest.writeBoolean(mIsLowResolution); - dest.writeBoolean(mIsRealSnapshot); - dest.writeInt(mWindowingMode); - dest.writeInt(mAppearance); - dest.writeBoolean(mIsTranslucent); - } - - @Override - public String toString() { - final int width = mSnapshot != null ? mSnapshot.getWidth() : 0; - final int height = mSnapshot != null ? mSnapshot.getHeight() : 0; - return "TaskSnapshot{" - + " mId=" + mId - + " mTopActivityComponent=" + mTopActivityComponent.flattenToShortString() - + " mSnapshot=" + mSnapshot + " (" + width + "x" + height + ")" - + " mColorSpace=" + mColorSpace.toString() - + " mOrientation=" + mOrientation - + " mRotation=" + mRotation - + " mTaskSize=" + mTaskSize.toString() - + " mContentInsets=" + mContentInsets.toShortString() - + " mIsLowResolution=" + mIsLowResolution - + " mIsRealSnapshot=" + mIsRealSnapshot - + " mWindowingMode=" + mWindowingMode - + " mAppearance=" + mAppearance - + " mIsTranslucent=" + mIsTranslucent; - } - - public static final @android.annotation.NonNull Creator<TaskSnapshot> CREATOR = new Creator<TaskSnapshot>() { - public TaskSnapshot createFromParcel(Parcel source) { - return new TaskSnapshot(source); - } - public TaskSnapshot[] newArray(int size) { - return new TaskSnapshot[size]; - } - }; - - /** Builder for a {@link TaskSnapshot} object */ - public static final class Builder { - private long mId; - private ComponentName mTopActivity; - private HardwareBuffer mSnapshot; - private ColorSpace mColorSpace; - private int mOrientation; - private int mRotation; - private Point mTaskSize; - private Rect mContentInsets; - private boolean mIsRealSnapshot; - private int mWindowingMode; - private @Appearance int mAppearance; - private boolean mIsTranslucent; - private int mPixelFormat; - - public Builder setId(long id) { - mId = id; - return this; - } - - public Builder setTopActivityComponent(ComponentName name) { - mTopActivity = name; - return this; - } - - public Builder setSnapshot(HardwareBuffer buffer) { - mSnapshot = buffer; - return this; - } - - public Builder setColorSpace(ColorSpace colorSpace) { - mColorSpace = colorSpace; - return this; - } - - public Builder setOrientation(int orientation) { - mOrientation = orientation; - return this; - } - - public Builder setRotation(int rotation) { - mRotation = rotation; - return this; - } - - /** - * Sets the original size of the task - */ - public Builder setTaskSize(Point size) { - mTaskSize = size; - return this; - } - - public Builder setContentInsets(Rect contentInsets) { - mContentInsets = contentInsets; - return this; - } - - public Builder setIsRealSnapshot(boolean realSnapshot) { - mIsRealSnapshot = realSnapshot; - return this; - } - - public Builder setWindowingMode(int windowingMode) { - mWindowingMode = windowingMode; - return this; - } - - public Builder setAppearance(@Appearance int appearance) { - mAppearance = appearance; - return this; - } - - public Builder setIsTranslucent(boolean isTranslucent) { - mIsTranslucent = isTranslucent; - return this; - } - - public int getPixelFormat() { - return mPixelFormat; - } - - public Builder setPixelFormat(int pixelFormat) { - mPixelFormat = pixelFormat; - return this; - } - - public TaskSnapshot build() { - return new TaskSnapshot( - mId, - mTopActivity, - mSnapshot, - mColorSpace, - mOrientation, - mRotation, - mTaskSize, - mContentInsets, - // When building a TaskSnapshot with the Builder class, isLowResolution - // is always false. Low-res snapshots are only created when loading from - // disk. - false /* isLowResolution */, - mIsRealSnapshot, - mWindowingMode, - mAppearance, - mIsTranslucent); - - } - } - } - /** @hide */ @IntDef(flag = true, prefix = { "MOVE_TASK_" }, value = { MOVE_TASK_WITH_HOME, diff --git a/core/java/android/app/IActivityManager.aidl b/core/java/android/app/IActivityManager.aidl index c564d285fbc2..94b21187f0dd 100644 --- a/core/java/android/app/IActivityManager.aidl +++ b/core/java/android/app/IActivityManager.aidl @@ -543,14 +543,6 @@ interface IActivityManager { /** Cancels the window transitions for the given task. */ @UnsupportedAppUsage void cancelTaskWindowTransition(int taskId); - /** - * @param taskId the id of the task to retrieve the sAutoapshots for - * @param isLowResolution if set, if the snapshot needs to be loaded from disk, this will load - * a reduced resolution of it, which is much faster - * @return a graphic buffer representing a screenshot of a task - */ - @UnsupportedAppUsage - ActivityManager.TaskSnapshot getTaskSnapshot(int taskId, boolean isLowResolution); void scheduleApplicationInfoChanged(in List<String> packageNames, int userId); void setPersistentVrThread(int tid); diff --git a/core/java/android/app/IActivityTaskManager.aidl b/core/java/android/app/IActivityTaskManager.aidl index fabce459afcc..a3be28fb743b 100644 --- a/core/java/android/app/IActivityTaskManager.aidl +++ b/core/java/android/app/IActivityTaskManager.aidl @@ -308,7 +308,7 @@ interface IActivityTaskManager { * a reduced resolution of it, which is much faster * @return a graphic buffer representing a screenshot of a task */ - ActivityManager.TaskSnapshot getTaskSnapshot(int taskId, boolean isLowResolution); + android.window.TaskSnapshot getTaskSnapshot(int taskId, boolean isLowResolution); /** * It should only be called from home activity to remove its outdated snapshot. The home diff --git a/core/java/android/app/ITaskStackListener.aidl b/core/java/android/app/ITaskStackListener.aidl index dc7782a1ad3c..301d188751cf 100644 --- a/core/java/android/app/ITaskStackListener.aidl +++ b/core/java/android/app/ITaskStackListener.aidl @@ -18,6 +18,7 @@ package android.app; import android.app.ActivityManager; import android.content.ComponentName; +import android.window.TaskSnapshot; /** @hide */ oneway interface ITaskStackListener { @@ -141,7 +142,7 @@ oneway interface ITaskStackListener { /** * Called when a task snapshot got updated. */ - void onTaskSnapshotChanged(int taskId, in ActivityManager.TaskSnapshot snapshot); + void onTaskSnapshotChanged(int taskId, in TaskSnapshot snapshot); /** * Called when the resumed activity is in size compatibility mode and its override configuration diff --git a/core/java/android/app/TaskInfo.java b/core/java/android/app/TaskInfo.java index 2da5e001a3e4..61c4d39c10b0 100644 --- a/core/java/android/app/TaskInfo.java +++ b/core/java/android/app/TaskInfo.java @@ -32,6 +32,7 @@ import android.os.IBinder; import android.os.Parcel; import android.os.RemoteException; import android.util.Log; +import android.window.TaskSnapshot; import android.window.WindowContainerToken; import java.util.ArrayList; @@ -230,9 +231,9 @@ public class TaskInfo { * @return * @hide */ - public ActivityManager.TaskSnapshot getTaskSnapshot(boolean isLowResolution) { + public TaskSnapshot getTaskSnapshot(boolean isLowResolution) { try { - return ActivityManager.getService().getTaskSnapshot(taskId, isLowResolution); + return ActivityTaskManager.getService().getTaskSnapshot(taskId, isLowResolution); } catch (RemoteException e) { Log.e(TAG, "Failed to get task snapshot, taskId=" + taskId, e); return null; diff --git a/core/java/android/app/TaskStackListener.java b/core/java/android/app/TaskStackListener.java index 70ad9af8a037..c311d718e31a 100644 --- a/core/java/android/app/TaskStackListener.java +++ b/core/java/android/app/TaskStackListener.java @@ -17,7 +17,7 @@ package android.app; import android.app.ActivityManager.RunningTaskInfo; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import android.compat.annotation.UnsupportedAppUsage; import android.content.ComponentName; import android.os.Binder; diff --git a/core/java/android/view/IRecentsAnimationController.aidl b/core/java/android/view/IRecentsAnimationController.aidl index cac91a9f07d7..afbd2493bad4 100644 --- a/core/java/android/view/IRecentsAnimationController.aidl +++ b/core/java/android/view/IRecentsAnimationController.aidl @@ -20,6 +20,7 @@ import android.app.ActivityManager; import android.view.IRemoteAnimationFinishedCallback; import android.graphics.GraphicBuffer; import android.graphics.Rect; +import android.window.TaskSnapshot; /** * Passed to the {@link IRecentsAnimationRunner} in order for the runner to control to let the @@ -34,8 +35,7 @@ interface IRecentsAnimationController { * Takes a screenshot of the task associated with the given {@param taskId}. Only valid for the * current set of task ids provided to the handler. */ - @UnsupportedAppUsage - ActivityManager.TaskSnapshot screenshotTask(int taskId); + TaskSnapshot screenshotTask(int taskId); /** * Sets the final bounds on a Task. This is used by Launcher to notify the system that diff --git a/core/java/android/view/IRecentsAnimationRunner.aidl b/core/java/android/view/IRecentsAnimationRunner.aidl index f054b869a9b9..811175566a90 100644 --- a/core/java/android/view/IRecentsAnimationRunner.aidl +++ b/core/java/android/view/IRecentsAnimationRunner.aidl @@ -20,6 +20,7 @@ import android.app.ActivityManager; import android.graphics.Rect; import android.view.RemoteAnimationTarget; import android.view.IRecentsAnimationController; +import android.window.TaskSnapshot; /** * Interface that is used to callback from window manager to the process that runs a recents @@ -42,8 +43,7 @@ oneway interface IRecentsAnimationRunner { * * @see {@link RecentsAnimationController#cleanupScreenshot} */ - @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553) - void onAnimationCanceled(in @nullable ActivityManager.TaskSnapshot taskSnapshot) = 1; + void onAnimationCanceled(in @nullable TaskSnapshot taskSnapshot) = 1; /** * Called when the system is ready for the handler to start animating all the visible tasks. diff --git a/core/java/android/window/TaskSnapshot.aidl b/core/java/android/window/TaskSnapshot.aidl new file mode 100644 index 000000000000..4f0eb7f7f88f --- /dev/null +++ b/core/java/android/window/TaskSnapshot.aidl @@ -0,0 +1,4 @@ +package android.window; + +/** @hide */ +parcelable TaskSnapshot;
\ No newline at end of file diff --git a/core/java/android/window/TaskSnapshot.java b/core/java/android/window/TaskSnapshot.java new file mode 100644 index 000000000000..9834aade61e8 --- /dev/null +++ b/core/java/android/window/TaskSnapshot.java @@ -0,0 +1,385 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.window; + +import android.annotation.NonNull; +import android.compat.annotation.UnsupportedAppUsage; +import android.content.ComponentName; +import android.content.res.Configuration; +import android.graphics.ColorSpace; +import android.graphics.GraphicBuffer; +import android.graphics.Point; +import android.graphics.Rect; +import android.hardware.HardwareBuffer; +import android.os.Build; +import android.os.Parcel; +import android.os.Parcelable; +import android.view.Surface; +import android.view.WindowInsetsController; + +/** + * Represents a task snapshot. + * @hide + */ +public class TaskSnapshot implements Parcelable { + // Identifier of this snapshot + private final long mId; + // Top activity in task when snapshot was taken + private final ComponentName mTopActivityComponent; + private final HardwareBuffer mSnapshot; + /** Indicates whether task was in landscape or portrait */ + @Configuration.Orientation + private final int mOrientation; + /** See {@link android.view.Surface.Rotation} */ + @Surface.Rotation + private int mRotation; + /** The size of the snapshot before scaling */ + private final Point mTaskSize; + private final Rect mContentInsets; + // Whether this snapshot is a down-sampled version of the high resolution snapshot, used + // mainly for loading snapshots quickly from disk when user is flinging fast + private final boolean mIsLowResolution; + // Whether or not the snapshot is a real snapshot or an app-theme generated snapshot due to + // the task having a secure window or having previews disabled + private final boolean mIsRealSnapshot; + private final int mWindowingMode; + private final @WindowInsetsController.Appearance + int mAppearance; + private final boolean mIsTranslucent; + // Must be one of the named color spaces, otherwise, always use SRGB color space. + private final ColorSpace mColorSpace; + + public TaskSnapshot(long id, + @NonNull ComponentName topActivityComponent, HardwareBuffer snapshot, + @NonNull ColorSpace colorSpace, int orientation, int rotation, Point taskSize, + Rect contentInsets, boolean isLowResolution, boolean isRealSnapshot, + int windowingMode, @WindowInsetsController.Appearance int appearance, + boolean isTranslucent) { + mId = id; + mTopActivityComponent = topActivityComponent; + mSnapshot = snapshot; + mColorSpace = colorSpace.getId() < 0 + ? ColorSpace.get(ColorSpace.Named.SRGB) : colorSpace; + mOrientation = orientation; + mRotation = rotation; + mTaskSize = new Point(taskSize); + mContentInsets = new Rect(contentInsets); + mIsLowResolution = isLowResolution; + mIsRealSnapshot = isRealSnapshot; + mWindowingMode = windowingMode; + mAppearance = appearance; + mIsTranslucent = isTranslucent; + } + + private TaskSnapshot(Parcel source) { + mId = source.readLong(); + mTopActivityComponent = ComponentName.readFromParcel(source); + mSnapshot = source.readParcelable(null /* classLoader */); + int colorSpaceId = source.readInt(); + mColorSpace = colorSpaceId >= 0 && colorSpaceId < ColorSpace.Named.values().length + ? ColorSpace.get(ColorSpace.Named.values()[colorSpaceId]) + : ColorSpace.get(ColorSpace.Named.SRGB); + mOrientation = source.readInt(); + mRotation = source.readInt(); + mTaskSize = source.readParcelable(null /* classLoader */); + mContentInsets = source.readParcelable(null /* classLoader */); + mIsLowResolution = source.readBoolean(); + mIsRealSnapshot = source.readBoolean(); + mWindowingMode = source.readInt(); + mAppearance = source.readInt(); + mIsTranslucent = source.readBoolean(); + } + + /** + * @return Identifier of this snapshot. + */ + public long getId() { + return mId; + } + + /** + * @return The top activity component for the task at the point this snapshot was taken. + */ + public ComponentName getTopActivityComponent() { + return mTopActivityComponent; + } + + /** + * @return The graphic buffer representing the screenshot. + * + * Note: Prefer {@link #getHardwareBuffer}, which returns the internal object. This version + * creates a new object. + */ + @UnsupportedAppUsage + public GraphicBuffer getSnapshot() { + return GraphicBuffer.createFromHardwareBuffer(mSnapshot); + } + + /** + * @return The hardware buffer representing the screenshot. + */ + public HardwareBuffer getHardwareBuffer() { + return mSnapshot; + } + + /** + * @return The color space of hardware buffer representing the screenshot. + */ + public ColorSpace getColorSpace() { + return mColorSpace; + } + + /** + * @return The screen orientation the screenshot was taken in. + */ + @UnsupportedAppUsage + public int getOrientation() { + return mOrientation; + } + + /** + * @return The screen rotation the screenshot was taken in. + */ + public int getRotation() { + return mRotation; + } + + /** + * @return The size of the task at the point this snapshot was taken. + */ + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) + public Point getTaskSize() { + return mTaskSize; + } + + /** + * @return The system/content insets on the snapshot. These can be clipped off in order to + * remove any areas behind system bars in the snapshot. + */ + @UnsupportedAppUsage + public Rect getContentInsets() { + return mContentInsets; + } + + /** + * @return Whether this snapshot is a down-sampled version of the full resolution. + */ + @UnsupportedAppUsage + public boolean isLowResolution() { + return mIsLowResolution; + } + + /** + * @return Whether or not the snapshot is a real snapshot or an app-theme generated snapshot + * due to the task having a secure window or having previews disabled. + */ + @UnsupportedAppUsage + public boolean isRealSnapshot() { + return mIsRealSnapshot; + } + + /** + * @return Whether or not the snapshot is of a translucent app window (non-fullscreen or has + * a non-opaque pixel format). + */ + public boolean isTranslucent() { + return mIsTranslucent; + } + + /** + * @return The windowing mode of the task when this snapshot was taken. + */ + public int getWindowingMode() { + return mWindowingMode; + } + + /** + * @return The {@link WindowInsetsController.Appearance} flags for the top most visible + * fullscreen window at the time that the snapshot was taken. + */ + public @WindowInsetsController.Appearance + int getAppearance() { + return mAppearance; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeLong(mId); + ComponentName.writeToParcel(mTopActivityComponent, dest); + dest.writeParcelable(mSnapshot != null && !mSnapshot.isClosed() ? mSnapshot : null, + 0); + dest.writeInt(mColorSpace.getId()); + dest.writeInt(mOrientation); + dest.writeInt(mRotation); + dest.writeParcelable(mTaskSize, 0); + dest.writeParcelable(mContentInsets, 0); + dest.writeBoolean(mIsLowResolution); + dest.writeBoolean(mIsRealSnapshot); + dest.writeInt(mWindowingMode); + dest.writeInt(mAppearance); + dest.writeBoolean(mIsTranslucent); + } + + @Override + public String toString() { + final int width = mSnapshot != null ? mSnapshot.getWidth() : 0; + final int height = mSnapshot != null ? mSnapshot.getHeight() : 0; + return "TaskSnapshot{" + + " mId=" + mId + + " mTopActivityComponent=" + mTopActivityComponent.flattenToShortString() + + " mSnapshot=" + mSnapshot + " (" + width + "x" + height + ")" + + " mColorSpace=" + mColorSpace.toString() + + " mOrientation=" + mOrientation + + " mRotation=" + mRotation + + " mTaskSize=" + mTaskSize.toString() + + " mContentInsets=" + mContentInsets.toShortString() + + " mIsLowResolution=" + mIsLowResolution + + " mIsRealSnapshot=" + mIsRealSnapshot + + " mWindowingMode=" + mWindowingMode + + " mAppearance=" + mAppearance + + " mIsTranslucent=" + mIsTranslucent; + } + + public static final @NonNull Creator<TaskSnapshot> CREATOR = new Creator<TaskSnapshot>() { + public TaskSnapshot createFromParcel(Parcel source) { + return new TaskSnapshot(source); + } + public TaskSnapshot[] newArray(int size) { + return new TaskSnapshot[size]; + } + }; + + /** Builder for a {@link TaskSnapshot} object */ + public static final class Builder { + private long mId; + private ComponentName mTopActivity; + private HardwareBuffer mSnapshot; + private ColorSpace mColorSpace; + private int mOrientation; + private int mRotation; + private Point mTaskSize; + private Rect mContentInsets; + private boolean mIsRealSnapshot; + private int mWindowingMode; + private @WindowInsetsController.Appearance + int mAppearance; + private boolean mIsTranslucent; + private int mPixelFormat; + + public Builder setId(long id) { + mId = id; + return this; + } + + public Builder setTopActivityComponent( + ComponentName name) { + mTopActivity = name; + return this; + } + + public Builder setSnapshot(HardwareBuffer buffer) { + mSnapshot = buffer; + return this; + } + + public Builder setColorSpace(ColorSpace colorSpace) { + mColorSpace = colorSpace; + return this; + } + + public Builder setOrientation(int orientation) { + mOrientation = orientation; + return this; + } + + public Builder setRotation(int rotation) { + mRotation = rotation; + return this; + } + + /** + * Sets the original size of the task + */ + public Builder setTaskSize(Point size) { + mTaskSize = size; + return this; + } + + public Builder setContentInsets(Rect contentInsets) { + mContentInsets = contentInsets; + return this; + } + + public Builder setIsRealSnapshot( + boolean realSnapshot) { + mIsRealSnapshot = realSnapshot; + return this; + } + + public Builder setWindowingMode(int windowingMode) { + mWindowingMode = windowingMode; + return this; + } + + public Builder setAppearance( + @WindowInsetsController.Appearance int appearance) { + mAppearance = appearance; + return this; + } + + public Builder setIsTranslucent( + boolean isTranslucent) { + mIsTranslucent = isTranslucent; + return this; + } + + public int getPixelFormat() { + return mPixelFormat; + } + + public Builder setPixelFormat(int pixelFormat) { + mPixelFormat = pixelFormat; + return this; + } + + public TaskSnapshot build() { + return new TaskSnapshot( + mId, + mTopActivity, + mSnapshot, + mColorSpace, + mOrientation, + mRotation, + mTaskSize, + mContentInsets, + // When building a TaskSnapshot with the Builder class, isLowResolution + // is always false. Low-res snapshots are only created when loading from + // disk. + false /* isLowResolution */, + mIsRealSnapshot, + mWindowingMode, + mAppearance, + mIsTranslucent); + + } + } +} diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/TaskStackListenerCallback.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/TaskStackListenerCallback.java index 5e077188c415..00bd9e507335 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/TaskStackListenerCallback.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/TaskStackListenerCallback.java @@ -16,11 +16,11 @@ package com.android.wm.shell.common; -import android.app.ActivityManager; import android.app.ActivityManager.RunningTaskInfo; import android.app.ITaskStackListener; import android.content.ComponentName; import android.os.IBinder; +import android.window.TaskSnapshot; import androidx.annotation.BinderThread; @@ -55,7 +55,7 @@ public interface TaskStackListenerCallback { default void onTaskDescriptionChanged(RunningTaskInfo taskInfo) { } - default void onTaskSnapshotChanged(int taskId, ActivityManager.TaskSnapshot snapshot) { } + default void onTaskSnapshotChanged(int taskId, TaskSnapshot snapshot) { } default void onBackPressedOnTaskRoot(RunningTaskInfo taskInfo) { } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/TaskStackListenerImpl.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/TaskStackListenerImpl.java index 7efacc7b2c1f..718f7a04508e 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/TaskStackListenerImpl.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/TaskStackListenerImpl.java @@ -26,6 +26,7 @@ import android.os.IBinder; import android.os.Message; import android.os.Trace; import android.util.Log; +import android.window.TaskSnapshot; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.os.SomeArgs; @@ -181,7 +182,7 @@ public class TaskStackListenerImpl extends TaskStackListener implements Handler. } @Override - public void onTaskSnapshotChanged(int taskId, ActivityManager.TaskSnapshot snapshot) { + public void onTaskSnapshotChanged(int taskId, TaskSnapshot snapshot) { mHandler.obtainMessage(ON_TASK_SNAPSHOT_CHANGED, taskId, 0, snapshot).sendToTarget(); } @@ -283,7 +284,7 @@ public class TaskStackListenerImpl extends TaskStackListener implements Handler. Trace.beginSection("onTaskSnapshotChanged"); for (int i = mTaskStackListeners.size() - 1; i >= 0; i--) { mTaskStackListeners.get(i).onTaskSnapshotChanged(msg.arg1, - (ActivityManager.TaskSnapshot) msg.obj); + (TaskSnapshot) msg.obj); } Trace.endSection(); break; diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/TaskStackListenerImplTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/TaskStackListenerImplTest.java index 884287209d53..495be4146f9d 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/TaskStackListenerImplTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/TaskStackListenerImplTest.java @@ -32,6 +32,7 @@ import android.os.Message; import android.os.RemoteException; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; +import android.window.TaskSnapshot; import androidx.test.filters.SmallTest; @@ -153,7 +154,7 @@ public class TaskStackListenerImplTest { @Test public void testOnTaskSnapshotChanged() { - ActivityManager.TaskSnapshot snapshot = mock(ActivityManager.TaskSnapshot.class); + TaskSnapshot snapshot = mock(TaskSnapshot.class); mImpl.onTaskSnapshotChanged(123, snapshot); verify(mCallback).onTaskSnapshotChanged(eq(123), eq(snapshot)); verify(mOtherCallback).onTaskSnapshotChanged(eq(123), eq(snapshot)); diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/ThumbnailData.java b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/ThumbnailData.java index d8fa90a1b365..7dc537c345e0 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/ThumbnailData.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/ThumbnailData.java @@ -22,7 +22,7 @@ import static android.graphics.Bitmap.Config.ARGB_8888; import static com.android.systemui.shared.system.WindowManagerWrapper.WINDOWING_MODE_UNDEFINED; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.Point; diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java index 229d20b6543e..e5c4bf32db3a 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java @@ -27,7 +27,7 @@ import android.app.Activity; import android.app.ActivityManager; import android.app.ActivityManager.RecentTaskInfo; import android.app.ActivityManager.RunningTaskInfo; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import android.app.ActivityOptions; import android.app.ActivityTaskManager; import android.app.AppGlobals; @@ -122,7 +122,7 @@ public class ActivityManagerWrapper { * @return the task snapshot for the given {@param taskId}. */ public @NonNull ThumbnailData getTaskThumbnail(int taskId, boolean isLowResolution) { - ActivityManager.TaskSnapshot snapshot = null; + TaskSnapshot snapshot = null; try { snapshot = getService().getTaskSnapshot(taskId, isLowResolution); } catch (RemoteException e) { diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RecentsAnimationControllerCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/RecentsAnimationControllerCompat.java index fa2f8b97b039..af7c5da7b878 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RecentsAnimationControllerCompat.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/RecentsAnimationControllerCompat.java @@ -16,7 +16,7 @@ package com.android.systemui.shared.system; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import android.graphics.Rect; import android.os.RemoteException; import android.util.Log; diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListeners.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListeners.java index 065d0841b1a6..a907e6676b69 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListeners.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListeners.java @@ -17,8 +17,8 @@ package com.android.systemui.shared.system; import android.app.ActivityManager.RunningTaskInfo; -import android.app.ActivityManager.TaskSnapshot; import android.app.ActivityTaskManager; +import android.window.TaskSnapshot; import android.app.TaskStackListener; import android.content.ComponentName; import android.os.Handler; diff --git a/services/contentsuggestions/java/com/android/server/contentsuggestions/ContentSuggestionsManagerService.java b/services/contentsuggestions/java/com/android/server/contentsuggestions/ContentSuggestionsManagerService.java index 86ea1e44351a..00c91fee845e 100644 --- a/services/contentsuggestions/java/com/android/server/contentsuggestions/ContentSuggestionsManagerService.java +++ b/services/contentsuggestions/java/com/android/server/contentsuggestions/ContentSuggestionsManagerService.java @@ -21,7 +21,6 @@ import static android.content.pm.PackageManager.PERMISSION_GRANTED; import android.annotation.NonNull; import android.annotation.Nullable; -import android.app.ActivityManager; import android.app.contentsuggestions.ClassificationsRequest; import android.app.contentsuggestions.ContentSuggestionsManager; import android.app.contentsuggestions.IClassificationsCallback; @@ -40,6 +39,7 @@ import android.os.ShellCallback; import android.os.UserHandle; import android.os.UserManager; import android.util.Slog; +import android.window.TaskSnapshot; import com.android.internal.os.IResultReceiver; import com.android.server.LocalServices; @@ -162,7 +162,7 @@ public class ContentSuggestionsManagerService extends // Skip taking TaskSnapshot when bitmap is provided. if (!imageContextRequestExtras.containsKey(ContentSuggestionsManager.EXTRA_BITMAP)) { // Can block, so call before acquiring the lock. - ActivityManager.TaskSnapshot snapshot = + TaskSnapshot snapshot = mActivityTaskManagerInternal.getTaskSnapshotBlocking(taskId, false); if (snapshot != null) { snapshotBuffer = snapshot.getHardwareBuffer(); diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 10102cd12346..7fb0bdab79b4 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -5675,11 +5675,6 @@ public class ActivityManagerService extends IActivityManager.Stub } @Override - public ActivityManager.TaskSnapshot getTaskSnapshot(int taskId, boolean isLowResolution) { - return mActivityTaskManager.getTaskSnapshot(taskId, isLowResolution); - } - - @Override public void resizeTask(int taskId, Rect bounds, int resizeMode) { mActivityTaskManager.resizeTask(taskId, bounds, resizeMode); } diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 4c18310df226..9efa24914915 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -219,7 +219,6 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.Size; import android.app.Activity; -import android.app.ActivityManager; import android.app.ActivityManager.TaskDescription; import android.app.ActivityOptions; import android.app.PendingIntent; @@ -294,6 +293,7 @@ import android.view.WindowManager; import android.view.WindowManager.LayoutParams; import android.view.WindowManager.TransitionOldType; import android.view.animation.Animation; +import android.window.TaskSnapshot; import android.window.WindowContainerToken; import com.android.internal.R; @@ -1756,7 +1756,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return false; } - final ActivityManager.TaskSnapshot snapshot = + final TaskSnapshot snapshot = mWmService.mTaskSnapshotController.getSnapshot(task.mTaskId, task.mUserId, false /* restoreFromDisk */, false /* isLowResolution */); final int type = getStartingWindowType(newTask, taskSwitch, processRunning, @@ -1838,7 +1838,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return true; } - private boolean createSnapshot(ActivityManager.TaskSnapshot snapshot) { + private boolean createSnapshot(TaskSnapshot snapshot) { if (snapshot == null) { return false; } @@ -1923,7 +1923,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A private int getStartingWindowType(boolean newTask, boolean taskSwitch, boolean processRunning, boolean allowTaskSnapshot, boolean activityCreated, - ActivityManager.TaskSnapshot snapshot) { + TaskSnapshot snapshot) { if (newTask || !processRunning || (taskSwitch && !activityCreated)) { return STARTING_WINDOW_TYPE_SPLASH_SCREEN; } else if (taskSwitch && allowTaskSnapshot) { @@ -1944,7 +1944,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A * rotation must be the same). */ @VisibleForTesting - boolean isSnapshotCompatible(ActivityManager.TaskSnapshot snapshot) { + boolean isSnapshotCompatible(TaskSnapshot snapshot) { if (snapshot == null) { return false; } diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java index f8b3c1ba856f..9ffedde8e616 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java @@ -19,7 +19,6 @@ package com.android.server.wm; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.UserIdInt; -import android.app.ActivityManager; import android.app.AppProtoEnums; import android.app.IActivityManager; import android.app.IApplicationThread; @@ -34,6 +33,7 @@ import android.os.IBinder; import android.os.RemoteException; import android.service.voice.IVoiceInteractionSession; import android.util.proto.ProtoOutputStream; +import android.window.TaskSnapshot; import com.android.internal.app.IVoiceInteractor; import com.android.server.am.PendingIntentRecord; @@ -552,7 +552,7 @@ public abstract class ActivityTaskManagerInternal { * <p>Warning! this may restore the snapshot from disk so can block, don't call in a latency * sensitive environment. */ - public abstract ActivityManager.TaskSnapshot getTaskSnapshotBlocking(int taskId, + public abstract TaskSnapshot getTaskSnapshotBlocking(int taskId, boolean isLowResolution); /** Returns true if uid is considered foreground for activity start purposes. */ diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index a2b09908e22d..0b3050a9dad2 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -220,6 +220,7 @@ import android.view.RemoteAnimationAdapter; import android.view.RemoteAnimationDefinition; import android.view.WindowManager; import android.window.IWindowOrganizerController; +import android.window.TaskSnapshot; import android.window.WindowContainerTransaction; import com.android.internal.R; @@ -3463,7 +3464,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } @Override - public ActivityManager.TaskSnapshot getTaskSnapshot(int taskId, boolean isLowResolution) { + public TaskSnapshot getTaskSnapshot(int taskId, boolean isLowResolution) { enforceCallerIsRecentsOrHasPermission(READ_FRAME_BUFFER, "getTaskSnapshot()"); final long ident = Binder.clearCallingIdentity(); try { @@ -3473,7 +3474,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } } - private ActivityManager.TaskSnapshot getTaskSnapshot(int taskId, boolean isLowResolution, + private TaskSnapshot getTaskSnapshot(int taskId, boolean isLowResolution, boolean restoreFromDisk) { final Task task; synchronized (mGlobalLock) { @@ -6341,7 +6342,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } @Override - public ActivityManager.TaskSnapshot getTaskSnapshotBlocking( + public TaskSnapshot getTaskSnapshotBlocking( int taskId, boolean isLowResolution) { return ActivityTaskManagerService.this.getTaskSnapshot(taskId, isLowResolution, true /* restoreFromDisk */); diff --git a/services/core/java/com/android/server/wm/RecentsAnimationController.java b/services/core/java/com/android/server/wm/RecentsAnimationController.java index af9069f1e71f..388577cbfade 100644 --- a/services/core/java/com/android/server/wm/RecentsAnimationController.java +++ b/services/core/java/com/android/server/wm/RecentsAnimationController.java @@ -33,7 +33,7 @@ import static com.android.server.wm.WindowManagerInternal.AppTransitionListener; import android.annotation.IntDef; import android.annotation.NonNull; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import android.app.WindowConfiguration; import android.graphics.Point; import android.graphics.Rect; diff --git a/services/core/java/com/android/server/wm/SnapshotStartingData.java b/services/core/java/com/android/server/wm/SnapshotStartingData.java index 3764122487b6..6ad3f15f4a5c 100644 --- a/services/core/java/com/android/server/wm/SnapshotStartingData.java +++ b/services/core/java/com/android/server/wm/SnapshotStartingData.java @@ -16,7 +16,7 @@ package com.android.server.wm; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import com.android.server.policy.WindowManagerPolicy.StartingSurface; diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 69723ff99d06..da547321ad9f 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -156,7 +156,7 @@ import android.annotation.Nullable; import android.app.Activity; import android.app.ActivityManager; import android.app.ActivityManager.TaskDescription; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import android.app.ActivityOptions; import android.app.ActivityTaskManager; import android.app.AppGlobals; @@ -3812,7 +3812,7 @@ class Task extends WindowContainer<WindowContainer> { mTaskDescription = taskDescription; } - void onSnapshotChanged(ActivityManager.TaskSnapshot snapshot) { + void onSnapshotChanged(TaskSnapshot snapshot) { mAtmService.getTaskChangeNotificationController().notifyTaskSnapshotChanged( mTaskId, snapshot); } diff --git a/services/core/java/com/android/server/wm/TaskChangeNotificationController.java b/services/core/java/com/android/server/wm/TaskChangeNotificationController.java index b4d069c0edc1..28ebe0147673 100644 --- a/services/core/java/com/android/server/wm/TaskChangeNotificationController.java +++ b/services/core/java/com/android/server/wm/TaskChangeNotificationController.java @@ -18,7 +18,7 @@ package com.android.server.wm; import android.app.ActivityManager; import android.app.ActivityManager.RunningTaskInfo; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import android.app.ITaskStackListener; import android.app.TaskInfo; import android.content.ComponentName; diff --git a/services/core/java/com/android/server/wm/TaskSnapshotCache.java b/services/core/java/com/android/server/wm/TaskSnapshotCache.java index 0edfaa8b9707..3c437babd70c 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotCache.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotCache.java @@ -17,7 +17,7 @@ package com.android.server.wm; import android.annotation.Nullable; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import android.util.ArrayMap; import java.io.PrintWriter; diff --git a/services/core/java/com/android/server/wm/TaskSnapshotController.java b/services/core/java/com/android/server/wm/TaskSnapshotController.java index b2f30628f62f..de9fb6aaefe2 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotController.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotController.java @@ -24,7 +24,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import android.annotation.NonNull; import android.annotation.Nullable; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.PixelFormat; @@ -219,7 +219,8 @@ class TaskSnapshotController { * Retrieves a snapshot. If {@param restoreFromDisk} equals {@code true}, DO NOT HOLD THE WINDOW * MANAGER LOCK WHEN CALLING THIS METHOD! */ - @Nullable TaskSnapshot getSnapshot(int taskId, int userId, boolean restoreFromDisk, + @Nullable + TaskSnapshot getSnapshot(int taskId, int userId, boolean restoreFromDisk, boolean isLowResolution) { return mCache.getSnapshot(taskId, userId, restoreFromDisk, isLowResolution && mPersister.enableLowResSnapshots()); diff --git a/services/core/java/com/android/server/wm/TaskSnapshotLoader.java b/services/core/java/com/android/server/wm/TaskSnapshotLoader.java index 9717e7ed0bf5..cfdb6b357732 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotLoader.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotLoader.java @@ -20,7 +20,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import android.app.ActivityManager; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import android.content.ComponentName; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; diff --git a/services/core/java/com/android/server/wm/TaskSnapshotPersister.java b/services/core/java/com/android/server/wm/TaskSnapshotPersister.java index 6dfcb4192ff2..60c4766ea18f 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotPersister.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotPersister.java @@ -23,7 +23,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import android.annotation.NonNull; import android.annotation.TestApi; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.os.Process; diff --git a/services/core/java/com/android/server/wm/TaskSnapshotSurface.java b/services/core/java/com/android/server/wm/TaskSnapshotSurface.java index d2cd1a1d9d61..d5e4dac4a484 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotSurface.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotSurface.java @@ -49,7 +49,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import android.annotation.Nullable; import android.app.ActivityManager.TaskDescription; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import android.app.ActivityThread; import android.content.Context; import android.graphics.Canvas; diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 0f2c2ac86be6..1f3d15a7af6d 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -140,7 +140,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.app.ActivityManager; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import android.app.ActivityManagerInternal; import android.app.ActivityTaskManager; import android.app.ActivityThread; diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java index 78cebf3568c2..2d71d7f837ef 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java @@ -75,7 +75,7 @@ import static org.mockito.ArgumentMatchers.isA; import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.never; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import android.app.ActivityOptions; import android.app.WindowConfiguration; import android.app.servertransaction.ActivityConfigurationChangeItem; diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java index ea57588282f3..4dce451809f1 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java @@ -49,7 +49,7 @@ import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.os.Binder; diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotCacheTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotCacheTest.java index f9f161ac952d..98dee38a3f38 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotCacheTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotCacheTest.java @@ -23,7 +23,7 @@ import static junit.framework.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import android.platform.test.annotations.Presubmit; import androidx.test.filters.SmallTest; diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotControllerTest.java index ec65085ea4a8..4d37eb25744d 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotControllerTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotControllerTest.java @@ -33,7 +33,6 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.mockito.Mockito.when; -import android.app.ActivityManager; import android.app.WindowConfiguration; import android.content.ComponentName; import android.content.res.Configuration; @@ -44,6 +43,7 @@ import android.graphics.Rect; import android.hardware.HardwareBuffer; import android.platform.test.annotations.Presubmit; import android.util.ArraySet; +import android.window.TaskSnapshot; import androidx.test.filters.SmallTest; @@ -145,8 +145,8 @@ public class TaskSnapshotControllerTest extends WindowTestsBase { final Point taskSize = new Point(5, 6); try { - ActivityManager.TaskSnapshot.Builder builder = - new ActivityManager.TaskSnapshot.Builder(); + TaskSnapshot.Builder builder = + new TaskSnapshot.Builder(); builder.setId(id); builder.setTopActivityComponent(activityComponent); builder.setAppearance(appearance); @@ -163,7 +163,7 @@ public class TaskSnapshotControllerTest extends WindowTestsBase { // Not part of TaskSnapshot itself, used in screenshot process assertEquals(pixelFormat, builder.getPixelFormat()); - ActivityManager.TaskSnapshot snapshot = builder.build(); + TaskSnapshot snapshot = builder.build(); assertEquals(id, snapshot.getId()); assertEquals(activityComponent, snapshot.getTopActivityComponent()); assertEquals(appearance, snapshot.getAppearance()); @@ -211,8 +211,8 @@ public class TaskSnapshotControllerTest extends WindowTestsBase { doReturn(true).when(mAppWindow.mWinAnimator).getShown(); doReturn(true).when(mAppWindow.mActivityRecord).isSurfaceShowing(); - final ActivityManager.TaskSnapshot.Builder builder = - new ActivityManager.TaskSnapshot.Builder(); + final TaskSnapshot.Builder builder = + new TaskSnapshot.Builder(); boolean success = mWm.mTaskSnapshotController.prepareTaskSnapshot( mAppWindow.mActivityRecord.getTask(), PixelFormat.UNKNOWN, builder); diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotLowResDisabledTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotLowResDisabledTest.java index 8f913ddcc5b4..ec0ca01d14d9 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotLowResDisabledTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotLowResDisabledTest.java @@ -22,7 +22,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import android.content.res.Configuration; import android.graphics.Rect; import android.platform.test.annotations.Presubmit; diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterLoaderTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterLoaderTest.java index 8b908248dc48..70d71bc627c0 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterLoaderTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterLoaderTest.java @@ -31,7 +31,7 @@ import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.when; import android.app.ActivityManager; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import android.content.res.Configuration; import android.graphics.Rect; import android.os.SystemClock; diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterTestBase.java b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterTestBase.java index fcd46a3b4024..d9a794a24bc5 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterTestBase.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterTestBase.java @@ -28,7 +28,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import android.content.ComponentName; import android.content.ContextWrapper; import android.content.res.Resources; diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotSurfaceTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotSurfaceTest.java index 5ea73b830582..aa6386903746 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotSurfaceTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotSurfaceTest.java @@ -36,9 +36,8 @@ import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.eq; -import android.app.ActivityManager; import android.app.ActivityManager.TaskDescription; -import android.app.ActivityManager.TaskSnapshot; +import android.window.TaskSnapshot; import android.content.ComponentName; import android.graphics.Canvas; import android.graphics.Color; @@ -93,8 +92,8 @@ public class TaskSnapshotSurfaceTest extends WindowTestsBase { ACTIVITY_TYPE_STANDARD, new InsetsState()); } - private ActivityManager.TaskSnapshot createTaskSnapshot(int width, int height, Point taskSize, - Rect contentInsets) { + private TaskSnapshot createTaskSnapshot(int width, int height, + Point taskSize, Rect contentInsets) { final HardwareBuffer buffer = HardwareBuffer.create(width, height, HardwareBuffer.RGBA_8888, 1, HardwareBuffer.USAGE_CPU_READ_RARELY); return new TaskSnapshot( |