Add a new API to control task snapshot behavior.

Bug: 193962530
Test: manual test
Change-Id: I600efcafad0ad3118fc704533d56d2c9180f3308
(cherry picked from commit 583107258411942cd25fa0c5071480a94d3beea7)
This commit is contained in:
Josh Yang
2021-07-21 17:36:50 -07:00
committed by yzj
parent 32a2d5374f
commit b780cae772
3 changed files with 23 additions and 13 deletions

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -8668,4 +8668,9 @@ public class WindowManagerService extends IWindowManager.Stub
: DEFAULT_DISPLAY;
}
}
@Override
public void setTaskSnapshotEnabled(boolean enabled) {
mTaskSnapshotController.setTaskSnapshotEnabled(enabled);
}
}