Loading core/java/android/util/FeatureFlagUtils.java +0 −9 Original line number Original line Diff line number Diff line Loading @@ -194,13 +194,6 @@ 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; static { static { Loading Loading @@ -246,7 +239,6 @@ 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,7 +256,6 @@ 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 +4 −21 Original line number Original line Diff line number Diff line Loading @@ -38,7 +38,6 @@ 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 @@ -168,7 +167,6 @@ 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 @@ -3208,15 +3206,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService } } if (quarantined) { if (quarantined) { final boolean hasQuarantineAppsPerm = mContext.checkCallingOrSelfPermission( mContext.enforceCallingOrSelfPermission(android.Manifest.permission.QUARANTINE_APPS, android.Manifest.permission.QUARANTINE_APPS) == PERMISSION_GRANTED; // TODO: b/305256093 - In order to facilitate testing, temporarily allowing apps // with SUSPEND_APPS permission to quarantine apps. Remove this once the testing // is done and this is no longer needed. if (!hasQuarantineAppsPerm) { mContext.enforceCallingOrSelfPermission(android.Manifest.permission.SUSPEND_APPS, callingMethod); callingMethod); } } else { } else { mContext.enforceCallingOrSelfPermission(android.Manifest.permission.SUSPEND_APPS, mContext.enforceCallingOrSelfPermission(android.Manifest.permission.SUSPEND_APPS, callingMethod); callingMethod); Loading Loading @@ -6287,16 +6278,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService SuspendDialogInfo dialogInfo, int flags, String suspendingPackage, SuspendDialogInfo dialogInfo, int flags, String suspendingPackage, int suspendingUserId, int targetUserId) { int suspendingUserId, int targetUserId) { final int callingUid = Binder.getCallingUid(); final int callingUid = Binder.getCallingUid(); boolean quarantined = false; final boolean quarantined = ((flags & PackageManager.FLAG_SUSPEND_QUARANTINED) != 0) if (Flags.quarantinedEnabled()) { && 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 = suspendingPackage.equals(wellbeingPkg); } } final Computer snapshot = snapshotComputer(); final Computer snapshot = snapshotComputer(); final UserPackage suspender = UserPackage.of(targetUserId, suspendingPackage); final UserPackage suspender = UserPackage.of(targetUserId, suspendingPackage); enforceCanSetPackagesSuspendedAsUser(snapshot, quarantined, suspender, callingUid, enforceCanSetPackagesSuspendedAsUser(snapshot, quarantined, suspender, callingUid, Loading Loading
core/java/android/util/FeatureFlagUtils.java +0 −9 Original line number Original line Diff line number Diff line Loading @@ -194,13 +194,6 @@ 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; static { static { Loading Loading @@ -246,7 +239,6 @@ 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,7 +256,6 @@ 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 +4 −21 Original line number Original line Diff line number Diff line Loading @@ -38,7 +38,6 @@ 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 @@ -168,7 +167,6 @@ 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 @@ -3208,15 +3206,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService } } if (quarantined) { if (quarantined) { final boolean hasQuarantineAppsPerm = mContext.checkCallingOrSelfPermission( mContext.enforceCallingOrSelfPermission(android.Manifest.permission.QUARANTINE_APPS, android.Manifest.permission.QUARANTINE_APPS) == PERMISSION_GRANTED; // TODO: b/305256093 - In order to facilitate testing, temporarily allowing apps // with SUSPEND_APPS permission to quarantine apps. Remove this once the testing // is done and this is no longer needed. if (!hasQuarantineAppsPerm) { mContext.enforceCallingOrSelfPermission(android.Manifest.permission.SUSPEND_APPS, callingMethod); callingMethod); } } else { } else { mContext.enforceCallingOrSelfPermission(android.Manifest.permission.SUSPEND_APPS, mContext.enforceCallingOrSelfPermission(android.Manifest.permission.SUSPEND_APPS, callingMethod); callingMethod); Loading Loading @@ -6287,16 +6278,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService SuspendDialogInfo dialogInfo, int flags, String suspendingPackage, SuspendDialogInfo dialogInfo, int flags, String suspendingPackage, int suspendingUserId, int targetUserId) { int suspendingUserId, int targetUserId) { final int callingUid = Binder.getCallingUid(); final int callingUid = Binder.getCallingUid(); boolean quarantined = false; final boolean quarantined = ((flags & PackageManager.FLAG_SUSPEND_QUARANTINED) != 0) if (Flags.quarantinedEnabled()) { && 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 = suspendingPackage.equals(wellbeingPkg); } } final Computer snapshot = snapshotComputer(); final Computer snapshot = snapshotComputer(); final UserPackage suspender = UserPackage.of(targetUserId, suspendingPackage); final UserPackage suspender = UserPackage.of(targetUserId, suspendingPackage); enforceCanSetPackagesSuspendedAsUser(snapshot, quarantined, suspender, callingUid, enforceCanSetPackagesSuspendedAsUser(snapshot, quarantined, suspender, callingUid, Loading