summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMing-Shin Lu <lumark@google.com>2020-12-16 05:48:03 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-12-16 05:48:03 +0000
commit460e9b6bcea6c6352ef0460132147644e0e7afcb (patch)
treedafb0cf87fcb82e77550a47bb031bbaefcd0f498
parent1a55dfc1e17416a0db9968f02982925a56271af8 (diff)
parentb6c4b82ebf900ebc0dd79c7bead962f1f4878496 (diff)
Merge "Move TaskSnapshot into android.window package"
-rw-r--r--apct-tests/perftests/windowmanager/src/android/wm/RecentsAnimationPerfTest.java2
-rw-r--r--core/java/android/app/ActivityManager.aidl4
-rw-r--r--core/java/android/app/ActivityManager.java345
-rw-r--r--core/java/android/app/IActivityManager.aidl8
-rw-r--r--core/java/android/app/IActivityTaskManager.aidl2
-rw-r--r--core/java/android/app/ITaskStackListener.aidl3
-rw-r--r--core/java/android/app/TaskInfo.java5
-rw-r--r--core/java/android/app/TaskStackListener.java2
-rw-r--r--core/java/android/view/IRecentsAnimationController.aidl4
-rw-r--r--core/java/android/view/IRecentsAnimationRunner.aidl4
-rw-r--r--core/java/android/window/TaskSnapshot.aidl4
-rw-r--r--core/java/android/window/TaskSnapshot.java385
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/common/TaskStackListenerCallback.java4
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/common/TaskStackListenerImpl.java5
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/TaskStackListenerImplTest.java3
-rw-r--r--packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/ThumbnailData.java2
-rw-r--r--packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java4
-rw-r--r--packages/SystemUI/shared/src/com/android/systemui/shared/system/RecentsAnimationControllerCompat.java2
-rw-r--r--packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListeners.java2
-rw-r--r--services/contentsuggestions/java/com/android/server/contentsuggestions/ContentSuggestionsManagerService.java4
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java5
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java10
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java4
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskManagerService.java7
-rw-r--r--services/core/java/com/android/server/wm/RecentsAnimationController.java2
-rw-r--r--services/core/java/com/android/server/wm/SnapshotStartingData.java2
-rw-r--r--services/core/java/com/android/server/wm/Task.java4
-rw-r--r--services/core/java/com/android/server/wm/TaskChangeNotificationController.java2
-rw-r--r--services/core/java/com/android/server/wm/TaskSnapshotCache.java2
-rw-r--r--services/core/java/com/android/server/wm/TaskSnapshotController.java5
-rw-r--r--services/core/java/com/android/server/wm/TaskSnapshotLoader.java2
-rw-r--r--services/core/java/com/android/server/wm/TaskSnapshotPersister.java2
-rw-r--r--services/core/java/com/android/server/wm/TaskSnapshotSurface.java2
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TaskSnapshotCacheTest.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TaskSnapshotControllerTest.java12
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TaskSnapshotLowResDisabledTest.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterLoaderTest.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterTestBase.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TaskSnapshotSurfaceTest.java7
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(