Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dc0a6563 authored by Sudheer Shanka's avatar Sudheer Shanka Committed by Android (Google) Code Review
Browse files

Merge changes from topics "log-intent-flags", "priority-procstate" into udc-dev

* changes:
  Log intent filter priority and broadcast sender priority.
  Include intent flags in BroadcastDeliveryEventReported atom.
parents 466273bb 2379a4b8
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -269,7 +269,7 @@ public class BroadcastQueueImpl extends BroadcastQueue {
                                Activity.RESULT_CANCELED, null, null,
                                false, false, oldRecord.shareIdentity, oldRecord.userId,
                                oldRecord.callingUid, r.callingUid, r.callerPackage,
                                SystemClock.uptimeMillis() - oldRecord.enqueueTime, 0);
                                SystemClock.uptimeMillis() - oldRecord.enqueueTime, 0, 0);
                    } catch (RemoteException e) {
                        Slog.w(TAG, "Failure ["
                                + mQueueName + "] sending broadcast result of "
@@ -617,7 +617,10 @@ public class BroadcastQueueImpl extends BroadcastQueue {
                    r.curApp.info.packageName,
                    r.callerPackage,
                    r.calculateTypeForLogging(),
                    r.getDeliveryGroupPolicy());
                    r.getDeliveryGroupPolicy(),
                    r.intent.getFlags(),
                    BroadcastRecord.getReceiverPriority(curReceiver),
                    r.callerProcState);
        }
        if (state == BroadcastRecord.IDLE) {
            Slog.w(TAG_BROADCAST, "finishReceiver [" + mQueueName + "] called but state is IDLE");
@@ -748,7 +751,7 @@ public class BroadcastQueueImpl extends BroadcastQueue {
            Intent intent, int resultCode, String data, Bundle extras,
            boolean ordered, boolean sticky, boolean shareIdentity, int sendingUser,
            int receiverUid, int callingUid, String callingPackage,
            long dispatchDelay, long receiveDelay) throws RemoteException {
            long dispatchDelay, long receiveDelay, int priority) throws RemoteException {
        // If the broadcaster opted-in to sharing their identity, then expose package visibility for
        // the receiver.
        if (shareIdentity) {
@@ -798,7 +801,8 @@ public class BroadcastQueueImpl extends BroadcastQueue {
                    dispatchDelay, receiveDelay, 0 /* finish_delay */,
                    SERVICE_REQUEST_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_NORMAL,
                    app != null ? app.info.packageName : null, callingPackage,
                    r.calculateTypeForLogging(), r.getDeliveryGroupPolicy());
                    r.calculateTypeForLogging(), r.getDeliveryGroupPolicy(), r.intent.getFlags(),
                    priority, r.callerProcState);
        }
    }

@@ -879,7 +883,7 @@ public class BroadcastQueueImpl extends BroadcastQueue {
                        r.resultExtras, r.ordered, r.initialSticky, r.shareIdentity, r.userId,
                        filter.receiverList.uid, r.callingUid, r.callerPackage,
                        r.dispatchTime - r.enqueueTime,
                        r.receiverTime - r.dispatchTime);
                        r.receiverTime - r.dispatchTime, filter.getPriority());
                // parallel broadcasts are fire-and-forget, not bookended by a call to
                // finishReceiverLocked(), so we manage their activity-start token here
                if (filter.receiverList.app != null
@@ -1170,7 +1174,7 @@ public class BroadcastQueueImpl extends BroadcastQueue {
                                    r.resultData, r.resultExtras, false, false, r.shareIdentity,
                                    r.userId, r.callingUid, r.callingUid, r.callerPackage,
                                    r.dispatchTime - r.enqueueTime,
                                    now - r.dispatchTime);
                                    now - r.dispatchTime, 0);
                            logBootCompletedBroadcastCompletionLatencyIfPossible(r);
                            // Set this to null so that the reference
                            // (local and remote) isn't kept in the mBroadcastHistory.
+2 −1
Original line number Diff line number Diff line
@@ -1933,7 +1933,8 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
            FrameworkStatsLog.write(BROADCAST_DELIVERY_EVENT_REPORTED, uid, senderUid, actionName,
                    receiverType, type, dispatchDelay, receiveDelay, finishDelay, packageState,
                    app != null ? app.info.packageName : null, r.callerPackage,
                    r.calculateTypeForLogging(), r.getDeliveryGroupPolicy());
                    r.calculateTypeForLogging(), r.getDeliveryGroupPolicy(), r.intent.getFlags(),
                    BroadcastRecord.getReceiverPriority(receiver), r.callerProcState);
        }
    }

+6 −0
Original line number Diff line number Diff line
@@ -44,6 +44,8 @@ import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UptimeMillisLong;
import android.app.ActivityManager;
import android.app.ActivityManager.ProcessState;
import android.app.ActivityManagerInternal;
import android.app.AppOpsManager;
import android.app.BackgroundStartPrivileges;
@@ -93,6 +95,7 @@ final class BroadcastRecord extends Binder {
    final @Nullable String callerFeatureId; // which feature in the package sent this
    final int callingPid;   // the pid of who sent this
    final int callingUid;   // the uid of who sent this
    final @ProcessState int callerProcState; // Procstate of the caller process at enqueue time.

    final int originalStickyCallingUid;
            // if this is a sticky broadcast, the Uid of the original sender
@@ -462,6 +465,8 @@ final class BroadcastRecord extends Binder {
        callerFeatureId = _callerFeatureId;
        callingPid = _callingPid;
        callingUid = _callingUid;
        callerProcState = callerApp == null ? ActivityManager.PROCESS_STATE_UNKNOWN
                : callerApp.getCurProcState();
        callerInstantApp = _callerInstantApp;
        callerInstrumented = isCallerInstrumented(_callerApp, _callingUid);
        resolvedType = _resolvedType;
@@ -515,6 +520,7 @@ final class BroadcastRecord extends Binder {
        callerFeatureId = from.callerFeatureId;
        callingPid = from.callingPid;
        callingUid = from.callingUid;
        callerProcState = from.callerProcState;
        callerInstantApp = from.callerInstantApp;
        callerInstrumented = from.callerInstrumented;
        ordered = from.ordered;
+5 −0
Original line number Diff line number Diff line
@@ -669,6 +669,11 @@ class ProcessRecord implements WindowProcessListener {
        return mOnewayThread;
    }

    @GuardedBy(anyOf = {"mService", "mProcLock"})
    int getCurProcState() {
        return mState.getCurProcState();
    }

    @GuardedBy({"mService", "mProcLock"})
    public void makeActive(IApplicationThread thread, ProcessStatsService tracker) {
        mProfile.onProcessActive(thread, tracker);
+1 −1
Original line number Diff line number Diff line
@@ -1407,7 +1407,7 @@ public final class BroadcastQueueModernImplTest {
                eq(BROADCAST_DELIVERY_EVENT_REPORTED__RECEIVER_TYPE__MANIFEST),
                eq(BROADCAST_DELIVERY_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_COLD),
                anyLong(), anyLong(), anyLong(), anyInt(), nullable(String.class),
                anyString(), anyInt(), anyInt()),
                anyString(), anyInt(), anyInt(), anyInt(), anyInt(), anyInt()),
                times(1));
    }