Merge "Use consistent naming for sharing broadcaster's identity"

This commit is contained in:
Michael Groover
2023-02-08 17:41:02 +00:00
committed by Android (Google) Code Review
7 changed files with 44 additions and 43 deletions

View File

@@ -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,

View File

@@ -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 {

View File

@@ -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

View File

@@ -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) {

View File

@@ -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);
}

View File

@@ -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();
}

View File

@@ -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);
}
}
}