19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage com.android.server.am;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
19f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackbornimport android.app.AppOpsManager;
201ccac75e1f1b97eccb916a8de04fc1012b30f6e5Suchi Amalapurapuimport android.content.IIntentReceiver;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.ComponentName;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Intent;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.ActivityInfo;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.ResolveInfo;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Binder;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Bundle;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.IBinder;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.SystemClock;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.PrintWriterPrinter;
3039792d2262352ae775091876d5488d2412a2ff92Dianne Hackbornimport android.util.TimeUtils;
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.PrintWriter;
33d99b293d5f11b784d7406f5398bc654920b42482Dianne Hackbornimport java.util.Date;
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.List;
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * An active intent broadcast.
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
39be4e6aaa0252dd7da28b7aa85beba982538efa46Dianne Hackbornfinal class BroadcastRecord extends Binder {
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    final Intent intent;    // the original intent that generated us
41a40cfeb55f6caa35fee894b86175b7d916520c80Dianne Hackborn    final ComponentName targetComp; // original component name set on the intent
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    final ProcessRecord callerApp; // process that sent this
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    final String callerPackage; // who sent this
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    final int callingPid;   // the pid of who sent this
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    final int callingUid;   // the uid of who sent this
4668d881cf2d2b252f6f795cd64d43e316a1d736e5Dianne Hackborn    final boolean ordered;  // serialize the send to receivers?
4768d881cf2d2b252f6f795cd64d43e316a1d736e5Dianne Hackborn    final boolean sticky;   // originated from existing sticky data?
4812527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn    final boolean initialSticky; // initial broadcast from register to sticky?
49786b44046a79d6c4c9cd07f5989d491c7196ad80Dianne Hackborn    final int userId;       // user id this broadcast was for
5049660c7c24f24c3394233e3bbf94c96281e8c408Ben Gruver    final String resolvedType; // the resolved data type
5168d881cf2d2b252f6f795cd64d43e316a1d736e5Dianne Hackborn    final String requiredPermission; // a permission the caller has required
52f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn    final int appOp;        // an app op that is associated with this broadcast
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    final List receivers;   // contains BroadcastFilter and ResolveInfo
54b5a8654dea9ea8443b41f8ff3668ae4074e13a07Johannes Carlsson    IIntentReceiver resultTo; // who receives final result if non-null
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    long dispatchTime;      // when dispatch started on this set of receivers
56d99b293d5f11b784d7406f5398bc654920b42482Dianne Hackborn    long dispatchClockTime; // the clock time the dispatch started
5712527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn    long receiverTime;      // when current receiver started for timeouts.
5812527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn    long finishTime;        // when we finished the broadcast.
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int resultCode;         // current result code value.
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String resultData;      // current result data value.
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Bundle resultExtras;    // current result extra data values.
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean resultAbort;    // current result abortBroadcast value.
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int nextReceiver;       // next receiver to be executed.
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    IBinder receiver;       // who is currently running, null if none.
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int state;
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int anrCount;           // has this broadcast record hit any ANRs?
6740c8db5a28e9abae2033facce1354e3677911fccDianne Hackborn    BroadcastQueue queue;   // the outbound queue handling this broadcast
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int IDLE = 0;
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int APP_RECEIVE = 1;
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int CALL_IN_RECEIVE = 2;
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int CALL_DONE_RECEIVE = 3;
736285a32f74890b761579b4f67afde1b08763fd0aDianne Hackborn    static final int WAITING_SERVICES = 4;
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // The following are set when we are calling a receiver (one that
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // was found in our list of registered receivers).
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    BroadcastFilter curFilter;
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // The following are set only when we are launching a receiver (one
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // that was found by querying the package manager).
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    ProcessRecord curApp;       // hosting application of current receiver.
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    ComponentName curComponent; // the receiver class that is currently running.
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    ActivityInfo curReceiver;   // info about the receiver that is currently running.
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void dump(PrintWriter pw, String prefix) {
8639792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn        final long now = SystemClock.uptimeMillis();
8739792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn
88786b44046a79d6c4c9cd07f5989d491c7196ad80Dianne Hackborn        pw.print(prefix); pw.print(this); pw.print(" to user "); pw.println(userId);
89c0bd747b0605af251ff136277f14220a5a4c9818Dianne Hackborn        pw.print(prefix); pw.println(intent.toInsecureString());
90a40cfeb55f6caa35fee894b86175b7d916520c80Dianne Hackborn        if (targetComp != null && targetComp != intent.getComponent()) {
91a40cfeb55f6caa35fee894b86175b7d916520c80Dianne Hackborn            pw.print(prefix); pw.print("  targetComp: "); pw.println(targetComp.toShortString());
92a40cfeb55f6caa35fee894b86175b7d916520c80Dianne Hackborn        }
93c0bd747b0605af251ff136277f14220a5a4c9818Dianne Hackborn        Bundle bundle = intent.getExtras();
94c0bd747b0605af251ff136277f14220a5a4c9818Dianne Hackborn        if (bundle != null) {
95a40cfeb55f6caa35fee894b86175b7d916520c80Dianne Hackborn            pw.print(prefix); pw.print("  extras: "); pw.println(bundle.toString());
9612527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        }
97043fcd9847a804bc6394728e5785aecc495e6347Dianne Hackborn        pw.print(prefix); pw.print("caller="); pw.print(callerPackage); pw.print(" ");
98043fcd9847a804bc6394728e5785aecc495e6347Dianne Hackborn                pw.print(callerApp != null ? callerApp.toShortString() : "null");
9939792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn                pw.print(" pid="); pw.print(callingPid);
10039792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn                pw.print(" uid="); pw.println(callingUid);
101f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn        if (requiredPermission != null || appOp != AppOpsManager.OP_NONE) {
102f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn            pw.print(prefix); pw.print("requiredPermission="); pw.print(requiredPermission);
103f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn                    pw.print("  appOp="); pw.println(appOp);
10412527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        }
105d99b293d5f11b784d7406f5398bc654920b42482Dianne Hackborn        pw.print(prefix); pw.print("dispatchClockTime=");
106d99b293d5f11b784d7406f5398bc654920b42482Dianne Hackborn                pw.println(new Date(dispatchClockTime));
10739792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn        pw.print(prefix); pw.print("dispatchTime=");
10839792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn                TimeUtils.formatDuration(dispatchTime, now, pw);
10912527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        if (finishTime != 0) {
11039792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn            pw.print(" finishTime="); TimeUtils.formatDuration(finishTime, now, pw);
11112527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        } else {
11239792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn            pw.print(" receiverTime="); TimeUtils.formatDuration(receiverTime, now, pw);
11312527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        }
11439792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn        pw.println("");
11512527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        if (anrCount != 0) {
11639792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn            pw.print(prefix); pw.print("anrCount="); pw.println(anrCount);
11712527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        }
11812527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        if (resultTo != null || resultCode != -1 || resultData != null) {
11939792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn            pw.print(prefix); pw.print("resultTo="); pw.print(resultTo);
12039792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn                    pw.print(" resultCode="); pw.print(resultCode);
12139792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn                    pw.print(" resultData="); pw.println(resultData);
12212527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        }
12312527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        if (resultExtras != null) {
12439792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn            pw.print(prefix); pw.print("resultExtras="); pw.println(resultExtras);
12512527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        }
12612527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        if (resultAbort || ordered || sticky || initialSticky) {
12739792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn            pw.print(prefix); pw.print("resultAbort="); pw.print(resultAbort);
12839792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn                    pw.print(" ordered="); pw.print(ordered);
12939792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn                    pw.print(" sticky="); pw.print(sticky);
13039792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn                    pw.print(" initialSticky="); pw.println(initialSticky);
13112527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        }
13212527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        if (nextReceiver != 0 || receiver != null) {
13339792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn            pw.print(prefix); pw.print("nextReceiver="); pw.print(nextReceiver);
13439792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn                    pw.print(" receiver="); pw.println(receiver);
13512527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        }
13612527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        if (curFilter != null) {
13739792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn            pw.print(prefix); pw.print("curFilter="); pw.println(curFilter);
13812527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        }
13912527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        if (curReceiver != null) {
14039792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn            pw.print(prefix); pw.print("curReceiver="); pw.println(curReceiver);
14112527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        }
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (curApp != null) {
14339792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn            pw.print(prefix); pw.print("curApp="); pw.println(curApp);
14439792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn            pw.print(prefix); pw.print("curComponent=");
14539792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn                    pw.println((curComponent != null ? curComponent.toShortString() : "--"));
146399cccb85749e02f6d3e12d1d2846310e7cbfdf1Dianne Hackborn            if (curReceiver != null && curReceiver.applicationInfo != null) {
14739792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn                pw.print(prefix); pw.print("curSourceDir=");
14839792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn                        pw.println(curReceiver.applicationInfo.sourceDir);
149399cccb85749e02f6d3e12d1d2846310e7cbfdf1Dianne Hackborn            }
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
151786b44046a79d6c4c9cd07f5989d491c7196ad80Dianne Hackborn        if (state != IDLE) {
152786b44046a79d6c4c9cd07f5989d491c7196ad80Dianne Hackborn            String stateStr = " (?)";
153786b44046a79d6c4c9cd07f5989d491c7196ad80Dianne Hackborn            switch (state) {
154786b44046a79d6c4c9cd07f5989d491c7196ad80Dianne Hackborn                case APP_RECEIVE:       stateStr=" (APP_RECEIVE)"; break;
155786b44046a79d6c4c9cd07f5989d491c7196ad80Dianne Hackborn                case CALL_IN_RECEIVE:   stateStr=" (CALL_IN_RECEIVE)"; break;
156786b44046a79d6c4c9cd07f5989d491c7196ad80Dianne Hackborn                case CALL_DONE_RECEIVE: stateStr=" (CALL_DONE_RECEIVE)"; break;
1576285a32f74890b761579b4f67afde1b08763fd0aDianne Hackborn                case WAITING_SERVICES:  stateStr=" (WAITING_SERVICES)"; break;
158786b44046a79d6c4c9cd07f5989d491c7196ad80Dianne Hackborn            }
159786b44046a79d6c4c9cd07f5989d491c7196ad80Dianne Hackborn            pw.print(prefix); pw.print("state="); pw.print(state); pw.println(stateStr);
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        final int N = receivers != null ? receivers.size() : 0;
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        String p2 = prefix + "  ";
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        PrintWriterPrinter printer = new PrintWriterPrinter(pw);
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        for (int i=0; i<N; i++) {
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Object o = receivers.get(i);
16639792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn            pw.print(prefix); pw.print("Receiver #"); pw.print(i);
16739792d2262352ae775091876d5488d2412a2ff92Dianne Hackborn                    pw.print(": "); pw.println(o);
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            if (o instanceof BroadcastFilter)
16912527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn                ((BroadcastFilter)o).dumpBrief(pw, p2);
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            else if (o instanceof ResolveInfo)
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                ((ResolveInfo)o).dump(printer, p2);
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
17540c8db5a28e9abae2033facce1354e3677911fccDianne Hackborn    BroadcastRecord(BroadcastQueue _queue,
176f46723b41f723ebfc9ed18c7c409b319f4b5e539Christopher Tate            Intent _intent, ProcessRecord _callerApp, String _callerPackage,
17749660c7c24f24c3394233e3bbf94c96281e8c408Ben Gruver            int _callingPid, int _callingUid, String _resolvedType, String _requiredPermission,
17849660c7c24f24c3394233e3bbf94c96281e8c408Ben Gruver            int _appOp, List _receivers, IIntentReceiver _resultTo, int _resultCode,
17968d881cf2d2b252f6f795cd64d43e316a1d736e5Dianne Hackborn            String _resultData, Bundle _resultExtras, boolean _serialized,
1808bf06edac2088ad100e67dcb00a46d3f0f95c126Amith Yamasani            boolean _sticky, boolean _initialSticky,
181786b44046a79d6c4c9cd07f5989d491c7196ad80Dianne Hackborn            int _userId) {
182f46723b41f723ebfc9ed18c7c409b319f4b5e539Christopher Tate        queue = _queue;
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        intent = _intent;
184a40cfeb55f6caa35fee894b86175b7d916520c80Dianne Hackborn        targetComp = _intent.getComponent();
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        callerApp = _callerApp;
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        callerPackage = _callerPackage;
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        callingPid = _callingPid;
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        callingUid = _callingUid;
18949660c7c24f24c3394233e3bbf94c96281e8c408Ben Gruver        resolvedType = _resolvedType;
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        requiredPermission = _requiredPermission;
191f51f61269aacdfcf737b2c32b6b216c48ab61e65Dianne Hackborn        appOp = _appOp;
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        receivers = _receivers;
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        resultTo = _resultTo;
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        resultCode = _resultCode;
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        resultData = _resultData;
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        resultExtras = _resultExtras;
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        ordered = _serialized;
19868d881cf2d2b252f6f795cd64d43e316a1d736e5Dianne Hackborn        sticky = _sticky;
19912527f9fb1cb0a1ad3be8149c1c88a0e731cb4d6Dianne Hackborn        initialSticky = _initialSticky;
200786b44046a79d6c4c9cd07f5989d491c7196ad80Dianne Hackborn        userId = _userId;
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        nextReceiver = 0;
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        state = IDLE;
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String toString() {
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return "BroadcastRecord{"
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            + Integer.toHexString(System.identityHashCode(this))
208b12e1354f25f04e9c9a71da76c6fca858b7d39d0Dianne Hackborn            + " u" + userId + " " + intent.getAction() + "}";
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
211