Loading core/java/android/util/FeatureFlagUtils.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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); } } /** /** Loading services/core/java/com/android/server/pm/PackageManagerService.java +12 −2 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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); Loading Loading
core/java/android/util/FeatureFlagUtils.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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); } } /** /** Loading
services/core/java/com/android/server/pm/PackageManagerService.java +12 −2 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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); Loading