Revert "Collect NeededUriGrants without holding locks."
This reverts commit 344ce7ce703f806f50ea253047d6dbbb10eaa424.
Bug: 115619667
Bug: 134494852
Reason for revert: Causes "Permission Denial: opening provider" error
Change-Id: I9986618b6e338fef9843b2103da6a728a36c6ea6
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index f8bfacb..765c9d0 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -265,7 +265,6 @@
import com.android.server.firewall.IntentFirewall;
import com.android.server.pm.UserManagerService;
import com.android.server.policy.PermissionPolicyInternal;
-import com.android.server.uri.NeededUriGrants;
import com.android.server.uri.UriGrantsManagerInternal;
import com.android.server.vr.VrManagerInternal;
@@ -1541,19 +1540,11 @@
throw new IllegalArgumentException("File descriptors passed in Intent");
}
- final ActivityRecord r;
synchronized (mGlobalLock) {
- r = ActivityRecord.isInStackLocked(token);
+ ActivityRecord r = ActivityRecord.isInStackLocked(token);
if (r == null) {
return true;
}
- }
-
- // Carefully collect grants without holding lock
- final NeededUriGrants resultGrants = mUgmInternal.checkGrantUriPermissionFromIntent(
- Binder.getCallingUid(), resultData, r.packageName, r.mUserId);
-
- synchronized (mGlobalLock) {
// Keep track of the root activity of the task before we finish it
final TaskRecord tr = r.getTaskRecord();
ActivityRecord rootR = tr.getRootActivity();
@@ -1615,7 +1606,7 @@
r.mRelaunchReason = RELAUNCH_REASON_NONE;
} else {
res = tr.getStack().requestFinishActivityLocked(token, resultCode,
- resultData, resultGrants, "app-request", true);
+ resultData, "app-request", true);
if (!res) {
Slog.i(TAG, "Failed to finish by app-request");
}
@@ -2141,23 +2132,14 @@
@Override
public boolean navigateUpTo(IBinder token, Intent destIntent, int resultCode,
Intent resultData) {
- final ActivityRecord r;
+
synchronized (mGlobalLock) {
- r = ActivityRecord.isInStackLocked(token);
- if (r == null) {
- return false;
+ final ActivityRecord r = ActivityRecord.forTokenLocked(token);
+ if (r != null) {
+ return r.getActivityStack().navigateUpToLocked(
+ r, destIntent, resultCode, resultData);
}
- }
-
- // Carefully collect grants without holding lock
- final NeededUriGrants destGrants = mUgmInternal.checkGrantUriPermissionFromIntent(
- Binder.getCallingUid(), destIntent, r.packageName, r.mUserId);
- final NeededUriGrants resultGrants = mUgmInternal.checkGrantUriPermissionFromIntent(
- Binder.getCallingUid(), resultData, r.packageName, r.mUserId);
-
- synchronized (mGlobalLock) {
- return r.getActivityStack().navigateUpToLocked(
- r, destIntent, destGrants, resultCode, resultData, resultGrants);
+ return false;
}
}
@@ -6607,23 +6589,14 @@
@Override
public void sendActivityResult(int callingUid, IBinder activityToken, String resultWho,
- int requestCode, int resultCode, Intent resultData) {
- final ActivityRecord r;
+ int requestCode, int resultCode, Intent data) {
synchronized (mGlobalLock) {
- r = ActivityRecord.isInStackLocked(activityToken);
- if (r == null || r.getActivityStack() == null) {
- return;
+ final ActivityRecord r = ActivityRecord.isInStackLocked(activityToken);
+ if (r != null && r.getActivityStack() != null) {
+ r.getActivityStack().sendActivityResultLocked(callingUid, r, resultWho,
+ requestCode, resultCode, data);
}
}
-
- // Carefully collect grants without holding lock
- final NeededUriGrants resultGrants = mUgmInternal.checkGrantUriPermissionFromIntent(
- Binder.getCallingUid(), resultData, r.packageName, r.mUserId);
-
- synchronized (mGlobalLock) {
- r.getActivityStack().sendActivityResultLocked(callingUid, r, resultWho,
- requestCode, resultCode, resultData, resultGrants);
- }
}
@Override