Loading core/java/android/window/flags/windowing_frontend.aconfig +9 −0 Original line number Diff line number Diff line Loading @@ -432,3 +432,12 @@ flag { bug: "384976265" } flag { name: "check_disabled_snapshots_in_task_persister" namespace: "windowing_frontend" description: "Check for TaskSnapshots disabling in TaskSnapshotPersister." bug: "387915176" metadata { purpose: PURPOSE_BUGFIX } } services/core/java/com/android/server/wm/ActivitySnapshotController.java +9 −7 Original line number Diff line number Diff line Loading @@ -100,19 +100,21 @@ class ActivitySnapshotController extends AbsAppSnapshotController<ActivityRecord ActivitySnapshotController(WindowManagerService service, SnapshotPersistQueue persistQueue) { super(service); mSnapshotPersistQueue = persistQueue; mPersistInfoProvider = createPersistInfoProvider(service, Environment::getDataSystemCeDirectory); mPersister = new TaskSnapshotPersister(persistQueue, mPersistInfoProvider); mSnapshotLoader = new AppSnapshotLoader(mPersistInfoProvider); initialize(new ActivitySnapshotCache()); final boolean snapshotEnabled = !service.mContext .getResources() .getBoolean(com.android.internal.R.bool.config_disableTaskSnapshots) && !ActivityManager.isLowRamDeviceStatic(); // Don't support Android Go setSnapshotEnabled(snapshotEnabled); mSnapshotPersistQueue = persistQueue; mPersistInfoProvider = createPersistInfoProvider(service, Environment::getDataSystemCeDirectory); mPersister = new TaskSnapshotPersister( persistQueue, mPersistInfoProvider, shouldDisableSnapshots()); mSnapshotLoader = new AppSnapshotLoader(mPersistInfoProvider); initialize(new ActivitySnapshotCache()); } @Override Loading services/core/java/com/android/server/wm/TaskSnapshotController.java +8 −5 Original line number Diff line number Diff line Loading @@ -66,16 +66,19 @@ class TaskSnapshotController extends AbsAppSnapshotController<Task, TaskSnapshot TaskSnapshotController(WindowManagerService service, SnapshotPersistQueue persistQueue) { super(service); mPersistInfoProvider = createPersistInfoProvider(service, Environment::getDataSystemCeDirectory); mPersister = new TaskSnapshotPersister(persistQueue, mPersistInfoProvider); initialize(new TaskSnapshotCache(new AppSnapshotLoader(mPersistInfoProvider))); final boolean snapshotEnabled = !service.mContext .getResources() .getBoolean(com.android.internal.R.bool.config_disableTaskSnapshots); setSnapshotEnabled(snapshotEnabled); mPersistInfoProvider = createPersistInfoProvider(service, Environment::getDataSystemCeDirectory); mPersister = new TaskSnapshotPersister( persistQueue, mPersistInfoProvider, shouldDisableSnapshots()); initialize(new TaskSnapshotCache(new AppSnapshotLoader(mPersistInfoProvider))); } static PersistInfoProvider createPersistInfoProvider(WindowManagerService service, Loading services/core/java/com/android/server/wm/TaskSnapshotPersister.java +13 −2 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.window.TaskSnapshot; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.server.pm.UserManagerInternal; import com.android.window.flags.Flags; import java.io.File; import java.util.Arrays; Loading @@ -37,6 +38,8 @@ import java.util.Arrays; */ class TaskSnapshotPersister extends BaseAppSnapshotPersister { private final boolean mDisableSnapshots; /** * The list of ids of the tasks that have been persisted since {@link #removeObsoleteFiles} was * called. Loading @@ -45,8 +48,10 @@ class TaskSnapshotPersister extends BaseAppSnapshotPersister { private final ArraySet<Integer> mPersistedTaskIdsSinceLastRemoveObsolete = new ArraySet<>(); TaskSnapshotPersister(SnapshotPersistQueue persistQueue, PersistInfoProvider persistInfoProvider) { PersistInfoProvider persistInfoProvider, boolean disableSnapshots) { super(persistQueue, persistInfoProvider); mDisableSnapshots = Flags.checkDisabledSnapshotsInTaskPersister() && disableSnapshots; } /** Loading @@ -57,6 +62,9 @@ class TaskSnapshotPersister extends BaseAppSnapshotPersister { * @param snapshot The snapshot to persist. */ void persistSnapshot(int taskId, int userId, TaskSnapshot snapshot) { if (mDisableSnapshots) { return; } synchronized (mLock) { mPersistedTaskIdsSinceLastRemoveObsolete.add(taskId); super.persistSnapshot(taskId, userId, snapshot); Loading @@ -71,6 +79,9 @@ class TaskSnapshotPersister extends BaseAppSnapshotPersister { */ @Override void removeSnapshot(int taskId, int userId) { if (mDisableSnapshots) { return; } synchronized (mLock) { mPersistedTaskIdsSinceLastRemoveObsolete.remove(taskId); super.removeSnapshot(taskId, userId); Loading @@ -86,7 +97,7 @@ class TaskSnapshotPersister extends BaseAppSnapshotPersister { * model. */ void removeObsoleteFiles(ArraySet<Integer> persistentTaskIds, int[] runningUserIds) { if (runningUserIds.length == 0) { if (runningUserIds.length == 0 || mDisableSnapshots) { return; } synchronized (mLock) { Loading services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterTestBase.java +1 −1 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ class TaskSnapshotPersisterTestBase extends WindowTestsBase { mSnapshotPersistQueue = new SnapshotPersistQueue(); PersistInfoProvider provider = TaskSnapshotController.createPersistInfoProvider(mWm, userId -> FILES_DIR); mPersister = new TaskSnapshotPersister(mSnapshotPersistQueue, provider); mPersister = new TaskSnapshotPersister(mSnapshotPersistQueue, provider, false); mLoader = new AppSnapshotLoader(provider); mSnapshotPersistQueue.start(); } Loading Loading
core/java/android/window/flags/windowing_frontend.aconfig +9 −0 Original line number Diff line number Diff line Loading @@ -432,3 +432,12 @@ flag { bug: "384976265" } flag { name: "check_disabled_snapshots_in_task_persister" namespace: "windowing_frontend" description: "Check for TaskSnapshots disabling in TaskSnapshotPersister." bug: "387915176" metadata { purpose: PURPOSE_BUGFIX } }
services/core/java/com/android/server/wm/ActivitySnapshotController.java +9 −7 Original line number Diff line number Diff line Loading @@ -100,19 +100,21 @@ class ActivitySnapshotController extends AbsAppSnapshotController<ActivityRecord ActivitySnapshotController(WindowManagerService service, SnapshotPersistQueue persistQueue) { super(service); mSnapshotPersistQueue = persistQueue; mPersistInfoProvider = createPersistInfoProvider(service, Environment::getDataSystemCeDirectory); mPersister = new TaskSnapshotPersister(persistQueue, mPersistInfoProvider); mSnapshotLoader = new AppSnapshotLoader(mPersistInfoProvider); initialize(new ActivitySnapshotCache()); final boolean snapshotEnabled = !service.mContext .getResources() .getBoolean(com.android.internal.R.bool.config_disableTaskSnapshots) && !ActivityManager.isLowRamDeviceStatic(); // Don't support Android Go setSnapshotEnabled(snapshotEnabled); mSnapshotPersistQueue = persistQueue; mPersistInfoProvider = createPersistInfoProvider(service, Environment::getDataSystemCeDirectory); mPersister = new TaskSnapshotPersister( persistQueue, mPersistInfoProvider, shouldDisableSnapshots()); mSnapshotLoader = new AppSnapshotLoader(mPersistInfoProvider); initialize(new ActivitySnapshotCache()); } @Override Loading
services/core/java/com/android/server/wm/TaskSnapshotController.java +8 −5 Original line number Diff line number Diff line Loading @@ -66,16 +66,19 @@ class TaskSnapshotController extends AbsAppSnapshotController<Task, TaskSnapshot TaskSnapshotController(WindowManagerService service, SnapshotPersistQueue persistQueue) { super(service); mPersistInfoProvider = createPersistInfoProvider(service, Environment::getDataSystemCeDirectory); mPersister = new TaskSnapshotPersister(persistQueue, mPersistInfoProvider); initialize(new TaskSnapshotCache(new AppSnapshotLoader(mPersistInfoProvider))); final boolean snapshotEnabled = !service.mContext .getResources() .getBoolean(com.android.internal.R.bool.config_disableTaskSnapshots); setSnapshotEnabled(snapshotEnabled); mPersistInfoProvider = createPersistInfoProvider(service, Environment::getDataSystemCeDirectory); mPersister = new TaskSnapshotPersister( persistQueue, mPersistInfoProvider, shouldDisableSnapshots()); initialize(new TaskSnapshotCache(new AppSnapshotLoader(mPersistInfoProvider))); } static PersistInfoProvider createPersistInfoProvider(WindowManagerService service, Loading
services/core/java/com/android/server/wm/TaskSnapshotPersister.java +13 −2 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.window.TaskSnapshot; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.server.pm.UserManagerInternal; import com.android.window.flags.Flags; import java.io.File; import java.util.Arrays; Loading @@ -37,6 +38,8 @@ import java.util.Arrays; */ class TaskSnapshotPersister extends BaseAppSnapshotPersister { private final boolean mDisableSnapshots; /** * The list of ids of the tasks that have been persisted since {@link #removeObsoleteFiles} was * called. Loading @@ -45,8 +48,10 @@ class TaskSnapshotPersister extends BaseAppSnapshotPersister { private final ArraySet<Integer> mPersistedTaskIdsSinceLastRemoveObsolete = new ArraySet<>(); TaskSnapshotPersister(SnapshotPersistQueue persistQueue, PersistInfoProvider persistInfoProvider) { PersistInfoProvider persistInfoProvider, boolean disableSnapshots) { super(persistQueue, persistInfoProvider); mDisableSnapshots = Flags.checkDisabledSnapshotsInTaskPersister() && disableSnapshots; } /** Loading @@ -57,6 +62,9 @@ class TaskSnapshotPersister extends BaseAppSnapshotPersister { * @param snapshot The snapshot to persist. */ void persistSnapshot(int taskId, int userId, TaskSnapshot snapshot) { if (mDisableSnapshots) { return; } synchronized (mLock) { mPersistedTaskIdsSinceLastRemoveObsolete.add(taskId); super.persistSnapshot(taskId, userId, snapshot); Loading @@ -71,6 +79,9 @@ class TaskSnapshotPersister extends BaseAppSnapshotPersister { */ @Override void removeSnapshot(int taskId, int userId) { if (mDisableSnapshots) { return; } synchronized (mLock) { mPersistedTaskIdsSinceLastRemoveObsolete.remove(taskId); super.removeSnapshot(taskId, userId); Loading @@ -86,7 +97,7 @@ class TaskSnapshotPersister extends BaseAppSnapshotPersister { * model. */ void removeObsoleteFiles(ArraySet<Integer> persistentTaskIds, int[] runningUserIds) { if (runningUserIds.length == 0) { if (runningUserIds.length == 0 || mDisableSnapshots) { return; } synchronized (mLock) { Loading
services/tests/wmtests/src/com/android/server/wm/TaskSnapshotPersisterTestBase.java +1 −1 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ class TaskSnapshotPersisterTestBase extends WindowTestsBase { mSnapshotPersistQueue = new SnapshotPersistQueue(); PersistInfoProvider provider = TaskSnapshotController.createPersistInfoProvider(mWm, userId -> FILES_DIR); mPersister = new TaskSnapshotPersister(mSnapshotPersistQueue, provider); mPersister = new TaskSnapshotPersister(mSnapshotPersistQueue, provider, false); mLoader = new AppSnapshotLoader(provider); mSnapshotPersistQueue.start(); } Loading