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

Commit f71a4db7 authored by Sudheer Shanka's avatar Sudheer Shanka Committed by Android (Google) Code Review
Browse files

Merge "Add a dev option flag to treat all "suspend" calls as "quarantine"." into main

parents 9be4653c b5e1164f
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -200,6 +200,12 @@ public class FeatureFlagUtils {
    public static final String SETTINGS_REMOTE_DEVICE_CREDENTIAL_VALIDATION =
    public static final String SETTINGS_REMOTE_DEVICE_CREDENTIAL_VALIDATION =
            "settings_remote_device_credential_validation";
            "settings_remote_device_credential_validation";


    /**
     * Flag to enable/disable to start treating any calls to "suspend" an app as "quarantine".
     * @hide
     */
    public static final String SETTINGS_TREAT_PAUSE_AS_QUARANTINE =
            "settings_treat_pause_as_quarantine";


    private static final Map<String, String> DEFAULT_FLAGS;
    private static final Map<String, String> DEFAULT_FLAGS;


@@ -247,6 +253,7 @@ public class FeatureFlagUtils {
        DEFAULT_FLAGS.put(SETTINGS_BIOMETRICS2_FINGERPRINT_SETTINGS, "false");
        DEFAULT_FLAGS.put(SETTINGS_BIOMETRICS2_FINGERPRINT_SETTINGS, "false");
        // TODO: b/298454866 Replace with Trunk Stable Feature Flag
        // TODO: b/298454866 Replace with Trunk Stable Feature Flag
        DEFAULT_FLAGS.put(SETTINGS_REMOTEAUTH_ENROLLMENT_SETTINGS, "false");
        DEFAULT_FLAGS.put(SETTINGS_REMOTEAUTH_ENROLLMENT_SETTINGS, "false");
        DEFAULT_FLAGS.put(SETTINGS_TREAT_PAUSE_AS_QUARANTINE, "false");
    }
    }


    private static final Set<String> PERSISTENT_FLAGS;
    private static final Set<String> PERSISTENT_FLAGS;
@@ -264,6 +271,7 @@ public class FeatureFlagUtils {
        PERSISTENT_FLAGS.add(SETTINGS_ENABLE_SPA);
        PERSISTENT_FLAGS.add(SETTINGS_ENABLE_SPA);
        PERSISTENT_FLAGS.add(SETTINGS_ENABLE_SPA_PHASE2);
        PERSISTENT_FLAGS.add(SETTINGS_ENABLE_SPA_PHASE2);
        PERSISTENT_FLAGS.add(SETTINGS_PREFER_ACCESSIBILITY_MENU_IN_SYSTEM);
        PERSISTENT_FLAGS.add(SETTINGS_PREFER_ACCESSIBILITY_MENU_IN_SYSTEM);
        PERSISTENT_FLAGS.add(SETTINGS_TREAT_PAUSE_AS_QUARANTINE);
    }
    }


    /**
    /**
+12 −2
Original line number Original line Diff line number Diff line
@@ -36,6 +36,7 @@ import static android.os.storage.StorageManager.FLAG_STORAGE_CE;
import static android.os.storage.StorageManager.FLAG_STORAGE_DE;
import static android.os.storage.StorageManager.FLAG_STORAGE_DE;
import static android.os.storage.StorageManager.FLAG_STORAGE_EXTERNAL;
import static android.os.storage.StorageManager.FLAG_STORAGE_EXTERNAL;
import static android.provider.DeviceConfig.NAMESPACE_PACKAGE_MANAGER_SERVICE;
import static android.provider.DeviceConfig.NAMESPACE_PACKAGE_MANAGER_SERVICE;
import static android.util.FeatureFlagUtils.SETTINGS_TREAT_PAUSE_AS_QUARANTINE;


import static com.android.internal.annotations.VisibleForTesting.Visibility;
import static com.android.internal.annotations.VisibleForTesting.Visibility;
import static com.android.internal.util.FrameworkStatsLog.BOOT_TIME_EVENT_DURATION__EVENT__OTA_PACKAGE_MANAGER_INIT_TIME;
import static com.android.internal.util.FrameworkStatsLog.BOOT_TIME_EVENT_DURATION__EVENT__OTA_PACKAGE_MANAGER_INIT_TIME;
@@ -164,6 +165,7 @@ import android.util.ArraySet;
import android.util.DisplayMetrics;
import android.util.DisplayMetrics;
import android.util.EventLog;
import android.util.EventLog;
import android.util.ExceptionUtils;
import android.util.ExceptionUtils;
import android.util.FeatureFlagUtils;
import android.util.Log;
import android.util.Log;
import android.util.Pair;
import android.util.Pair;
import android.util.Slog;
import android.util.Slog;
@@ -6133,8 +6135,16 @@ public class PackageManagerService implements PackageSender, TestUtilityService
            final Computer snapshot = snapshotComputer();
            final Computer snapshot = snapshotComputer();
            enforceCanSetPackagesSuspendedAsUser(snapshot, callingPackage, callingUid, userId,
            enforceCanSetPackagesSuspendedAsUser(snapshot, callingPackage, callingUid, userId,
                    "setPackagesSuspendedAsUser");
                    "setPackagesSuspendedAsUser");
            boolean quarantined = ((flags & PackageManager.FLAG_SUSPEND_QUARANTINED) != 0)
            boolean quarantined = false;
                    && Flags.quarantinedEnabled();
            if (Flags.quarantinedEnabled()) {
                if ((flags & PackageManager.FLAG_SUSPEND_QUARANTINED) != 0) {
                    quarantined = true;
                } else if (FeatureFlagUtils.isEnabled(mContext,
                        SETTINGS_TREAT_PAUSE_AS_QUARANTINE)) {
                    final String wellbeingPkg = mContext.getString(R.string.config_systemWellbeing);
                    quarantined = callingPackage.equals(wellbeingPkg);
                }
            }
            return mSuspendPackageHelper.setPackagesSuspended(snapshot, packageNames, suspended,
            return mSuspendPackageHelper.setPackagesSuspended(snapshot, packageNames, suspended,
                    appExtras, launcherExtras, dialogInfo, callingPackage, userId, callingUid,
                    appExtras, launcherExtras, dialogInfo, callingPackage, userId, callingUid,
                    false /* forQuietMode */, quarantined);
                    false /* forQuietMode */, quarantined);