Add push messaging as a trigger for proc start am: 8fcf1d63c6
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20112890 Change-Id: Ia1b7c4fe3462c191d241b00db4050892324959ec Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -528,6 +528,28 @@ public class BroadcastOptions extends ComponentOptions {
|
|||||||
return mIsAlarmBroadcast;
|
return mIsAlarmBroadcast;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Did this broadcast originate from a push message from the server?
|
||||||
|
*
|
||||||
|
* @return true if this broadcast is a push message, false otherwise.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public boolean isPushMessagingBroadcast() {
|
||||||
|
return mTemporaryAppAllowlistReasonCode == PowerExemptionManager.REASON_PUSH_MESSAGING;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Did this broadcast originate from a push message from the server which was over the allowed
|
||||||
|
* quota?
|
||||||
|
*
|
||||||
|
* @return true if this broadcast is a push message over quota, false otherwise.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public boolean isPushMessagingOverQuotaBroadcast() {
|
||||||
|
return mTemporaryAppAllowlistReasonCode
|
||||||
|
== PowerExemptionManager.REASON_PUSH_MESSAGING_OVER_QUOTA;
|
||||||
|
}
|
||||||
|
|
||||||
/** {@hide} */
|
/** {@hide} */
|
||||||
public long getRequireCompatChangeId() {
|
public long getRequireCompatChangeId() {
|
||||||
return mRequireCompatChangeId;
|
return mRequireCompatChangeId;
|
||||||
|
|||||||
@@ -1921,8 +1921,7 @@ public final class BroadcastQueue {
|
|||||||
info.activityInfo.applicationInfo, true,
|
info.activityInfo.applicationInfo, true,
|
||||||
r.intent.getFlags() | Intent.FLAG_FROM_BACKGROUND,
|
r.intent.getFlags() | Intent.FLAG_FROM_BACKGROUND,
|
||||||
new HostingRecord(HostingRecord.HOSTING_TYPE_BROADCAST, r.curComponent,
|
new HostingRecord(HostingRecord.HOSTING_TYPE_BROADCAST, r.curComponent,
|
||||||
r.intent.getAction(), (r.alarm ? HostingRecord.TRIGGER_TYPE_ALARM
|
r.intent.getAction(), getHostingRecordTriggerType(r)),
|
||||||
: HostingRecord.TRIGGER_TYPE_UNKNOWN)),
|
|
||||||
isActivityCapable ? ZYGOTE_POLICY_FLAG_LATENCY_SENSITIVE : ZYGOTE_POLICY_FLAG_EMPTY,
|
isActivityCapable ? ZYGOTE_POLICY_FLAG_LATENCY_SENSITIVE : ZYGOTE_POLICY_FLAG_EMPTY,
|
||||||
(r.intent.getFlags() & Intent.FLAG_RECEIVER_BOOT_UPGRADE) != 0, false);
|
(r.intent.getFlags() & Intent.FLAG_RECEIVER_BOOT_UPGRADE) != 0, false);
|
||||||
if (r.curApp == null) {
|
if (r.curApp == null) {
|
||||||
@@ -1945,6 +1944,16 @@ public final class BroadcastQueue {
|
|||||||
mPendingBroadcastRecvIndex = recIdx;
|
mPendingBroadcastRecvIndex = recIdx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getHostingRecordTriggerType(BroadcastRecord r) {
|
||||||
|
if (r.alarm) {
|
||||||
|
return HostingRecord.TRIGGER_TYPE_ALARM;
|
||||||
|
} else if (r.pushMessage) {
|
||||||
|
return HostingRecord.TRIGGER_TYPE_PUSH_MESSAGE;
|
||||||
|
} else if (r.pushMessageOverQuota) {
|
||||||
|
return HostingRecord.TRIGGER_TYPE_PUSH_MESSAGE_OVER_QUOTA;
|
||||||
|
}
|
||||||
|
return HostingRecord.TRIGGER_TYPE_UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private String getTargetPackage(BroadcastRecord r) {
|
private String getTargetPackage(BroadcastRecord r) {
|
||||||
|
|||||||
@@ -71,6 +71,8 @@ final class BroadcastRecord extends Binder {
|
|||||||
final boolean ordered; // serialize the send to receivers?
|
final boolean ordered; // serialize the send to receivers?
|
||||||
final boolean sticky; // originated from existing sticky data?
|
final boolean sticky; // originated from existing sticky data?
|
||||||
final boolean alarm; // originated from an alarm triggering?
|
final boolean alarm; // originated from an alarm triggering?
|
||||||
|
final boolean pushMessage; // originated from a push message?
|
||||||
|
final boolean pushMessageOverQuota; // originated from a push message which was over quota?
|
||||||
final boolean initialSticky; // initial broadcast from register to sticky?
|
final boolean initialSticky; // initial broadcast from register to sticky?
|
||||||
final int userId; // user id this broadcast was for
|
final int userId; // user id this broadcast was for
|
||||||
final String resolvedType; // the resolved data type
|
final String resolvedType; // the resolved data type
|
||||||
@@ -309,6 +311,8 @@ final class BroadcastRecord extends Binder {
|
|||||||
mBackgroundActivityStartsToken = backgroundActivityStartsToken;
|
mBackgroundActivityStartsToken = backgroundActivityStartsToken;
|
||||||
this.timeoutExempt = timeoutExempt;
|
this.timeoutExempt = timeoutExempt;
|
||||||
alarm = options != null && options.isAlarmBroadcast();
|
alarm = options != null && options.isAlarmBroadcast();
|
||||||
|
pushMessage = options != null && options.isPushMessagingBroadcast();
|
||||||
|
pushMessageOverQuota = options != null && options.isPushMessagingOverQuotaBroadcast();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -362,6 +366,8 @@ final class BroadcastRecord extends Binder {
|
|||||||
mBackgroundActivityStartsToken = from.mBackgroundActivityStartsToken;
|
mBackgroundActivityStartsToken = from.mBackgroundActivityStartsToken;
|
||||||
timeoutExempt = from.timeoutExempt;
|
timeoutExempt = from.timeoutExempt;
|
||||||
alarm = from.alarm;
|
alarm = from.alarm;
|
||||||
|
pushMessage = from.pushMessage;
|
||||||
|
pushMessageOverQuota = from.pushMessageOverQuota;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ import static com.android.internal.util.FrameworkStatsLog.PROCESS_START_TIME__HO
|
|||||||
import static com.android.internal.util.FrameworkStatsLog.PROCESS_START_TIME__HOSTING_TYPE_ID__HOSTING_TYPE_SERVICE;
|
import static com.android.internal.util.FrameworkStatsLog.PROCESS_START_TIME__HOSTING_TYPE_ID__HOSTING_TYPE_SERVICE;
|
||||||
import static com.android.internal.util.FrameworkStatsLog.PROCESS_START_TIME__HOSTING_TYPE_ID__HOSTING_TYPE_SYSTEM;
|
import static com.android.internal.util.FrameworkStatsLog.PROCESS_START_TIME__HOSTING_TYPE_ID__HOSTING_TYPE_SYSTEM;
|
||||||
import static com.android.internal.util.FrameworkStatsLog.PROCESS_START_TIME__HOSTING_TYPE_ID__HOSTING_TYPE_TOP_ACTIVITY;
|
import static com.android.internal.util.FrameworkStatsLog.PROCESS_START_TIME__HOSTING_TYPE_ID__HOSTING_TYPE_TOP_ACTIVITY;
|
||||||
|
import static com.android.internal.util.FrameworkStatsLog.PROCESS_START_TIME__TRIGGER_TYPE__TRIGGER_PUSH_MESSAGE;
|
||||||
|
import static com.android.internal.util.FrameworkStatsLog.PROCESS_START_TIME__TRIGGER_TYPE__TRIGGER_PUSH_MESSAGE_OVER_QUOTA;
|
||||||
import static com.android.internal.util.FrameworkStatsLog.PROCESS_START_TIME__TRIGGER_TYPE__TRIGGER_TYPE_ALARM;
|
import static com.android.internal.util.FrameworkStatsLog.PROCESS_START_TIME__TRIGGER_TYPE__TRIGGER_TYPE_ALARM;
|
||||||
import static com.android.internal.util.FrameworkStatsLog.PROCESS_START_TIME__TRIGGER_TYPE__TRIGGER_TYPE_UNKNOWN;
|
import static com.android.internal.util.FrameworkStatsLog.PROCESS_START_TIME__TRIGGER_TYPE__TRIGGER_TYPE_UNKNOWN;
|
||||||
import static com.android.internal.util.FrameworkStatsLog.PROCESS_START_TIME__TYPE__UNKNOWN;
|
import static com.android.internal.util.FrameworkStatsLog.PROCESS_START_TIME__TYPE__UNKNOWN;
|
||||||
@@ -93,6 +95,8 @@ public final class HostingRecord {
|
|||||||
|
|
||||||
public static final String TRIGGER_TYPE_UNKNOWN = "unknown";
|
public static final String TRIGGER_TYPE_UNKNOWN = "unknown";
|
||||||
public static final String TRIGGER_TYPE_ALARM = "alarm";
|
public static final String TRIGGER_TYPE_ALARM = "alarm";
|
||||||
|
public static final String TRIGGER_TYPE_PUSH_MESSAGE = "push_message";
|
||||||
|
public static final String TRIGGER_TYPE_PUSH_MESSAGE_OVER_QUOTA = "push_message_over_quota";
|
||||||
|
|
||||||
@NonNull private final String mHostingType;
|
@NonNull private final String mHostingType;
|
||||||
private final String mHostingName;
|
private final String mHostingName;
|
||||||
@@ -308,6 +312,10 @@ public final class HostingRecord {
|
|||||||
switch(triggerType) {
|
switch(triggerType) {
|
||||||
case TRIGGER_TYPE_ALARM:
|
case TRIGGER_TYPE_ALARM:
|
||||||
return PROCESS_START_TIME__TRIGGER_TYPE__TRIGGER_TYPE_ALARM;
|
return PROCESS_START_TIME__TRIGGER_TYPE__TRIGGER_TYPE_ALARM;
|
||||||
|
case TRIGGER_TYPE_PUSH_MESSAGE:
|
||||||
|
return PROCESS_START_TIME__TRIGGER_TYPE__TRIGGER_PUSH_MESSAGE;
|
||||||
|
case TRIGGER_TYPE_PUSH_MESSAGE_OVER_QUOTA:
|
||||||
|
return PROCESS_START_TIME__TRIGGER_TYPE__TRIGGER_PUSH_MESSAGE_OVER_QUOTA;
|
||||||
default:
|
default:
|
||||||
return PROCESS_START_TIME__TRIGGER_TYPE__TRIGGER_TYPE_UNKNOWN;
|
return PROCESS_START_TIME__TRIGGER_TYPE__TRIGGER_TYPE_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user