Loading core/java/android/app/admin/flags/flags.aconfig +8 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,14 @@ flag { bug: "263464464" } flag { name: "cross_user_suspension_enabled_ro" namespace: "enterprise" description: "Allow holders of INTERACT_ACROSS_USERS_FULL to suspend apps in different users." bug: "263464464" is_fixed_read_only: true } flag { name: "dedicated_device_control_enabled" namespace: "enterprise" Loading core/java/com/android/internal/app/SuspendedAppActivity.java +3 −3 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ package com.android.internal.app; import static android.app.admin.flags.Flags.crossUserSuspensionEnabled; import static android.app.admin.flags.Flags.crossUserSuspensionEnabledRo; import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE; import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE; import static android.content.pm.SuspendDialogInfo.BUTTON_ACTION_MORE_DETAILS; Loading Loading @@ -234,7 +234,7 @@ public class SuspendedAppActivity extends AlertActivity } mSuspendedPackage = intent.getStringExtra(EXTRA_SUSPENDED_PACKAGE); mSuspendingPackage = intent.getStringExtra(EXTRA_SUSPENDING_PACKAGE); if (crossUserSuspensionEnabled()) { if (crossUserSuspensionEnabledRo()) { mSuspendingUserId = intent.getIntExtra(EXTRA_SUSPENDING_USER, mUserId); } else { mSuspendingUserId = mUserId; Loading Loading @@ -373,7 +373,7 @@ public class SuspendedAppActivity extends AlertActivity .putExtra(Intent.EXTRA_USER_ID, userId) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); if (crossUserSuspensionEnabled() && suspendingPackage != null) { if (crossUserSuspensionEnabledRo() && suspendingPackage != null) { intent.putExtra(EXTRA_SUSPENDING_USER, suspendingPackage.userId); } return intent; Loading services/core/java/com/android/server/pm/PackageManagerInternalBase.java +3 −3 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ package com.android.server.pm; import static android.app.admin.flags.Flags.crossUserSuspensionEnabled; import static android.app.admin.flags.Flags.crossUserSuspensionEnabledRo; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; import static android.content.pm.PackageManager.RESTRICTION_NONE; Loading Loading @@ -690,7 +690,7 @@ abstract class PackageManagerInternalBase extends PackageManagerInternal { @Deprecated public final void unsuspendAdminSuspendedPackages(int affectedUser) { final int suspendingUserId = crossUserSuspensionEnabled() ? UserHandle.USER_SYSTEM : affectedUser; crossUserSuspensionEnabledRo() ? UserHandle.USER_SYSTEM : affectedUser; mService.unsuspendForSuspendingPackage( snapshot(), PLATFORM_PACKAGE_NAME, suspendingUserId, /* inAllUsers= */ false); } Loading @@ -699,7 +699,7 @@ abstract class PackageManagerInternalBase extends PackageManagerInternal { @Deprecated public final boolean isAdminSuspendingAnyPackages(int userId) { final int suspendingUserId = crossUserSuspensionEnabled() ? UserHandle.USER_SYSTEM : userId; crossUserSuspensionEnabledRo() ? UserHandle.USER_SYSTEM : userId; return snapshot().isSuspendingAnyPackages(PLATFORM_PACKAGE_NAME, suspendingUserId, userId); } Loading services/core/java/com/android/server/pm/PackageManagerService.java +6 −6 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ package com.android.server.pm; import static android.Manifest.permission.MANAGE_DEVICE_ADMINS; import static android.Manifest.permission.SET_HARMFUL_APP_WARNINGS; import static android.app.AppOpsManager.MODE_IGNORED; import static android.app.admin.flags.Flags.crossUserSuspensionEnabled; import static android.app.admin.flags.Flags.crossUserSuspensionEnabledRo; import static android.content.pm.PackageManager.APP_METADATA_SOURCE_APK; import static android.content.pm.PackageManager.APP_METADATA_SOURCE_UNKNOWN; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; Loading Loading @@ -3182,7 +3182,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService callingMethod); } if (crossUserSuspensionEnabled()) { if (crossUserSuspensionEnabledRo()) { final int suspendingPackageUid = snapshot.getPackageUid(suspender.packageName, 0, suspender.userId); if (suspendingPackageUid != callingUid) { Loading Loading @@ -3220,7 +3220,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService final String[] allPackages = computer.getPackageStates().keySet().toArray(new String[0]); final Predicate<UserPackage> suspenderPredicate = UserPackage.of(suspendingUserId, suspendingPackage)::equals; if (!crossUserSuspensionEnabled() || !inAllUsers) { if (!crossUserSuspensionEnabledRo() || !inAllUsers) { mSuspendPackageHelper.removeSuspensionsBySuspendingPackage(computer, allPackages, suspenderPredicate, suspendingUserId); } else { Loading Loading @@ -4366,7 +4366,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService } mInstantAppRegistry.onUserRemoved(userId); mPackageMonitorCallbackHelper.onUserRemoved(userId); if (crossUserSuspensionEnabled()) { if (crossUserSuspensionEnabledRo()) { cleanUpCrossUserSuspension(userId); } } Loading Loading @@ -6302,7 +6302,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService final boolean quarantined = ((flags & PackageManager.FLAG_SUSPEND_QUARANTINED) != 0) && Flags.quarantinedEnabled(); final Computer snapshot = snapshotComputer(); final UserPackage suspender = crossUserSuspensionEnabled() final UserPackage suspender = crossUserSuspensionEnabledRo() ? UserPackage.of(suspendingUserId, suspendingPackage) : UserPackage.of(targetUserId, suspendingPackage); enforceCanSetPackagesSuspendedAsUser(snapshot, quarantined, suspender, callingUid, Loading Loading @@ -6787,7 +6787,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService // Suspension by admin isn't attributed to admin package but to the platform, // Using USER_SYSTEM for consistency with other internal suspenders, like shell or root. final int suspendingUserId = crossUserSuspensionEnabled() ? UserHandle.USER_SYSTEM : userId; crossUserSuspensionEnabledRo() ? UserHandle.USER_SYSTEM : userId; final UserPackage suspender = UserPackage.of( suspendingUserId, PackageManagerService.PLATFORM_PACKAGE_NAME); return mSuspendPackageHelper.setPackagesSuspended(snapshotComputer(), packageNames, Loading services/core/java/com/android/server/pm/PackageSetting.java +2 −2 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ package com.android.server.pm; import static android.app.admin.flags.Flags.crossUserSuspensionEnabled; import static android.app.admin.flags.Flags.crossUserSuspensionEnabledRo; import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_DEFAULT_TO_DEVICE_PROTECTED_STORAGE; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED; Loading Loading @@ -1241,7 +1241,7 @@ public class PackageSetting extends SettingBase implements PackageStateInternal for (int j = 0; j < state.getSuspendParams().size(); j++) { proto.write(PackageProto.UserInfoProto.SUSPENDING_PACKAGE, state.getSuspendParams().keyAt(j).packageName); if (crossUserSuspensionEnabled()) { if (crossUserSuspensionEnabledRo()) { proto.write(PackageProto.UserInfoProto.SUSPENDING_USER, state.getSuspendParams().keyAt(j).userId); } Loading Loading
core/java/android/app/admin/flags/flags.aconfig +8 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,14 @@ flag { bug: "263464464" } flag { name: "cross_user_suspension_enabled_ro" namespace: "enterprise" description: "Allow holders of INTERACT_ACROSS_USERS_FULL to suspend apps in different users." bug: "263464464" is_fixed_read_only: true } flag { name: "dedicated_device_control_enabled" namespace: "enterprise" Loading
core/java/com/android/internal/app/SuspendedAppActivity.java +3 −3 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ package com.android.internal.app; import static android.app.admin.flags.Flags.crossUserSuspensionEnabled; import static android.app.admin.flags.Flags.crossUserSuspensionEnabledRo; import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE; import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE; import static android.content.pm.SuspendDialogInfo.BUTTON_ACTION_MORE_DETAILS; Loading Loading @@ -234,7 +234,7 @@ public class SuspendedAppActivity extends AlertActivity } mSuspendedPackage = intent.getStringExtra(EXTRA_SUSPENDED_PACKAGE); mSuspendingPackage = intent.getStringExtra(EXTRA_SUSPENDING_PACKAGE); if (crossUserSuspensionEnabled()) { if (crossUserSuspensionEnabledRo()) { mSuspendingUserId = intent.getIntExtra(EXTRA_SUSPENDING_USER, mUserId); } else { mSuspendingUserId = mUserId; Loading Loading @@ -373,7 +373,7 @@ public class SuspendedAppActivity extends AlertActivity .putExtra(Intent.EXTRA_USER_ID, userId) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); if (crossUserSuspensionEnabled() && suspendingPackage != null) { if (crossUserSuspensionEnabledRo() && suspendingPackage != null) { intent.putExtra(EXTRA_SUSPENDING_USER, suspendingPackage.userId); } return intent; Loading
services/core/java/com/android/server/pm/PackageManagerInternalBase.java +3 −3 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ package com.android.server.pm; import static android.app.admin.flags.Flags.crossUserSuspensionEnabled; import static android.app.admin.flags.Flags.crossUserSuspensionEnabledRo; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; import static android.content.pm.PackageManager.RESTRICTION_NONE; Loading Loading @@ -690,7 +690,7 @@ abstract class PackageManagerInternalBase extends PackageManagerInternal { @Deprecated public final void unsuspendAdminSuspendedPackages(int affectedUser) { final int suspendingUserId = crossUserSuspensionEnabled() ? UserHandle.USER_SYSTEM : affectedUser; crossUserSuspensionEnabledRo() ? UserHandle.USER_SYSTEM : affectedUser; mService.unsuspendForSuspendingPackage( snapshot(), PLATFORM_PACKAGE_NAME, suspendingUserId, /* inAllUsers= */ false); } Loading @@ -699,7 +699,7 @@ abstract class PackageManagerInternalBase extends PackageManagerInternal { @Deprecated public final boolean isAdminSuspendingAnyPackages(int userId) { final int suspendingUserId = crossUserSuspensionEnabled() ? UserHandle.USER_SYSTEM : userId; crossUserSuspensionEnabledRo() ? UserHandle.USER_SYSTEM : userId; return snapshot().isSuspendingAnyPackages(PLATFORM_PACKAGE_NAME, suspendingUserId, userId); } Loading
services/core/java/com/android/server/pm/PackageManagerService.java +6 −6 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ package com.android.server.pm; import static android.Manifest.permission.MANAGE_DEVICE_ADMINS; import static android.Manifest.permission.SET_HARMFUL_APP_WARNINGS; import static android.app.AppOpsManager.MODE_IGNORED; import static android.app.admin.flags.Flags.crossUserSuspensionEnabled; import static android.app.admin.flags.Flags.crossUserSuspensionEnabledRo; import static android.content.pm.PackageManager.APP_METADATA_SOURCE_APK; import static android.content.pm.PackageManager.APP_METADATA_SOURCE_UNKNOWN; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; Loading Loading @@ -3182,7 +3182,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService callingMethod); } if (crossUserSuspensionEnabled()) { if (crossUserSuspensionEnabledRo()) { final int suspendingPackageUid = snapshot.getPackageUid(suspender.packageName, 0, suspender.userId); if (suspendingPackageUid != callingUid) { Loading Loading @@ -3220,7 +3220,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService final String[] allPackages = computer.getPackageStates().keySet().toArray(new String[0]); final Predicate<UserPackage> suspenderPredicate = UserPackage.of(suspendingUserId, suspendingPackage)::equals; if (!crossUserSuspensionEnabled() || !inAllUsers) { if (!crossUserSuspensionEnabledRo() || !inAllUsers) { mSuspendPackageHelper.removeSuspensionsBySuspendingPackage(computer, allPackages, suspenderPredicate, suspendingUserId); } else { Loading Loading @@ -4366,7 +4366,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService } mInstantAppRegistry.onUserRemoved(userId); mPackageMonitorCallbackHelper.onUserRemoved(userId); if (crossUserSuspensionEnabled()) { if (crossUserSuspensionEnabledRo()) { cleanUpCrossUserSuspension(userId); } } Loading Loading @@ -6302,7 +6302,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService final boolean quarantined = ((flags & PackageManager.FLAG_SUSPEND_QUARANTINED) != 0) && Flags.quarantinedEnabled(); final Computer snapshot = snapshotComputer(); final UserPackage suspender = crossUserSuspensionEnabled() final UserPackage suspender = crossUserSuspensionEnabledRo() ? UserPackage.of(suspendingUserId, suspendingPackage) : UserPackage.of(targetUserId, suspendingPackage); enforceCanSetPackagesSuspendedAsUser(snapshot, quarantined, suspender, callingUid, Loading Loading @@ -6787,7 +6787,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService // Suspension by admin isn't attributed to admin package but to the platform, // Using USER_SYSTEM for consistency with other internal suspenders, like shell or root. final int suspendingUserId = crossUserSuspensionEnabled() ? UserHandle.USER_SYSTEM : userId; crossUserSuspensionEnabledRo() ? UserHandle.USER_SYSTEM : userId; final UserPackage suspender = UserPackage.of( suspendingUserId, PackageManagerService.PLATFORM_PACKAGE_NAME); return mSuspendPackageHelper.setPackagesSuspended(snapshotComputer(), packageNames, Loading
services/core/java/com/android/server/pm/PackageSetting.java +2 −2 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ package com.android.server.pm; import static android.app.admin.flags.Flags.crossUserSuspensionEnabled; import static android.app.admin.flags.Flags.crossUserSuspensionEnabledRo; import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_DEFAULT_TO_DEVICE_PROTECTED_STORAGE; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED; Loading Loading @@ -1241,7 +1241,7 @@ public class PackageSetting extends SettingBase implements PackageStateInternal for (int j = 0; j < state.getSuspendParams().size(); j++) { proto.write(PackageProto.UserInfoProto.SUSPENDING_PACKAGE, state.getSuspendParams().keyAt(j).packageName); if (crossUserSuspensionEnabled()) { if (crossUserSuspensionEnabledRo()) { proto.write(PackageProto.UserInfoProto.SUSPENDING_USER, state.getSuspendParams().keyAt(j).userId); } Loading