summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Pavel Grafov <pgrafov@google.com> 2023-11-03 17:09:01 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-11-03 17:09:01 +0000
commit33ff21386c5a44a2c6719195d89eb0f2ace39951 (patch)
tree224d8fbf9af29c0b3ab078a7e2526da0fa54123d
parent5a30cec2c6a708146fbcee22212cf688c0fe1ef6 (diff)
parentc600a4415959227e387bbbae4306f4a670b95286 (diff)
Merge "Delete TurnOffWork 2.0 code" into main
-rw-r--r--core/api/test-current.txt1
-rw-r--r--core/java/android/app/admin/DevicePolicyManager.java17
-rw-r--r--core/java/android/app/admin/DevicePolicyManagerInternal.java10
-rw-r--r--core/java/android/app/admin/IDevicePolicyManager.aidl2
-rw-r--r--services/core/java/android/content/pm/PackageManagerInternal.java8
-rw-r--r--services/core/java/com/android/server/am/UserController.java5
-rwxr-xr-xservices/core/java/com/android/server/notification/NotificationManagerService.java8
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java12
-rw-r--r--services/core/java/com/android/server/pm/SuspendPackageHelper.java107
-rw-r--r--services/core/java/com/android/server/pm/UserManagerService.java81
-rw-r--r--services/core/java/com/android/server/wm/ActivityStartInterceptor.java10
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyData.java8
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java64
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/pm/PackageHelperTestBase.kt4
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/pm/SuspendPackageHelperTest.kt44
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/ActivityStartInterceptorTest.java40
16 files changed, 77 insertions, 344 deletions
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 258ff312259c..0ab3f80dd088 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -575,7 +575,6 @@ package android.app.admin {
method @RequiresPermission(android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS) public boolean setDeviceOwnerOnly(@NonNull android.content.ComponentName, int);
method public void setDeviceOwnerType(@NonNull android.content.ComponentName, int);
method @RequiresPermission(android.Manifest.permission.MANAGE_DEVICE_ADMINS) public void setNextOperationSafety(int, int);
- method @RequiresPermission(android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS) public void setOverrideKeepProfilesRunning(boolean);
method @RequiresPermission(anyOf={android.Manifest.permission.MARK_DEVICE_ORGANIZATION_OWNED, android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS}, conditional=true) public void setProfileOwnerOnOrganizationOwnedDevice(@NonNull android.content.ComponentName, boolean);
method @RequiresPermission(android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS) public boolean triggerDevicePolicyEngineMigration(boolean);
field public static final String ACTION_DATA_SHARING_RESTRICTION_APPLIED = "android.app.action.DATA_SHARING_RESTRICTION_APPLIED";
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index a46c1006d314..4c70c914ff21 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -17048,23 +17048,6 @@ public class DevicePolicyManager {
}
/**
- * Overrides the effective cached value of enable_keep_profiles_running for testing purposes.
- *
- * @hide
- */
- @TestApi
- @RequiresPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS)
- public void setOverrideKeepProfilesRunning(boolean enabled) {
- if (mService != null) {
- try {
- mService.setOverrideKeepProfilesRunning(enabled);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
- }
-
- /**
* Triggers the data migration of device policies for existing DPCs to the Device Policy Engine.
* If {@code forceMigration} is set to {@code true} it skips the prerequisite checks before
* triggering the migration.
diff --git a/core/java/android/app/admin/DevicePolicyManagerInternal.java b/core/java/android/app/admin/DevicePolicyManagerInternal.java
index 8dd50f0c42e8..304359bc6105 100644
--- a/core/java/android/app/admin/DevicePolicyManagerInternal.java
+++ b/core/java/android/app/admin/DevicePolicyManagerInternal.java
@@ -312,21 +312,11 @@ public abstract class DevicePolicyManagerInternal {
int targetUserId);
/**
- * Returns whether new "turn off work" behavior is enabled via feature flag.
- */
- public abstract boolean isKeepProfilesRunningEnabled();
-
- /**
* True if either the entire device or the user is organization managed.
*/
public abstract boolean isUserOrganizationManaged(@UserIdInt int userId);
/**
- * Returns the list of packages suspended by admin on a given user.
- */
- public abstract Set<String> getPackagesSuspendedByAdmin(@UserIdInt int userId);
-
- /**
* Returns whether the application exemptions feature flag is enabled.
*/
public abstract boolean isApplicationExemptionsFlagEnabled();
diff --git a/core/java/android/app/admin/IDevicePolicyManager.aidl b/core/java/android/app/admin/IDevicePolicyManager.aidl
index 58f9d57763fa..6fe40be041cc 100644
--- a/core/java/android/app/admin/IDevicePolicyManager.aidl
+++ b/core/java/android/app/admin/IDevicePolicyManager.aidl
@@ -603,8 +603,6 @@ interface IDevicePolicyManager {
DevicePolicyState getDevicePolicyState();
- void setOverrideKeepProfilesRunning(boolean enabled);
-
boolean triggerDevicePolicyEngineMigration(boolean forceMigration);
boolean isDeviceFinanced(String callerPackageName);
diff --git a/services/core/java/android/content/pm/PackageManagerInternal.java b/services/core/java/android/content/pm/PackageManagerInternal.java
index 638abdba36ec..4f322203192f 100644
--- a/services/core/java/android/content/pm/PackageManagerInternal.java
+++ b/services/core/java/android/content/pm/PackageManagerInternal.java
@@ -300,14 +300,6 @@ public abstract class PackageManagerInternal {
@UserIdInt int userId, @NonNull String[] packageNames, boolean suspended);
/**
- * Suspend or unsuspend packages in a profile when quiet mode is toggled.
- *
- * @param userId The target user.
- * @param suspended Whether the packages should be suspended or unsuspended.
- */
- public abstract void setPackagesSuspendedForQuietMode(@UserIdInt int userId, boolean suspended);
-
- /**
* Get the information describing the dialog to be shown to the user when they try to launch a
* suspended application.
*
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java
index ae62a7a59709..87633e9e255d 100644
--- a/services/core/java/com/android/server/am/UserController.java
+++ b/services/core/java/com/android/server/am/UserController.java
@@ -76,7 +76,6 @@ import android.app.BroadcastOptions;
import android.app.IStopUserCallback;
import android.app.IUserSwitchObserver;
import android.app.KeyguardManager;
-import android.app.admin.DevicePolicyManagerInternal;
import android.app.usage.UsageEvents;
import android.appwidget.AppWidgetManagerInternal;
import android.content.Context;
@@ -1497,10 +1496,8 @@ class UserController implements Handler.Callback {
private boolean shouldStartWithParent(UserInfo user) {
final UserProperties properties = getUserProperties(user.id);
- DevicePolicyManagerInternal dpmi =
- LocalServices.getService(DevicePolicyManagerInternal.class);
return (properties != null && properties.getStartWithParent())
- && (!user.isQuietModeEnabled() || dpmi.isKeepProfilesRunningEnabled());
+ && !user.isQuietModeEnabled();
}
/**
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index b2f00a246c23..1bdd402cf0b5 100755
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -128,12 +128,12 @@ import static com.android.internal.util.Preconditions.checkNotNull;
import static com.android.server.am.PendingIntentRecord.FLAG_ACTIVITY_SENDER;
import static com.android.server.am.PendingIntentRecord.FLAG_BROADCAST_SENDER;
import static com.android.server.am.PendingIntentRecord.FLAG_SERVICE_SENDER;
+import static com.android.server.notification.Flags.expireBitmaps;
import static com.android.server.policy.PhoneWindowManager.TOAST_WINDOW_ANIM_BUFFER;
import static com.android.server.policy.PhoneWindowManager.TOAST_WINDOW_TIMEOUT;
import static com.android.server.utils.PriorityDump.PRIORITY_ARG;
import static com.android.server.utils.PriorityDump.PRIORITY_ARG_CRITICAL;
import static com.android.server.utils.PriorityDump.PRIORITY_ARG_NORMAL;
-import static com.android.server.notification.Flags.expireBitmaps;
import android.Manifest;
import android.Manifest.permission;
@@ -178,7 +178,6 @@ import android.app.compat.CompatChanges;
import android.app.role.OnRoleHoldersChangedListener;
import android.app.role.RoleManager;
import android.app.usage.UsageEvents;
-import android.app.usage.UsageStatsManager;
import android.app.usage.UsageStatsManagerInternal;
import android.companion.ICompanionDeviceManager;
import android.compat.annotation.ChangeId;
@@ -206,8 +205,6 @@ import android.content.pm.UserInfo;
import android.content.pm.VersionedPackage;
import android.content.res.Resources;
import android.database.ContentObserver;
-import android.graphics.Bitmap;
-import android.graphics.drawable.Icon;
import android.media.AudioAttributes;
import android.media.AudioManager;
import android.media.AudioManagerInternal;
@@ -320,7 +317,6 @@ import com.android.server.SystemService;
import com.android.server.job.JobSchedulerInternal;
import com.android.server.lights.LightsManager;
import com.android.server.lights.LogicalLight;
-import com.android.server.notification.Flags;
import com.android.server.notification.ManagedServices.ManagedServiceInfo;
import com.android.server.notification.ManagedServices.UserProfiles;
import com.android.server.notification.toast.CustomToastRecord;
@@ -1935,7 +1931,7 @@ public class NotificationManagerService extends SystemService {
} else if (
isProfileUnavailable(action)) {
int userHandle = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, -1);
- if (userHandle >= 0 && !mDpm.isKeepProfilesRunningEnabled()) {
+ if (userHandle >= 0) {
cancelAllNotificationsInt(MY_UID, MY_PID, null, null, 0, 0, userHandle,
REASON_PROFILE_TURNED_OFF);
mSnoozeHelper.clearData(userHandle);
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 638bcbe5822c..d180b982be75 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -2085,8 +2085,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
mUserNeedsBadging, () -> mResolveInfo, () -> mInstantAppInstallerActivity,
injector.getBackgroundHandler());
mDexOptHelper = new DexOptHelper(this);
- mSuspendPackageHelper = new SuspendPackageHelper(this, mInjector, mUserManager,
- mBroadcastHelper, mProtectedPackages);
+ mSuspendPackageHelper = new SuspendPackageHelper(this, mInjector, mBroadcastHelper,
+ mProtectedPackages);
mDistractingPackageHelper = new DistractingPackageHelper(this, mBroadcastHelper,
mSuspendPackageHelper);
mStorageEventHelper = new StorageEventHelper(this, mDeletePackageHelper,
@@ -6145,7 +6145,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
}
return mSuspendPackageHelper.setPackagesSuspended(snapshot, packageNames, suspended,
appExtras, launcherExtras, dialogInfo, callingPackage, userId, callingUid,
- false /* forQuietMode */, quarantined);
+ quarantined);
}
@Override
@@ -6602,12 +6602,6 @@ public class PackageManagerService implements PackageSender, TestUtilityService
}
@Override
- public void setPackagesSuspendedForQuietMode(int userId, boolean suspended) {
- mSuspendPackageHelper.setPackagesSuspendedForQuietMode(
- snapshotComputer(), userId, suspended);
- }
-
- @Override
public void setDeviceAndProfileOwnerPackages(
int deviceOwnerUserId, String deviceOwnerPackage,
SparseArray<String> profileOwnerPackages) {
diff --git a/services/core/java/com/android/server/pm/SuspendPackageHelper.java b/services/core/java/com/android/server/pm/SuspendPackageHelper.java
index e8cebefb8631..71f6c0d507d4 100644
--- a/services/core/java/com/android/server/pm/SuspendPackageHelper.java
+++ b/services/core/java/com/android/server/pm/SuspendPackageHelper.java
@@ -16,8 +16,6 @@
package com.android.server.pm;
-import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE;
-import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE;
import static android.os.Process.SYSTEM_UID;
import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME;
@@ -27,9 +25,7 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.AppOpsManager;
-import android.app.admin.DevicePolicyManagerInternal;
import android.content.Intent;
-import android.content.pm.PackageInfo;
import android.content.pm.SuspendDialogInfo;
import android.os.Binder;
import android.os.Bundle;
@@ -45,7 +41,6 @@ import android.util.Slog;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.CollectionUtils;
-import com.android.server.LocalServices;
import com.android.server.pm.pkg.AndroidPackage;
import com.android.server.pm.pkg.PackageStateInternal;
import com.android.server.pm.pkg.PackageUserStateInternal;
@@ -54,10 +49,8 @@ import com.android.server.pm.pkg.mutate.PackageUserStateWrite;
import com.android.server.utils.WatchedArrayMap;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import java.util.Objects;
-import java.util.Set;
import java.util.function.Predicate;
public final class SuspendPackageHelper {
@@ -68,7 +61,6 @@ public final class SuspendPackageHelper {
private final PackageManagerService mPm;
private final PackageManagerServiceInjector mInjector;
- private final UserManagerService mUserManager;
private final BroadcastHelper mBroadcastHelper;
private final ProtectedPackages mProtectedPackages;
@@ -76,10 +68,8 @@ public final class SuspendPackageHelper {
* Constructor for {@link PackageManagerService}.
*/
SuspendPackageHelper(PackageManagerService pm, PackageManagerServiceInjector injector,
- UserManagerService userManager, BroadcastHelper broadcastHelper,
- ProtectedPackages protectedPackages) {
+ BroadcastHelper broadcastHelper, ProtectedPackages protectedPackages) {
mPm = pm;
- mUserManager = userManager;
mInjector = injector;
mBroadcastHelper = broadcastHelper;
mProtectedPackages = protectedPackages;
@@ -102,7 +92,6 @@ public final class SuspendPackageHelper {
* @param callingPackage The caller's package name.
* @param userId The user where packages reside.
* @param callingUid The caller's uid.
- * @param forQuietMode Whether suspension is for quiet mode, in which case no apps are exempt.
* @return The names of failed packages.
*/
@Nullable
@@ -110,11 +99,11 @@ public final class SuspendPackageHelper {
boolean suspended, @Nullable PersistableBundle appExtras,
@Nullable PersistableBundle launcherExtras, @Nullable SuspendDialogInfo dialogInfo,
@NonNull String callingPackage, @UserIdInt int userId, int callingUid,
- boolean forQuietMode, boolean quarantined) {
+ boolean quarantined) {
if (ArrayUtils.isEmpty(packageNames)) {
return packageNames;
}
- if (suspended && !quarantined && !forQuietMode && !isSuspendAllowedForUser(snapshot, userId,
+ if (suspended && !quarantined && !isSuspendAllowedForUser(snapshot, userId,
callingUid)) {
Slog.w(TAG, "Cannot suspend due to restrictions on user " + userId);
return packageNames;
@@ -130,7 +119,7 @@ public final class SuspendPackageHelper {
final ArraySet<String> changedPackagesList = new ArraySet<>(packageNames.length);
final IntArray changedUids = new IntArray(packageNames.length);
- final boolean[] canSuspend = suspended && !forQuietMode
+ final boolean[] canSuspend = suspended
? canSuspendPackageForUser(snapshot, packageNames, userId, callingUid)
: null;
for (int i = 0; i < packageNames.length; i++) {
@@ -620,92 +609,10 @@ public final class SuspendPackageHelper {
*/
public String[] setPackagesSuspendedByAdmin(
Computer snapshot, int userId, String[] packageNames, boolean suspend) {
- final Set<String> toSuspend = new ArraySet<>(packageNames);
- List<String> unsuspendable = new ArrayList<>();
-
- if (mUserManager.isQuietModeEnabled(userId)) {
- // If the user is in quiet mode, most apps will already be suspended, we shouldn't
- // re-suspend or unsuspend them.
- final Set<String> quiet = packagesToSuspendInQuietMode(snapshot, userId);
- quiet.retainAll(toSuspend);
- if (!quiet.isEmpty()) {
- Slog.i(TAG, "Ignoring quiet packages: " + String.join(", ", quiet));
- toSuspend.removeAll(quiet);
- }
-
- // Some of the already suspended packages might not be suspendable by the admin
- // (e.g. current dialer package), we need to report it back as unsuspendable the same
- // way as if quiet mode wasn't enabled. In that latter case they'd be returned by
- // setPackagesSuspended below after unsuccessful attempt to suspend them.
- if (suspend) {
- unsuspendable = getUnsuspendablePackages(snapshot, userId, quiet);
- }
- }
- if (!toSuspend.isEmpty()) {
- unsuspendable.addAll(Arrays.asList(
- setPackagesSuspended(
- snapshot, toSuspend.toArray(new String[0]), suspend,
- null /* appExtras */, null /* launcherExtras */, null /* dialogInfo */,
- PackageManagerService.PLATFORM_PACKAGE_NAME, userId, Process.SYSTEM_UID,
- false /* forQuietMode */, false /* quarantined */)));
- }
- return unsuspendable.toArray(String[]::new);
- }
-
- private List<String> getUnsuspendablePackages(
- Computer snapshot, int userId, Set<String> packages) {
- final String[] toSuspendArray = packages.toArray(String[]::new);
- final boolean[] mask =
- canSuspendPackageForUser(snapshot, toSuspendArray, userId, Process.SYSTEM_UID);
- final List<String> result = new ArrayList<>();
- for (int i = 0; i < mask.length; i++) {
- if (!mask[i]) {
- result.add(toSuspendArray[i]);
- }
- }
- return result;
- }
-
- /**
- * Suspends or unsuspends all packages in the given user when quiet mode is toggled to prevent
- * usage while quiet mode is enabled.
- */
- public void setPackagesSuspendedForQuietMode(
- Computer snapshot, int userId, boolean suspend) {
- final Set<String> toSuspend = packagesToSuspendInQuietMode(snapshot, userId);
- if (!suspend) {
- final DevicePolicyManagerInternal dpm =
- LocalServices.getService(DevicePolicyManagerInternal.class);
- if (dpm != null) {
- toSuspend.removeAll(dpm.getPackagesSuspendedByAdmin(userId));
- } else {
- Slog.wtf(TAG,
- "DevicePolicyManager unavailable while suspending apps for quiet mode");
- }
- }
-
- if (toSuspend.isEmpty()) {
- return;
- }
-
- setPackagesSuspended(snapshot, toSuspend.toArray(new String[0]),
- suspend, null /* appExtras */, null /* launcherExtras */, null /* dialogInfo */,
+ return setPackagesSuspended(snapshot, packageNames, suspend,
+ null /* appExtras */, null /* launcherExtras */, null /* dialogInfo */,
PackageManagerService.PLATFORM_PACKAGE_NAME, userId, Process.SYSTEM_UID,
- true /* forQuietMode */, false /* quarantined */);
- }
-
- private Set<String> packagesToSuspendInQuietMode(Computer snapshot, int userId) {
- final List<PackageInfo> pkgInfos = snapshot.getInstalledPackages(
- MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE, userId).getList();
- final Set<String> result = new ArraySet<>();
- for (PackageInfo info : pkgInfos) {
- result.add(info.packageName);
- }
-
- // Role holder may be null, but ArraySet handles it correctly.
- result.remove(mPm.getDevicePolicyManagementRoleHolderPackageName(userId));
-
- return result;
+ false /* quarantined */);
}
private String getKnownPackageName(@NonNull Computer snapshot,
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index c97fbdad9bf4..81a570f0e7a5 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -46,7 +46,6 @@ import android.annotation.UserIdInt;
import android.app.ActivityManager;
import android.app.ActivityManagerInternal;
import android.app.ActivityManagerNative;
-import android.app.AppOpsManager;
import android.app.BroadcastOptions;
import android.app.IActivityManager;
import android.app.IStopUserCallback;
@@ -55,7 +54,6 @@ import android.app.PendingIntent;
import android.app.StatsManager;
import android.app.admin.DevicePolicyEventLogger;
import android.app.admin.DevicePolicyManagerInternal;
-import android.app.trust.TrustManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.IIntentReceiver;
@@ -302,19 +300,6 @@ public class UserManagerService extends IUserManager.Stub {
private static final String TRON_USER_CREATED = "users_user_created";
private static final String TRON_DEMO_CREATED = "users_demo_created";
- // App ops that should be restricted in quiet mode
- private static final int[] QUIET_MODE_RESTRICTED_APP_OPS = {
- AppOpsManager.OP_COARSE_LOCATION,
- AppOpsManager.OP_FINE_LOCATION,
- AppOpsManager.OP_GPS,
- AppOpsManager.OP_BODY_SENSORS,
- AppOpsManager.OP_ACTIVITY_RECOGNITION,
- AppOpsManager.OP_BLUETOOTH_SCAN,
- AppOpsManager.OP_NEARBY_WIFI_DEVICES,
- AppOpsManager.OP_RECORD_AUDIO,
- AppOpsManager.OP_CAMERA,
- };
-
private final Context mContext;
private final PackageManagerService mPm;
@@ -339,7 +324,6 @@ public class UserManagerService extends IUserManager.Stub {
private final File mUserListFile;
private final IBinder mUserRestrictionToken = new Binder();
- private final IBinder mQuietModeToken = new Binder();
/** Installs system packages based on user-type. */
private final UserSystemPackageInstaller mSystemPackageInstaller;
@@ -702,7 +686,6 @@ public class UserManagerService extends IUserManager.Stub {
@Override
public void onUserStarting(@NonNull TargetUser targetUser) {
- boolean isProfileInQuietMode = false;
synchronized (mUms.mUsersLock) {
final UserData user = mUms.getUserDataLU(targetUser.getUserIdentifier());
if (user != null) {
@@ -710,14 +693,9 @@ public class UserManagerService extends IUserManager.Stub {
if (targetUser.getUserIdentifier() == UserHandle.USER_SYSTEM
&& targetUser.isFull()) {
mUms.setLastEnteredForegroundTimeToNow(user);
- } else if (user.info.isManagedProfile() && user.info.isQuietModeEnabled()) {
- isProfileInQuietMode = true;
}
}
}
- if (isProfileInQuietMode) {
- mUms.setAppOpsRestrictedForQuietMode(targetUser.getUserIdentifier(), true);
- }
}
@Override
@@ -1516,43 +1494,21 @@ public class UserManagerService extends IUserManager.Stub {
synchronized (mPackagesLock) {
writeUserLP(profileUserData);
}
- if (getDevicePolicyManagerInternal().isKeepProfilesRunningEnabled()) {
- // New behavior: when quiet mode is enabled, profile user is running, but apps are
- // suspended.
- getPackageManagerInternal().setPackagesSuspendedForQuietMode(userId, enableQuietMode);
- setAppOpsRestrictedForQuietMode(userId, enableQuietMode);
- if (enableQuietMode
- && !mLockPatternUtils.isManagedProfileWithUnifiedChallenge(userId)) {
- mContext.getSystemService(TrustManager.class).setDeviceLockedForUser(userId, true);
- }
-
- if (!enableQuietMode && target != null) {
- try {
- mContext.startIntentSender(target, null, 0, 0, 0);
- } catch (IntentSender.SendIntentException e) {
- Slog.e(LOG_TAG, "Failed to start intent after disabling quiet mode", e);
- }
- }
- } else {
- // Old behavior: when quiet is enabled, profile user is stopped.
- // Old quiet mode behavior: profile user is stopped.
- // TODO(b/265683382) Remove once rollout complete.
- try {
- if (enableQuietMode) {
- ActivityManager.getService().stopUser(userId, /* force= */ true, null);
- LocalServices.getService(ActivityManagerInternal.class)
- .killForegroundAppsForUser(userId);
- } else {
- IProgressListener callback = target != null
- ? new DisableQuietModeUserUnlockedCallback(target)
- : null;
- ActivityManager.getService().startProfileWithListener(userId, callback);
- }
- } catch (RemoteException e) {
- // Should not happen, same process.
- e.rethrowAsRuntimeException();
+ try {
+ if (enableQuietMode) {
+ ActivityManager.getService().stopUser(userId, /* force= */ true, null);
+ LocalServices.getService(ActivityManagerInternal.class)
+ .killForegroundAppsForUser(userId);
+ } else {
+ IProgressListener callback = target != null
+ ? new DisableQuietModeUserUnlockedCallback(target)
+ : null;
+ ActivityManager.getService().startProfileWithListener(userId, callback);
}
+ } catch (RemoteException e) {
+ // Should not happen, same process.
+ e.rethrowAsRuntimeException();
}
logQuietModeEnabled(userId, enableQuietMode, callingPackage);
@@ -1569,17 +1525,6 @@ public class UserManagerService extends IUserManager.Stub {
}
}
- private void setAppOpsRestrictedForQuietMode(@UserIdInt int userId, boolean restrict) {
- for (int opCode : QUIET_MODE_RESTRICTED_APP_OPS) {
- try {
- mAppOpsService.setUserRestriction(
- opCode, restrict, mQuietModeToken, userId, /* excludedPackageTags= */ null);
- } catch (RemoteException e) {
- Slog.w(LOG_TAG, "Unable to limit app ops", e);
- }
- }
- }
-
private void logQuietModeEnabled(@UserIdInt int userId, boolean enableQuietMode,
@Nullable String callingPackage) {
Slogf.i(LOG_TAG,
diff --git a/services/core/java/com/android/server/wm/ActivityStartInterceptor.java b/services/core/java/com/android/server/wm/ActivityStartInterceptor.java
index 25c42b4858a4..f9d344bd7e31 100644
--- a/services/core/java/com/android/server/wm/ActivityStartInterceptor.java
+++ b/services/core/java/com/android/server/wm/ActivityStartInterceptor.java
@@ -285,10 +285,6 @@ class ActivityStartInterceptor {
return false;
}
- if (isKeepProfilesRunningEnabled() && !isPackageSuspended()) {
- return false;
- }
-
IntentSender target = createIntentSenderForOriginalIntent(mCallingUid,
FLAG_CANCEL_CURRENT | FLAG_ONE_SHOT);
@@ -521,12 +517,6 @@ class ActivityStartInterceptor {
&& (mAInfo.applicationInfo.flags & FLAG_SUSPENDED) != 0;
}
- private static boolean isKeepProfilesRunningEnabled() {
- DevicePolicyManagerInternal dpmi =
- LocalServices.getService(DevicePolicyManagerInternal.class);
- return dpmi == null || dpmi.isKeepProfilesRunningEnabled();
- }
-
/**
* Called when an activity is successfully launched.
*/
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyData.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyData.java
index d9604395dd98..395ea9176877 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyData.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyData.java
@@ -16,8 +16,6 @@
package com.android.server.devicepolicy;
-import static com.android.server.devicepolicy.DevicePolicyManagerService.DEFAULT_KEEP_PROFILES_RUNNING_FLAG;
-
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
@@ -200,7 +198,7 @@ class DevicePolicyData {
* Effective state of the feature flag. It is updated to the current configuration value
* during boot and doesn't change value after than unless overridden by test code.
*/
- boolean mEffectiveKeepProfilesRunning = DEFAULT_KEEP_PROFILES_RUNNING_FLAG;
+ boolean mEffectiveKeepProfilesRunning = false;
DevicePolicyData(@UserIdInt int userId) {
mUserId = userId;
@@ -401,7 +399,7 @@ class DevicePolicyData {
out.endTag(null, TAG_BYPASS_ROLE_QUALIFICATIONS);
}
- if (policyData.mEffectiveKeepProfilesRunning != DEFAULT_KEEP_PROFILES_RUNNING_FLAG) {
+ if (policyData.mEffectiveKeepProfilesRunning) {
out.startTag(null, TAG_KEEP_PROFILES_RUNNING);
out.attributeBoolean(null, ATTR_VALUE, policyData.mEffectiveKeepProfilesRunning);
out.endTag(null, TAG_KEEP_PROFILES_RUNNING);
@@ -592,7 +590,7 @@ class DevicePolicyData {
policy.mCurrentRoleHolder = parser.getAttributeValue(null, ATTR_VALUE);
} else if (TAG_KEEP_PROFILES_RUNNING.equals(tag)) {
policy.mEffectiveKeepProfilesRunning = parser.getAttributeBoolean(
- null, ATTR_VALUE, DEFAULT_KEEP_PROFILES_RUNNING_FLAG);
+ null, ATTR_VALUE, false);
// Deprecated tags below
} else if (TAG_PROTECTED_PACKAGES.equals(tag)) {
if (policy.mUserControlDisabledPackages == null) {
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 1ff117e2c60b..93dc2190c8a3 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -873,9 +873,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
"enable_permission_based_access";
private static final boolean DEFAULT_VALUE_PERMISSION_BASED_ACCESS_FLAG = false;
- // TODO(b/265683382) remove the flag after rollout.
- public static final boolean DEFAULT_KEEP_PROFILES_RUNNING_FLAG = false;
-
// TODO(b/266831522) remove the flag after rollout.
private static final String APPLICATION_EXEMPTIONS_FLAG = "application_exemptions";
private static final boolean DEFAULT_APPLICATION_EXEMPTIONS_FLAG = true;
@@ -2178,13 +2175,29 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
return packageNameAndSignature;
}
- private void suspendAppsForQuietProfiles(boolean toSuspend) {
+ private void unsuspendAppsForQuietProfiles() {
PackageManagerInternal pmi = mInjector.getPackageManagerInternal();
List<UserInfo> users = mUserManagerInternal.getUsers(true /* excludeDying */);
+
for (UserInfo user : users) {
- if (user.isManagedProfile() && user.isQuietModeEnabled()) {
- pmi.setPackagesSuspendedForQuietMode(user.id, toSuspend);
+ if (!user.isManagedProfile() || !user.isQuietModeEnabled()) {
+ continue;
}
+ int userId = user.id;
+ var suspendedByAdmin = getPackagesSuspendedByAdmin(userId);
+ var packagesToUnsuspend = mInjector.getPackageManager(userId)
+ .getInstalledPackages(PackageManager.PackageInfoFlags.of(
+ MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE))
+ .stream()
+ .map(packageInfo -> packageInfo.packageName)
+ .filter(pkg -> !suspendedByAdmin.contains(pkg))
+ .toArray(String[]::new);
+
+ Slogf.i(LOG_TAG, "Unsuspending work apps for user %d", userId);
+ // When app suspension was used for quiet mode, the apps were suspended by platform
+ // package, just like when admin suspends them. So although it wasn't admin who
+ // suspended, this method will remove the right suspension record.
+ pmi.setPackagesSuspendedByAdmin(userId, packagesToUnsuspend, false /* suspended */);
}
}
@@ -3436,9 +3449,9 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
}
}
- // In case flag value has changed, we apply it during boot to avoid doing it concurrently
- // with user toggling quiet mode.
- setKeepProfileRunningEnabledUnchecked(isKeepProfilesRunningFlagEnabled());
+ // Check whether work apps were paused via suspension and unsuspend if necessary.
+ // TODO: move it into PolicyVersionUpgrader so that it is executed only once.
+ unsuspendWorkAppsIfNecessary();
}
// TODO(b/230841522) Make it static.
@@ -11039,9 +11052,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
(size == 1 ? "" : "s"));
}
pw.println();
- pw.println("Keep profiles running: "
- + getUserData(UserHandle.USER_SYSTEM).mEffectiveKeepProfilesRunning);
- pw.println();
mPolicyCache.dump(pw);
pw.println();
@@ -15539,11 +15549,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
}
@Override
- public Set<String> getPackagesSuspendedByAdmin(@UserIdInt int userId) {
- return DevicePolicyManagerService.this.getPackagesSuspendedByAdmin(userId);
- }
-
- @Override
public void notifyUnsafeOperationStateChanged(DevicePolicySafetyChecker checker, int reason,
boolean isSafe) {
// TODO(b/178494483): use EventLog instead
@@ -15571,11 +15576,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
}
}
- @Override
- public boolean isKeepProfilesRunningEnabled() {
- return getUserDataUnchecked(UserHandle.USER_SYSTEM).mEffectiveKeepProfilesRunning;
- }
-
private @Mode int findInteractAcrossProfilesResetMode(String packageName) {
return getDefaultCrossProfilePackages().contains(packageName)
? AppOpsManager.MODE_ALLOWED
@@ -23028,32 +23028,22 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
DEFAULT_VALUE_PERMISSION_BASED_ACCESS_FLAG);
}
- private static boolean isKeepProfilesRunningFlagEnabled() {
- return DEFAULT_KEEP_PROFILES_RUNNING_FLAG;
- }
-
private boolean isUnicornFlagEnabled() {
return false;
}
- private void setKeepProfileRunningEnabledUnchecked(boolean keepProfileRunning) {
+ private void unsuspendWorkAppsIfNecessary() {
synchronized (getLockObject()) {
DevicePolicyData policyData = getUserDataUnchecked(UserHandle.USER_SYSTEM);
- if (policyData.mEffectiveKeepProfilesRunning == keepProfileRunning) {
+ if (!policyData.mEffectiveKeepProfilesRunning) {
return;
}
- policyData.mEffectiveKeepProfilesRunning = keepProfileRunning;
+ policyData.mEffectiveKeepProfilesRunning = false;
saveSettingsLocked(UserHandle.USER_SYSTEM);
}
- suspendAppsForQuietProfiles(keepProfileRunning);
- }
- @Override
- public void setOverrideKeepProfilesRunning(boolean enabled) {
- Preconditions.checkCallAuthorization(
- hasCallingOrSelfPermission(MANAGE_PROFILE_AND_DEVICE_OWNERS));
- setKeepProfileRunningEnabledUnchecked(enabled);
- Slog.i(LOG_TAG, "Keep profiles running overridden to: " + enabled);
+ Slog.w(LOG_TAG, "Work apps may have been paused via suspension previously.");
+ unsuspendAppsForQuietProfiles();
}
public void setMtePolicy(int flags, String callerPackageName) {
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/PackageHelperTestBase.kt b/services/tests/mockingservicestests/src/com/android/server/pm/PackageHelperTestBase.kt
index eb001645863f..a6ba5d4c3032 100644
--- a/services/tests/mockingservicestests/src/com/android/server/pm/PackageHelperTestBase.kt
+++ b/services/tests/mockingservicestests/src/com/android/server/pm/PackageHelperTestBase.kt
@@ -87,8 +87,8 @@ open class PackageHelperTestBase {
TEST_PACKAGE_1, TEST_PACKAGE_2, DEVICE_OWNER_PACKAGE, DEVICE_ADMIN_PACKAGE,
DEFAULT_HOME_PACKAGE, DIALER_PACKAGE, INSTALLER_PACKAGE, UNINSTALLER_PACKAGE,
VERIFIER_PACKAGE, PERMISSION_CONTROLLER_PACKAGE))
- suspendPackageHelper = SuspendPackageHelper(pms, rule.mocks().injector,
- rule.mocks().userManagerService, broadcastHelper, protectedPackages)
+ suspendPackageHelper = SuspendPackageHelper(
+ pms, rule.mocks().injector, broadcastHelper, protectedPackages)
defaultAppProvider = rule.mocks().defaultAppProvider
testHandler = rule.mocks().handler
packageSetting1 = pms.snapshotComputer().getPackageStateInternal(TEST_PACKAGE_1)!!
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/SuspendPackageHelperTest.kt b/services/tests/mockingservicestests/src/com/android/server/pm/SuspendPackageHelperTest.kt
index 4240373b7c1d..7b381ce443e1 100644
--- a/services/tests/mockingservicestests/src/com/android/server/pm/SuspendPackageHelperTest.kt
+++ b/services/tests/mockingservicestests/src/com/android/server/pm/SuspendPackageHelperTest.kt
@@ -39,7 +39,7 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
val failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
targetPackages, true /* suspended */, null /* appExtras */,
null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
- TEST_USER_ID, deviceOwnerUid, false /* forQuietMode */, false /* quarantined */)
+ TEST_USER_ID, deviceOwnerUid, false /* quarantined */)
testHandler.flush()
verify(pms).scheduleWritePackageRestrictions(eq(TEST_USER_ID))
@@ -56,14 +56,14 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
var failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
null /* packageNames */, true /* suspended */, null /* appExtras */,
null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
- TEST_USER_ID, deviceOwnerUid, false /* forQuietMode */, false /* quarantined */)
+ TEST_USER_ID, deviceOwnerUid, false /* quarantined */)
assertThat(failedNames).isNull()
failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
arrayOfNulls(0), true /* suspended */, null /* appExtras */,
null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
- TEST_USER_ID, deviceOwnerUid, false /* forQuietMode */, false /* quarantined */)
+ TEST_USER_ID, deviceOwnerUid, false /* quarantined */)
assertThat(failedNames).isEmpty()
}
@@ -73,7 +73,7 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
val failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
arrayOf(TEST_PACKAGE_2), true /* suspended */, null /* appExtras */,
null /* launcherExtras */, null /* dialogInfo */, TEST_PACKAGE_1, TEST_USER_ID,
- Binder.getCallingUid(), false /* forQuietMode */, false /* quarantined */)
+ Binder.getCallingUid(), false /* quarantined */)
assertThat(failedNames).asList().hasSize(1)
assertThat(failedNames).asList().contains(TEST_PACKAGE_2)
@@ -84,7 +84,7 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
val failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
arrayOf(DEVICE_OWNER_PACKAGE), true /* suspended */, null /* appExtras */,
null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
- TEST_USER_ID, deviceOwnerUid, false /* forQuietMode */, false /* quarantined */)
+ TEST_USER_ID, deviceOwnerUid, false /* quarantined */)
assertThat(failedNames).asList().hasSize(1)
assertThat(failedNames).asList().contains(DEVICE_OWNER_PACKAGE)
@@ -95,7 +95,7 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
val failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
arrayOf(NONEXISTENT_PACKAGE), true /* suspended */, null /* appExtras */,
null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
- TEST_USER_ID, deviceOwnerUid, false /* forQuietMode */, false /* quarantined */)
+ TEST_USER_ID, deviceOwnerUid, false /* quarantined */)
assertThat(failedNames).asList().hasSize(1)
assertThat(failedNames).asList().contains(NONEXISTENT_PACKAGE)
@@ -108,7 +108,7 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
val failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
knownPackages, true /* suspended */, null /* appExtras */,
null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
- TEST_USER_ID, deviceOwnerUid, false /* forQuietMode */, false /* quarantined */)!!
+ TEST_USER_ID, deviceOwnerUid, false /* quarantined */)!!
assertThat(failedNames.size).isEqualTo(knownPackages.size)
for (pkg in knownPackages) {
@@ -117,33 +117,19 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
}
@Test
- fun setPackagesSuspended_forQuietMode() {
- val knownPackages = arrayOf(DEVICE_ADMIN_PACKAGE, DEFAULT_HOME_PACKAGE, DIALER_PACKAGE,
- INSTALLER_PACKAGE, UNINSTALLER_PACKAGE, VERIFIER_PACKAGE,
- PERMISSION_CONTROLLER_PACKAGE, MGMT_ROLE_HOLDER_PACKAGE)
- val failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
- knownPackages, true /* suspended */, null /* appExtras */,
- null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
- TEST_USER_ID, deviceOwnerUid, true /* forQuietMode */, false /* quarantined */)!!
-
- assertThat(failedNames.size).isEqualTo(1)
- assertThat(failedNames[0]).isEqualTo(MGMT_ROLE_HOLDER_PACKAGE)
- }
-
- @Test
fun setPackagesUnsuspended() {
val targetPackages = arrayOf(TEST_PACKAGE_1, TEST_PACKAGE_2)
var failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
targetPackages, true /* suspended */, null /* appExtras */,
null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
- TEST_USER_ID, deviceOwnerUid, false /* forQuietMode */, false /* quarantined */)
+ TEST_USER_ID, deviceOwnerUid, false /* quarantined */)
testHandler.flush()
Mockito.clearInvocations(broadcastHelper)
assertThat(failedNames).isEmpty()
failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
targetPackages, false /* suspended */, null /* appExtras */,
null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
- TEST_USER_ID, deviceOwnerUid, false /* forQuietMode */, false /* quarantined */)
+ TEST_USER_ID, deviceOwnerUid, false /* quarantined */)
testHandler.flush()
verify(pms, times(2)).scheduleWritePackageRestrictions(eq(TEST_USER_ID))
@@ -191,7 +177,7 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
var failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
arrayOf(TEST_PACKAGE_1), true /* suspended */, appExtras, null /* launcherExtras */,
null /* dialogInfo */, DEVICE_OWNER_PACKAGE, TEST_USER_ID, deviceOwnerUid,
- false /* forQuietMode */, false /* quarantined */)
+ false /* quarantined */)
testHandler.flush()
assertThat(failedNames).isEmpty()
@@ -209,7 +195,7 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
var failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
targetPackages, true /* suspended */, appExtras, null /* launcherExtras */,
null /* dialogInfo */, DEVICE_OWNER_PACKAGE, TEST_USER_ID, deviceOwnerUid,
- false /* forQuietMode */, false /* quarantined */)
+ false /* quarantined */)
testHandler.flush()
Mockito.clearInvocations(broadcastHelper)
assertThat(failedNames).isEmpty()
@@ -250,7 +236,7 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
var failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
arrayOf(TEST_PACKAGE_2), true /* suspended */, null /* appExtras */, launcherExtras,
null /* dialogInfo */, DEVICE_OWNER_PACKAGE, TEST_USER_ID, deviceOwnerUid,
- false /* forQuietMode */, false /* quarantined */)
+ false /* quarantined */)
testHandler.flush()
assertThat(failedNames).isEmpty()
@@ -265,7 +251,7 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
var failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
arrayOf(TEST_PACKAGE_1), true /* suspended */, null /* appExtras */,
null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
- TEST_USER_ID, deviceOwnerUid, false /* forQuietMode */, false /* quarantined */)
+ TEST_USER_ID, deviceOwnerUid, false /* quarantined */)
testHandler.flush()
assertThat(failedNames).isEmpty()
@@ -280,7 +266,7 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
var failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
arrayOf(TEST_PACKAGE_2), true /* suspended */, null /* appExtras */, launcherExtras,
null /* dialogInfo */, DEVICE_OWNER_PACKAGE, TEST_USER_ID, deviceOwnerUid,
- false /* forQuietMode */, false /* quarantined */)
+ false /* quarantined */)
testHandler.flush()
assertThat(failedNames).isEmpty()
@@ -295,7 +281,7 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
var failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
arrayOf(TEST_PACKAGE_1), true /* suspended */, null /* appExtras */,
null /* launcherExtras */, dialogInfo, DEVICE_OWNER_PACKAGE, TEST_USER_ID,
- deviceOwnerUid, false /* forQuietMode */, false /* quarantined */)
+ deviceOwnerUid, false /* quarantined */)
testHandler.flush()
assertThat(failedNames).isEmpty()
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStartInterceptorTest.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStartInterceptorTest.java
index 568471d67c31..526201f9c1c6 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityStartInterceptorTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStartInterceptorTest.java
@@ -247,39 +247,9 @@ public class ActivityStartInterceptorTest {
}
@Test
- public void testInterceptQuietProfile_keepProfilesRunningEnabled() {
- // GIVEN that the user the activity is starting as is currently in quiet mode and
- // profiles are kept running when in quiet mode.
+ public void testInterceptQuietProfile() {
+ // GIVEN that the user the activity is starting as is currently in quiet mode
when(mUserManager.isQuietModeEnabled(eq(UserHandle.of(TEST_USER_ID)))).thenReturn(true);
- when(mDevicePolicyManager.isKeepProfilesRunningEnabled()).thenReturn(true);
-
- // THEN calling intercept returns false because package also has to be suspended.
- assertFalse(
- mInterceptor.intercept(null, null, mAInfo, null, null, null, 0, 0, null, null));
- }
-
- @Test
- public void testInterceptQuietProfile_keepProfilesRunningDisabled() {
- // GIVEN that the user the activity is starting as is currently in quiet mode and
- // profiles are stopped when in quiet mode (pre-U behavior, no profile app suspension).
- when(mUserManager.isQuietModeEnabled(eq(UserHandle.of(TEST_USER_ID)))).thenReturn(true);
- when(mDevicePolicyManager.isKeepProfilesRunningEnabled()).thenReturn(false);
-
- // THEN calling intercept returns true
- assertTrue(mInterceptor.intercept(null, null, mAInfo, null, null, null, 0, 0, null, null));
-
- // THEN the returned intent is the quiet mode intent
- assertTrue(UnlaunchableAppActivity.createInQuietModeDialogIntent(TEST_USER_ID)
- .filterEquals(mInterceptor.mIntent));
- }
-
- @Test
- public void testInterceptQuietProfileWhenPackageSuspended_keepProfilesRunningEnabled() {
- // GIVEN that the user the activity is starting as is currently in quiet mode,
- // the package is suspended and profiles are kept running while in quiet mode.
- suspendPackage("com.test.suspending.package");
- when(mUserManager.isQuietModeEnabled(eq(UserHandle.of(TEST_USER_ID)))).thenReturn(true);
- when(mDevicePolicyManager.isKeepProfilesRunningEnabled()).thenReturn(true);
// THEN calling intercept returns true
assertTrue(mInterceptor.intercept(null, null, mAInfo, null, null, null, 0, 0, null, null));
@@ -290,12 +260,10 @@ public class ActivityStartInterceptorTest {
}
@Test
- public void testInterceptQuietProfileWhenPackageSuspended_keepProfilesRunningDisabled() {
- // GIVEN that the user the activity is starting as is currently in quiet mode,
- // the package is suspended and profiles are stopped while in quiet mode.
+ public void testInterceptQuietProfileWhenPackageSuspended() {
suspendPackage("com.test.suspending.package");
+ // GIVEN that the user the activity is starting as is currently in quiet mode
when(mUserManager.isQuietModeEnabled(eq(UserHandle.of(TEST_USER_ID)))).thenReturn(true);
- when(mDevicePolicyManager.isKeepProfilesRunningEnabled()).thenReturn(false);
// THEN calling intercept returns true
assertTrue(mInterceptor.intercept(null, null, mAInfo, null, null, null, 0, 0, null, null));