summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Pavel Grafov <pgrafov@google.com> 2023-03-28 12:00:45 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-03-28 12:00:45 +0000
commit5dfd7f3e796311cec997877996077b9f17221a3f (patch)
treeeb31e7a3ba4dd577daf47945acb881eadc30dc13
parentd55c38e43534180d585c728406dffaca31b5e324 (diff)
parent1d8230474c83866090453a202f8289badca1fb68 (diff)
Merge "Set broadcast policy for suspension and quiet mode" into udc-dev
-rw-r--r--services/core/java/com/android/server/pm/SuspendPackageHelper.java6
-rw-r--r--services/core/java/com/android/server/pm/UserManagerService.java10
2 files changed, 14 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/pm/SuspendPackageHelper.java b/services/core/java/com/android/server/pm/SuspendPackageHelper.java
index b4b8cb2a370d..ad77ef7ca975 100644
--- a/services/core/java/com/android/server/pm/SuspendPackageHelper.java
+++ b/services/core/java/com/android/server/pm/SuspendPackageHelper.java
@@ -28,6 +28,7 @@ import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.ActivityManager;
import android.app.AppOpsManager;
+import android.app.BroadcastOptions;
import android.app.IActivityManager;
import android.app.admin.DevicePolicyManagerInternal;
import android.content.Intent;
@@ -620,12 +621,15 @@ public final class SuspendPackageHelper {
extras.putStringArray(Intent.EXTRA_CHANGED_PACKAGE_LIST, pkgList);
extras.putIntArray(Intent.EXTRA_CHANGED_UID_LIST, uidList);
final int flags = Intent.FLAG_RECEIVER_REGISTERED_ONLY | Intent.FLAG_RECEIVER_FOREGROUND;
+ final Bundle options = new BroadcastOptions()
+ .setDeferralPolicy(BroadcastOptions.DEFERRAL_POLICY_UNTIL_ACTIVE)
+ .toBundle();
handler.post(() -> mBroadcastHelper.sendPackageBroadcast(intent, null /* pkg */,
extras, flags, null /* targetPkg */, null /* finishedReceiver */,
new int[]{userId}, null /* instantUserIds */, null /* broadcastAllowList */,
(callingUid, intentExtras) -> BroadcastHelper.filterExtrasChangedPackageList(
mPm.snapshotComputer(), callingUid, intentExtras),
- null /* bOptions */));
+ options));
}
/**
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index a36e9f961211..927a722defac 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -1276,7 +1276,15 @@ public class UserManagerService extends IUserManager.Stub {
getDevicePolicyManagerInternal().broadcastIntentToManifestReceivers(
intent, parentHandle, /* requiresPermission= */ true);
intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY | Intent.FLAG_RECEIVER_FOREGROUND);
- mContext.sendBroadcastAsUser(intent, parentHandle);
+ final Bundle options = new BroadcastOptions()
+ .setDeferralPolicy(BroadcastOptions.DEFERRAL_POLICY_UNTIL_ACTIVE)
+ .setDeliveryGroupPolicy(BroadcastOptions.DELIVERY_GROUP_POLICY_MOST_RECENT)
+ // Both actions use single namespace because only the final state matters.
+ .setDeliveryGroupMatchingKey(
+ Intent.ACTION_MANAGED_PROFILE_AVAILABLE /* namespace */,
+ String.valueOf(profileHandle.getIdentifier()) /* key */)
+ .toBundle();
+ mContext.sendBroadcastAsUser(intent, parentHandle, /* receiverPermission= */ null, options);
}
@Override