Merge "Use consistent naming for sharing broadcaster's identity"
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index eb57b3d..8395ec6 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -786,10 +786,10 @@
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 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 @@
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 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 @@
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,
diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java
index c13da0b..dd6b8b5 100644
--- a/core/java/android/app/LoadedApk.java
+++ b/core/java/android/app/LoadedApk.java
@@ -1683,13 +1683,13 @@
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 @@
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 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 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 {
diff --git a/core/java/android/app/ReceiverInfo.aidl b/core/java/android/app/ReceiverInfo.aidl
index 7364d0f..6916f71 100644
--- a/core/java/android/app/ReceiverInfo.aidl
+++ b/core/java/android/app/ReceiverInfo.aidl
@@ -38,8 +38,8 @@
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
diff --git a/services/core/java/com/android/server/am/BroadcastQueueImpl.java b/services/core/java/com/android/server/am/BroadcastQueueImpl.java
index 7290f32..c07ef1d 100644
--- a/services/core/java/com/android/server/am/BroadcastQueueImpl.java
+++ b/services/core/java/com/android/server/am/BroadcastQueueImpl.java
@@ -273,7 +273,7 @@
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) {
diff --git a/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java b/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
index b952ce0..f954420 100644
--- a/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
+++ b/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
@@ -1064,7 +1064,7 @@
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);
}
diff --git a/services/core/java/com/android/server/am/BroadcastReceiverBatch.java b/services/core/java/com/android/server/am/BroadcastReceiverBatch.java
index 153403a..63575ba 100644
--- a/services/core/java/com/android/server/am/BroadcastReceiverBatch.java
+++ b/services/core/java/com/android/server/am/BroadcastReceiverBatch.java
@@ -171,8 +171,9 @@
// 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 @@
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 @@
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 @@
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 @@
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();
}
diff --git a/services/core/java/com/android/server/am/SameProcessApplicationThread.java b/services/core/java/com/android/server/am/SameProcessApplicationThread.java
index dcb02ea..82dd5c2 100644
--- a/services/core/java/com/android/server/am/SameProcessApplicationThread.java
+++ b/services/core/java/com/android/server/am/SameProcessApplicationThread.java
@@ -48,12 +48,12 @@
@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 @@
@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 @@
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);
}
}
}