summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jeff Sharkey <jsharkey@google.com> 2022-11-10 16:20:49 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-11-10 16:20:49 +0000
commit25e1ad5ef3b131fc31a25c279d493e376f15ed1d (patch)
tree29e2491c0fbcc0fff6944aef04b72f4e8d3143b9
parent8442d1a5680b1317251df51f2ad42cd4f703315e (diff)
parent580d000d29551d7a90743741f259d40d732fe164 (diff)
Merge "BroadcastQueue: fix proto dump regression."
-rw-r--r--services/core/java/com/android/server/am/BroadcastQueueModernImpl.java45
1 files changed, 25 insertions, 20 deletions
diff --git a/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java b/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
index c3839a99ba52..6793876942f6 100644
--- a/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
+++ b/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
@@ -599,6 +599,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
// If nothing to dispatch, send any pending result immediately
if (r.receivers.isEmpty()) {
scheduleResultTo(r);
+ notifyFinishBroadcast(r);
}
traceEnd(cookie);
@@ -1402,30 +1403,34 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
final boolean recordFinished = (r.terminalCount == r.receivers.size());
if (recordFinished) {
- mService.notifyBroadcastFinishedLocked(r);
- mHistory.addBroadcastToHistoryLocked(r);
-
- r.finishTime = SystemClock.uptimeMillis();
- r.nextReceiver = r.receivers.size();
- BroadcastQueueImpl.logBootCompletedBroadcastCompletionLatencyIfPossible(r);
+ notifyFinishBroadcast(r);
+ }
+ }
- if (r.intent.getComponent() == null && r.intent.getPackage() == null
- && (r.intent.getFlags() & Intent.FLAG_RECEIVER_REGISTERED_ONLY) == 0) {
- int manifestCount = 0;
- int manifestSkipCount = 0;
- for (int i = 0; i < r.receivers.size(); i++) {
- if (r.receivers.get(i) instanceof ResolveInfo) {
- manifestCount++;
- if (r.delivery[i] == BroadcastRecord.DELIVERY_SKIPPED) {
- manifestSkipCount++;
- }
+ private void notifyFinishBroadcast(@NonNull BroadcastRecord r) {
+ mService.notifyBroadcastFinishedLocked(r);
+ mHistory.addBroadcastToHistoryLocked(r);
+
+ r.finishTime = SystemClock.uptimeMillis();
+ r.nextReceiver = r.receivers.size();
+ BroadcastQueueImpl.logBootCompletedBroadcastCompletionLatencyIfPossible(r);
+
+ if (r.intent.getComponent() == null && r.intent.getPackage() == null
+ && (r.intent.getFlags() & Intent.FLAG_RECEIVER_REGISTERED_ONLY) == 0) {
+ int manifestCount = 0;
+ int manifestSkipCount = 0;
+ for (int i = 0; i < r.receivers.size(); i++) {
+ if (r.receivers.get(i) instanceof ResolveInfo) {
+ manifestCount++;
+ if (r.delivery[i] == BroadcastRecord.DELIVERY_SKIPPED) {
+ manifestSkipCount++;
}
}
-
- final long dispatchTime = SystemClock.uptimeMillis() - r.enqueueTime;
- mService.addBroadcastStatLocked(r.intent.getAction(), r.callerPackage,
- manifestCount, manifestSkipCount, dispatchTime);
}
+
+ final long dispatchTime = SystemClock.uptimeMillis() - r.enqueueTime;
+ mService.addBroadcastStatLocked(r.intent.getAction(), r.callerPackage,
+ manifestCount, manifestSkipCount, dispatchTime);
}
}