Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 265bf0b2 authored by Gregory Montoir's avatar Gregory Montoir Committed by Android (Google) Code Review
Browse files

Merge "Add check for disableSnapshot in TaskSnapshotPersister" into main

parents 91e75541 c99cabd6
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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
    }
}
+9 −7
Original line number Diff line number Diff line
@@ -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
+8 −5
Original line number Diff line number Diff line
@@ -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,
+13 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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.
@@ -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;
    }

    /**
@@ -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);
@@ -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);
@@ -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) {
+1 −1
Original line number Diff line number Diff line
@@ -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();
    }