From b780cae7729441ce98ba90917d9bc4fb28695790 Mon Sep 17 00:00:00 2001 From: Josh Yang Date: Wed, 21 Jul 2021 17:36:50 -0700 Subject: [PATCH] Add a new API to control task snapshot behavior. Bug: 193962530 Test: manual test Change-Id: I600efcafad0ad3118fc704533d56d2c9180f3308 (cherry picked from commit 583107258411942cd25fa0c5071480a94d3beea7) --- core/java/android/view/IWindowManager.aidl | 6 +++++ .../server/wm/TaskSnapshotController.java | 25 +++++++++---------- .../server/wm/WindowManagerService.java | 5 ++++ 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl index 9ce412222e2e6..8c2348c5d438d 100644 --- a/core/java/android/view/IWindowManager.aidl +++ b/core/java/android/view/IWindowManager.aidl @@ -875,4 +875,10 @@ interface IWindowManager * @see android.window.WindowProviderService#getLaunchedDisplayId */ int getImeDisplayId(); + + /** + * Control if we should enable task snapshot features on this device. + * @hide + */ + void setTaskSnapshotEnabled(boolean enabled); } diff --git a/services/core/java/com/android/server/wm/TaskSnapshotController.java b/services/core/java/com/android/server/wm/TaskSnapshotController.java index c85615d258e93..54390dc6b58ca 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotController.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotController.java @@ -114,14 +114,9 @@ class TaskSnapshotController { private final boolean mIsRunningOnIoT; /** - * Flag indicating whether we are running on an Android Wear device. + * Flag indicating if task snapshot is enabled on this device. */ - private final boolean mIsRunningOnWear; - - /** - * Flag indicating if device configuration has disabled app snapshots. - */ - private final boolean mConfigDisableTaskSnapshots; + private boolean mTaskSnapshotEnabled; TaskSnapshotController(WindowManagerService service) { mService = service; @@ -132,12 +127,12 @@ class TaskSnapshotController { PackageManager.FEATURE_LEANBACK); mIsRunningOnIoT = mService.mContext.getPackageManager().hasSystemFeature( PackageManager.FEATURE_EMBEDDED); - mIsRunningOnWear = mService.mContext.getPackageManager().hasSystemFeature( - PackageManager.FEATURE_WATCH); mHighResTaskSnapshotScale = mService.mContext.getResources().getFloat( com.android.internal.R.dimen.config_highResTaskSnapshotScale); - mConfigDisableTaskSnapshots = mService.mContext.getResources().getBoolean( - com.android.internal.R.bool.config_disableTaskSnapshots); + mTaskSnapshotEnabled = + !mService.mContext + .getResources() + .getBoolean(com.android.internal.R.bool.config_disableTaskSnapshots); } void systemReady() { @@ -494,9 +489,12 @@ class TaskSnapshotController { return builder.build(); } + void setTaskSnapshotEnabled(boolean enabled) { + mTaskSnapshotEnabled = enabled; + } + boolean shouldDisableSnapshots() { - return mIsRunningOnWear || mIsRunningOnTv || mIsRunningOnIoT - || mConfigDisableTaskSnapshots; + return mIsRunningOnTv || mIsRunningOnIoT || !mTaskSnapshotEnabled; } /** @@ -696,6 +694,7 @@ class TaskSnapshotController { void dump(PrintWriter pw, String prefix) { pw.println(prefix + "mHighResTaskSnapshotScale=" + mHighResTaskSnapshotScale); + pw.println(prefix + "mTaskSnapshotEnabled=" + mTaskSnapshotEnabled); mCache.dump(pw, prefix); } } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index ffbfe1e78d88d..3d6c9c91c98e0 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -8668,4 +8668,9 @@ public class WindowManagerService extends IWindowManager.Stub : DEFAULT_DISPLAY; } } + + @Override + public void setTaskSnapshotEnabled(boolean enabled) { + mTaskSnapshotController.setTaskSnapshotEnabled(enabled); + } }