Merge "Use consistent naming for sharing broadcaster's identity"
This commit is contained in:
committed by
Android (Google) Code Review
commit
3260acee97
@@ -786,10 +786,10 @@ public final class ActivityThread extends ClientTransactionHandler
|
||||
static final class ReceiverData extends BroadcastReceiver.PendingResult {
|
||||
public ReceiverData(Intent intent, int resultCode, String resultData, Bundle resultExtras,
|
||||
boolean ordered, boolean sticky, boolean assumeDelivered, IBinder token,
|
||||
int sendingUser, int sentFromUid, String sentFromPackage) {
|
||||
int sendingUser, int sendingUid, String sendingPackage) {
|
||||
super(resultCode, resultData, resultExtras, TYPE_COMPONENT, ordered, sticky,
|
||||
assumeDelivered, token, sendingUser, intent.getFlags(), sentFromUid,
|
||||
sentFromPackage);
|
||||
assumeDelivered, token, sendingUser, intent.getFlags(), sendingUid,
|
||||
sendingPackage);
|
||||
this.intent = intent;
|
||||
}
|
||||
|
||||
@@ -1045,11 +1045,11 @@ public final class ActivityThread extends ClientTransactionHandler
|
||||
public final void scheduleReceiver(Intent intent, ActivityInfo info,
|
||||
CompatibilityInfo compatInfo, int resultCode, String data, Bundle extras,
|
||||
boolean ordered, boolean assumeDelivered, int sendingUser, int processState,
|
||||
int sentFromUid, String sentFromPackage) {
|
||||
int sendingUid, String sendingPackage) {
|
||||
updateProcessState(processState, false);
|
||||
ReceiverData r = new ReceiverData(intent, resultCode, data, extras,
|
||||
ordered, false, assumeDelivered, mAppThread.asBinder(), sendingUser,
|
||||
sentFromUid, sentFromPackage);
|
||||
sendingUid, sendingPackage);
|
||||
r.info = info;
|
||||
sendMessage(H.RECEIVER, r);
|
||||
}
|
||||
@@ -1061,12 +1061,12 @@ public final class ActivityThread extends ClientTransactionHandler
|
||||
scheduleRegisteredReceiver(r.receiver, r.intent,
|
||||
r.resultCode, r.data, r.extras, r.ordered, r.sticky,
|
||||
r.assumeDelivered, r.sendingUser, r.processState,
|
||||
r.sentFromUid, r.sentFromPackage);
|
||||
r.sendingUid, r.sendingPackage);
|
||||
} else {
|
||||
scheduleReceiver(r.intent, r.activityInfo, r.compatInfo,
|
||||
r.resultCode, r.data, r.extras, r.sync,
|
||||
r.assumeDelivered, r.sendingUser, r.processState,
|
||||
r.sentFromUid, r.sentFromPackage);
|
||||
r.sendingUid, r.sendingPackage);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1297,7 +1297,7 @@ public final class ActivityThread extends ClientTransactionHandler
|
||||
public void scheduleRegisteredReceiver(IIntentReceiver receiver, Intent intent,
|
||||
int resultCode, String dataStr, Bundle extras, boolean ordered,
|
||||
boolean sticky, boolean assumeDelivered, int sendingUser, int processState,
|
||||
int sentFromUid, String sentFromPackage)
|
||||
int sendingUid, String sendingPackage)
|
||||
throws RemoteException {
|
||||
updateProcessState(processState, false);
|
||||
|
||||
@@ -1308,16 +1308,16 @@ public final class ActivityThread extends ClientTransactionHandler
|
||||
if (receiver instanceof LoadedApk.ReceiverDispatcher.InnerReceiver) {
|
||||
((LoadedApk.ReceiverDispatcher.InnerReceiver) receiver).performReceive(intent,
|
||||
resultCode, dataStr, extras, ordered, sticky, assumeDelivered, sendingUser,
|
||||
sentFromUid, sentFromPackage);
|
||||
sendingUid, sendingPackage);
|
||||
} else {
|
||||
if (!assumeDelivered) {
|
||||
Log.wtf(TAG, "scheduleRegisteredReceiver() called for " + receiver
|
||||
+ " and " + intent + " without mechanism to finish delivery");
|
||||
}
|
||||
if (sentFromUid != Process.INVALID_UID || sentFromPackage != null) {
|
||||
if (sendingUid != Process.INVALID_UID || sendingPackage != null) {
|
||||
Log.wtf(TAG,
|
||||
"scheduleRegisteredReceiver() called for " + receiver + " and " + intent
|
||||
+ " from " + sentFromPackage + " (UID: " + sentFromUid
|
||||
+ " from " + sendingPackage + " (UID: " + sendingUid
|
||||
+ ") without mechanism to propagate the sender's identity");
|
||||
}
|
||||
receiver.performReceive(intent, resultCode, dataStr, extras, ordered, sticky,
|
||||
|
||||
@@ -1683,13 +1683,13 @@ public final class LoadedApk {
|
||||
performReceive(intent, resultCode, data, extras, ordered, sticky,
|
||||
BroadcastReceiver.PendingResult.guessAssumeDelivered(
|
||||
BroadcastReceiver.PendingResult.TYPE_REGISTERED, ordered),
|
||||
sendingUser, /*sentFromUid=*/ Process.INVALID_UID,
|
||||
/*sentFromPackage=*/ null);
|
||||
sendingUser, /*sendingUid=*/ Process.INVALID_UID,
|
||||
/*sendingPackage=*/ null);
|
||||
}
|
||||
|
||||
public void performReceive(Intent intent, int resultCode, String data,
|
||||
Bundle extras, boolean ordered, boolean sticky, boolean assumeDelivered,
|
||||
int sendingUser, int sentFromUid, String sentFromPackage) {
|
||||
int sendingUser, int sendingUid, String sendingPackage) {
|
||||
final LoadedApk.ReceiverDispatcher rd;
|
||||
if (intent == null) {
|
||||
Log.wtf(TAG, "Null intent received");
|
||||
@@ -1705,7 +1705,7 @@ public final class LoadedApk {
|
||||
if (rd != null) {
|
||||
rd.performReceive(intent, resultCode, data, extras,
|
||||
ordered, sticky, assumeDelivered, sendingUser,
|
||||
sentFromUid, sentFromPackage);
|
||||
sendingUid, sendingPackage);
|
||||
} else if (!assumeDelivered) {
|
||||
// The activity manager dispatched a broadcast to a registered
|
||||
// receiver in this process, but before it could be delivered the
|
||||
@@ -1746,11 +1746,11 @@ public final class LoadedApk {
|
||||
|
||||
public Args(Intent intent, int resultCode, String resultData, Bundle resultExtras,
|
||||
boolean ordered, boolean sticky, boolean assumeDelivered, int sendingUser,
|
||||
int sentFromUid, String sentFromPackage) {
|
||||
int sendingUid, String sendingPackage) {
|
||||
super(resultCode, resultData, resultExtras,
|
||||
mRegistered ? TYPE_REGISTERED : TYPE_UNREGISTERED, ordered,
|
||||
sticky, assumeDelivered, mAppThread.asBinder(), sendingUser,
|
||||
intent.getFlags(), sentFromUid, sentFromPackage);
|
||||
intent.getFlags(), sendingUid, sendingPackage);
|
||||
mCurIntent = intent;
|
||||
}
|
||||
|
||||
@@ -1874,9 +1874,9 @@ public final class LoadedApk {
|
||||
|
||||
public void performReceive(Intent intent, int resultCode, String data,
|
||||
Bundle extras, boolean ordered, boolean sticky, boolean assumeDelivered,
|
||||
int sendingUser, int sentFromUid, String sentFromPackage) {
|
||||
int sendingUser, int sendingUid, String sendingPackage) {
|
||||
final Args args = new Args(intent, resultCode, data, extras, ordered,
|
||||
sticky, assumeDelivered, sendingUser, sentFromUid, sentFromPackage);
|
||||
sticky, assumeDelivered, sendingUser, sendingUid, sendingPackage);
|
||||
if (intent == null) {
|
||||
Log.wtf(TAG, "Null intent received");
|
||||
} else {
|
||||
|
||||
@@ -38,8 +38,8 @@ parcelable ReceiverInfo {
|
||||
int sendingUser;
|
||||
int processState;
|
||||
int resultCode;
|
||||
int sentFromUid = -1;
|
||||
String sentFromPackage;
|
||||
int sendingUid = -1;
|
||||
String sendingPackage;
|
||||
|
||||
/**
|
||||
* True if this instance represents a registered receiver and false if this instance
|
||||
|
||||
@@ -273,7 +273,7 @@ public class BroadcastQueueImpl extends BroadcastQueue {
|
||||
performReceiveLocked(oldRecord.resultToApp, oldRecord.resultTo,
|
||||
oldRecord.intent,
|
||||
Activity.RESULT_CANCELED, null, null,
|
||||
false, false, r.shareIdentity, oldRecord.userId,
|
||||
false, false, oldRecord.shareIdentity, oldRecord.userId,
|
||||
oldRecord.callingUid, r.callingUid, r.callerPackage,
|
||||
SystemClock.uptimeMillis() - oldRecord.enqueueTime, 0);
|
||||
} catch (RemoteException e) {
|
||||
|
||||
@@ -1064,7 +1064,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
|
||||
if (thread != null) {
|
||||
mService.mOomAdjuster.mCachedAppOptimizer.unfreezeTemporarily(
|
||||
app, OOM_ADJ_REASON_FINISH_RECEIVER);
|
||||
if (r.shareIdentity) {
|
||||
if (r.shareIdentity && app.uid != r.callingUid) {
|
||||
mService.mPackageManagerInt.grantImplicitAccess(r.userId, r.intent,
|
||||
UserHandle.getAppId(app.uid), r.callingUid, true);
|
||||
}
|
||||
|
||||
@@ -171,8 +171,9 @@ final class BroadcastReceiverBatch {
|
||||
// Add a ReceiverInfo for a registered receiver.
|
||||
void schedule(@Nullable IIntentReceiver receiver, Intent intent,
|
||||
int resultCode, @Nullable String data, @Nullable Bundle extras, boolean ordered,
|
||||
boolean sticky, boolean assumeDelivered, int sendingUser, int callingUid,
|
||||
String callingPackage, int processState, @Nullable BroadcastRecord r, int index) {
|
||||
boolean sticky, boolean assumeDelivered, int sendingUser, int sendingUid,
|
||||
@Nullable String sendingPackage, int processState, @Nullable BroadcastRecord r,
|
||||
int index) {
|
||||
ReceiverInfo ri = new ReceiverInfo();
|
||||
ri.intent = intent;
|
||||
ri.data = data;
|
||||
@@ -185,8 +186,8 @@ final class BroadcastReceiverBatch {
|
||||
ri.receiver = receiver;
|
||||
ri.ordered = ordered;
|
||||
ri.sticky = sticky;
|
||||
ri.sentFromUid = callingUid;
|
||||
ri.sentFromPackage = callingPackage;
|
||||
ri.sendingUid = sendingUid;
|
||||
ri.sendingPackage = sendingPackage;
|
||||
|
||||
mReceivers.add(ri);
|
||||
mCookies.add(cookiePool.next().set(r, index));
|
||||
@@ -195,7 +196,7 @@ final class BroadcastReceiverBatch {
|
||||
void schedule(@Nullable Intent intent, @Nullable ActivityInfo activityInfo,
|
||||
@Nullable CompatibilityInfo compatInfo, int resultCode, @Nullable String data,
|
||||
@Nullable Bundle extras, boolean sync, boolean assumeDelivered, int sendingUser,
|
||||
int callingUid, @Nullable String callingPackage, int processState,
|
||||
int sendingUid, @Nullable String sendingPackage, int processState,
|
||||
@Nullable BroadcastRecord r, int index) {
|
||||
ReceiverInfo ri = new ReceiverInfo();
|
||||
ri.intent = intent;
|
||||
@@ -209,8 +210,8 @@ final class BroadcastReceiverBatch {
|
||||
ri.activityInfo = activityInfo;
|
||||
ri.compatInfo = compatInfo;
|
||||
ri.sync = sync;
|
||||
ri.sentFromUid = callingUid;
|
||||
ri.sentFromPackage = callingPackage;
|
||||
ri.sendingUid = sendingUid;
|
||||
ri.sendingPackage = sendingPackage;
|
||||
mReceivers.add(ri);
|
||||
mCookies.add(cookiePool.next().set(r, index));
|
||||
}
|
||||
@@ -223,21 +224,21 @@ final class BroadcastReceiverBatch {
|
||||
ArrayList<ReceiverInfo> registeredReceiver(@Nullable IIntentReceiver receiver,
|
||||
@Nullable Intent intent, int resultCode, @Nullable String data,
|
||||
@Nullable Bundle extras, boolean ordered, boolean sticky, boolean assumeDelivered,
|
||||
int sendingUser, int callingUid, String callingPackage, int processState) {
|
||||
int sendingUser, int sendingUid, @Nullable String sendingPackage, int processState) {
|
||||
reset();
|
||||
schedule(receiver, intent, resultCode, data, extras, ordered, sticky, assumeDelivered,
|
||||
sendingUser, callingUid, callingPackage, processState, null, 0);
|
||||
sendingUser, sendingUid, sendingPackage, processState, null, 0);
|
||||
return receivers();
|
||||
}
|
||||
|
||||
ArrayList<ReceiverInfo> manifestReceiver(@Nullable Intent intent,
|
||||
@Nullable ActivityInfo activityInfo, @Nullable CompatibilityInfo compatInfo,
|
||||
int resultCode, @Nullable String data, @Nullable Bundle extras, boolean sync,
|
||||
boolean assumeDelivered, int sendingUser, int callingUid, String callingPackage,
|
||||
int processState) {
|
||||
boolean assumeDelivered, int sendingUser, int sendingUid,
|
||||
@Nullable String sendingPackage, int processState) {
|
||||
reset();
|
||||
schedule(intent, activityInfo, compatInfo, resultCode, data, extras, sync, assumeDelivered,
|
||||
sendingUser, callingUid, callingPackage, processState, null, 0);
|
||||
sendingUser, sendingUid, sendingPackage, processState, null, 0);
|
||||
return receivers();
|
||||
}
|
||||
|
||||
|
||||
@@ -48,12 +48,12 @@ public class SameProcessApplicationThread extends IApplicationThread.Default {
|
||||
@Override
|
||||
public void scheduleReceiver(Intent intent, ActivityInfo info, CompatibilityInfo compatInfo,
|
||||
int resultCode, String data, Bundle extras, boolean ordered, boolean assumeDelivered,
|
||||
int sendingUser, int processState, int sentFromUid, String sentFromPackage) {
|
||||
int sendingUser, int processState, int sendingUid, String sendingPackage) {
|
||||
mHandler.post(() -> {
|
||||
try {
|
||||
mWrapped.scheduleReceiver(intent, info, compatInfo, resultCode, data, extras,
|
||||
ordered, assumeDelivered, sendingUser, processState, sentFromUid,
|
||||
sentFromPackage);
|
||||
ordered, assumeDelivered, sendingUser, processState, sendingUid,
|
||||
sendingPackage);
|
||||
} catch (RemoteException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
@@ -63,12 +63,12 @@ public class SameProcessApplicationThread extends IApplicationThread.Default {
|
||||
@Override
|
||||
public void scheduleRegisteredReceiver(IIntentReceiver receiver, Intent intent, int resultCode,
|
||||
String data, Bundle extras, boolean ordered, boolean sticky, boolean assumeDelivered,
|
||||
int sendingUser, int processState, int sentFromUid, String sentFromPackage) {
|
||||
int sendingUser, int processState, int sendingUid, String sendingPackage) {
|
||||
mHandler.post(() -> {
|
||||
try {
|
||||
mWrapped.scheduleRegisteredReceiver(receiver, intent, resultCode, data, extras,
|
||||
ordered, sticky, assumeDelivered, sendingUser, processState, sentFromUid,
|
||||
sentFromPackage);
|
||||
ordered, sticky, assumeDelivered, sendingUser, processState, sendingUid,
|
||||
sendingPackage);
|
||||
} catch (RemoteException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
@@ -82,11 +82,11 @@ public class SameProcessApplicationThread extends IApplicationThread.Default {
|
||||
if (r.registered) {
|
||||
scheduleRegisteredReceiver(r.receiver, r.intent,
|
||||
r.resultCode, r.data, r.extras, r.ordered, r.sticky, r.assumeDelivered,
|
||||
r.sendingUser, r.processState, r.sentFromUid, r.sentFromPackage);
|
||||
r.sendingUser, r.processState, r.sendingUid, r.sendingPackage);
|
||||
} else {
|
||||
scheduleReceiver(r.intent, r.activityInfo, r.compatInfo,
|
||||
r.resultCode, r.data, r.extras, r.sync, r.assumeDelivered,
|
||||
r.sendingUser, r.processState, r.sentFromUid, r.sentFromPackage);
|
||||
r.sendingUser, r.processState, r.sendingUid, r.sendingPackage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user