diff options
author | Cassie Wang <cassiewang@google.com> | 2021-07-22 18:55:19 +0000 |
---|---|---|
committer | Cassie Wang <cassiewang@google.com> | 2021-08-05 01:13:19 +0000 |
commit | 28a9850a8da2dd80920f5f3ff78f54ef5eedcf32 (patch) | |
tree | a3b3fece8d712118ca7bc02c2ddf91ee83b326cd /apex | |
parent | 8dfe5d9a488d741f6926f8c0d5330e47cf934a95 (diff) |
Rename the user-to-execute-as to "targetUser".
Aligns it with more common conventions of "target" meaning the
potentially different user we'll be executing as. And keeping "calling"
to refer to the original user who made the request.
Bug: 194413082
Test: presubmit
Change-Id: Id762ed7be8da783f7372841b68e22f088a889b97
Diffstat (limited to 'apex')
-rw-r--r-- | apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java | 273 |
1 files changed, 162 insertions, 111 deletions
diff --git a/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java b/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java index db23a6dc3047..6a4f4db5ef24 100644 --- a/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java +++ b/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java @@ -332,17 +332,20 @@ public class AppSearchManagerService extends SystemService { long totalLatencyStartTimeMillis = SystemClock.elapsedRealtime(); int callingUid = Binder.getCallingUid(); - UserHandle callingUser = handleIncomingUser(userHandle, callingUid); + UserHandle targetUser = handleIncomingUser(userHandle, callingUid); EXECUTOR.execute(() -> { @AppSearchResult.ResultCode int statusCode = AppSearchResult.RESULT_OK; AppSearchUserInstance instance = null; int operationSuccessCount = 0; int operationFailureCount = 0; try { - Context userContext = mContext.createContextAsUser(callingUser, /*flags=*/ 0); - verifyUserUnlocked(callingUser); - verifyCallingPackage(userContext, callingUser, callingUid, packageName); - verifyNotInstantApp(userContext, packageName); + Context targetUserContext = mContext.createContextAsUser(targetUser, + /*flags=*/ 0); + verifyUserUnlocked(targetUser); + // TODO(b/193902620): Pass in the callingUser and not the targetUser. + verifyCallingPackage(targetUserContext, targetUser, callingUid, packageName); + // TODO(b/194939218): Pass in the callingUser and not the targetUser. + verifyNotInstantApp(targetUserContext, packageName); List<AppSearchSchema> schemas = new ArrayList<>(schemaBundles.size()); for (int i = 0; i < schemaBundles.size(); i++) { schemas.add(new AppSearchSchema(schemaBundles.get(i))); @@ -359,7 +362,7 @@ public class AppSearchManagerService extends SystemService { } schemasVisibleToPackages.put(entry.getKey(), packageIdentifiers); } - instance = mAppSearchUserInstanceManager.getUserInstance(callingUser); + instance = mAppSearchUserInstanceManager.getUserInstance(targetUser); SetSchemaResponse setSchemaResponse = instance.getAppSearchImpl().setSchema( packageName, databaseName, @@ -418,15 +421,18 @@ public class AppSearchManagerService extends SystemService { Objects.requireNonNull(callback); int callingUid = Binder.getCallingUid(); - UserHandle callingUser = handleIncomingUser(userHandle, callingUid); + UserHandle targetUser = handleIncomingUser(userHandle, callingUid); EXECUTOR.execute(() -> { try { - Context userContext = mContext.createContextAsUser(callingUser, /*flags=*/ 0); - verifyUserUnlocked(callingUser); - verifyCallingPackage(userContext, callingUser, callingUid, packageName); - verifyNotInstantApp(userContext, packageName); + Context targetUserContext = mContext.createContextAsUser(targetUser, + /*flags=*/ 0); + verifyUserUnlocked(targetUser); + // TODO(b/193902620): Pass in the callingUser and not the targetUser. + verifyCallingPackage(targetUserContext, targetUser, callingUid, packageName); + // TODO(b/194939218): Pass in the callingUser and not the targetUser. + verifyNotInstantApp(targetUserContext, packageName); AppSearchUserInstance instance = - mAppSearchUserInstanceManager.getUserInstance(callingUser); + mAppSearchUserInstanceManager.getUserInstance(targetUser); GetSchemaResponse response = instance.getAppSearchImpl().getSchema(packageName, databaseName); invokeCallbackOnResult( @@ -450,15 +456,18 @@ public class AppSearchManagerService extends SystemService { Objects.requireNonNull(callback); int callingUid = Binder.getCallingUid(); - UserHandle callingUser = handleIncomingUser(userHandle, callingUid); + UserHandle targetUser = handleIncomingUser(userHandle, callingUid); EXECUTOR.execute(() -> { try { - Context userContext = mContext.createContextAsUser(callingUser, /*flags=*/ 0); - verifyUserUnlocked(callingUser); - verifyCallingPackage(userContext, callingUser, callingUid, packageName); - verifyNotInstantApp(userContext, packageName); + Context targetUserContext = mContext.createContextAsUser(targetUser, + /*flags=*/ 0); + verifyUserUnlocked(targetUser); + // TODO(b/193902620): Pass in the callingUser and not the targetUser. + verifyCallingPackage(targetUserContext, targetUser, callingUid, packageName); + // TODO(b/194939218): Pass in the callingUser and not the targetUser. + verifyNotInstantApp(targetUserContext, packageName); AppSearchUserInstance instance = - mAppSearchUserInstanceManager.getUserInstance(callingUser); + mAppSearchUserInstanceManager.getUserInstance(targetUser); List<String> namespaces = instance.getAppSearchImpl().getNamespaces(packageName, databaseName); invokeCallbackOnResult( @@ -485,20 +494,23 @@ public class AppSearchManagerService extends SystemService { long totalLatencyStartTimeMillis = SystemClock.elapsedRealtime(); int callingUid = Binder.getCallingUid(); - UserHandle callingUser = handleIncomingUser(userHandle, callingUid); + UserHandle targetUser = handleIncomingUser(userHandle, callingUid); EXECUTOR.execute(() -> { @AppSearchResult.ResultCode int statusCode = AppSearchResult.RESULT_OK; AppSearchUserInstance instance = null; int operationSuccessCount = 0; int operationFailureCount = 0; try { - Context userContext = mContext.createContextAsUser(callingUser, /*flags=*/ 0); - verifyUserUnlocked(callingUser); - verifyCallingPackage(userContext, callingUser, callingUid, packageName); - verifyNotInstantApp(userContext, packageName); + Context targetUserContext = mContext.createContextAsUser(targetUser, + /*flags=*/ 0); + verifyUserUnlocked(targetUser); + // TODO(b/193902620): Pass in the callingUser and not the targetUser. + verifyCallingPackage(targetUserContext, targetUser, callingUid, packageName); + // TODO(b/194939218): Pass in the callingUser and not the targetUser. + verifyNotInstantApp(targetUserContext, packageName); AppSearchBatchResult.Builder<String, Void> resultBuilder = new AppSearchBatchResult.Builder<>(); - instance = mAppSearchUserInstanceManager.getUserInstance(callingUser); + instance = mAppSearchUserInstanceManager.getUserInstance(targetUser); for (int i = 0; i < documentBundles.size(); i++) { GenericDocument document = new GenericDocument(documentBundles.get(i)); try { @@ -571,20 +583,23 @@ public class AppSearchManagerService extends SystemService { long totalLatencyStartTimeMillis = SystemClock.elapsedRealtime(); int callingUid = Binder.getCallingUid(); - UserHandle callingUser = handleIncomingUser(userHandle, callingUid); + UserHandle targetUser = handleIncomingUser(userHandle, callingUid); EXECUTOR.execute(() -> { @AppSearchResult.ResultCode int statusCode = AppSearchResult.RESULT_OK; AppSearchUserInstance instance = null; int operationSuccessCount = 0; int operationFailureCount = 0; try { - Context userContext = mContext.createContextAsUser(callingUser, /*flags=*/ 0); - verifyUserUnlocked(callingUser); - verifyCallingPackage(userContext, callingUser, callingUid, packageName); - verifyNotInstantApp(userContext, packageName); + Context targetUserContext = mContext.createContextAsUser(targetUser, + /*flags=*/ 0); + verifyUserUnlocked(targetUser); + // TODO(b/193902620): Pass in the callingUser and not the targetUser. + verifyCallingPackage(targetUserContext, targetUser, callingUid, packageName); + // TODO(b/194939218): Pass in the callingUser and not the targetUser. + verifyNotInstantApp(targetUserContext, packageName); AppSearchBatchResult.Builder<String, Bundle> resultBuilder = new AppSearchBatchResult.Builder<>(); - instance = mAppSearchUserInstanceManager.getUserInstance(callingUser); + instance = mAppSearchUserInstanceManager.getUserInstance(targetUser); for (int i = 0; i < ids.size(); i++) { String id = ids.get(i); try { @@ -652,18 +667,21 @@ public class AppSearchManagerService extends SystemService { long totalLatencyStartTimeMillis = SystemClock.elapsedRealtime(); int callingUid = Binder.getCallingUid(); - UserHandle callingUser = handleIncomingUser(userHandle, callingUid); + UserHandle targetUser = handleIncomingUser(userHandle, callingUid); EXECUTOR.execute(() -> { @AppSearchResult.ResultCode int statusCode = AppSearchResult.RESULT_OK; AppSearchUserInstance instance = null; int operationSuccessCount = 0; int operationFailureCount = 0; try { - Context userContext = mContext.createContextAsUser(callingUser, /*flags=*/ 0); - verifyUserUnlocked(callingUser); - verifyCallingPackage(userContext, callingUser, callingUid, packageName); - verifyNotInstantApp(userContext, packageName); - instance = mAppSearchUserInstanceManager.getUserInstance(callingUser); + Context targetUserContext = mContext.createContextAsUser(targetUser, + /*flags=*/ 0); + verifyUserUnlocked(targetUser); + // TODO(b/193902620): Pass in the callingUser and not the targetUser. + verifyCallingPackage(targetUserContext, targetUser, callingUid, packageName); + // TODO(b/194939218): Pass in the callingUser and not the targetUser. + verifyNotInstantApp(targetUserContext, packageName); + instance = mAppSearchUserInstanceManager.getUserInstance(targetUser); SearchResultPage searchResultPage = instance.getAppSearchImpl().query( packageName, databaseName, @@ -718,18 +736,21 @@ public class AppSearchManagerService extends SystemService { long totalLatencyStartTimeMillis = SystemClock.elapsedRealtime(); int callingUid = Binder.getCallingUid(); - UserHandle callingUser = handleIncomingUser(userHandle, callingUid); + UserHandle targetUser = handleIncomingUser(userHandle, callingUid); EXECUTOR.execute(() -> { @AppSearchResult.ResultCode int statusCode = AppSearchResult.RESULT_OK; AppSearchUserInstance instance = null; int operationSuccessCount = 0; int operationFailureCount = 0; try { - Context userContext = mContext.createContextAsUser(callingUser, /*flags=*/ 0); - verifyUserUnlocked(callingUser); - verifyCallingPackage(userContext, callingUser, callingUid, packageName); - verifyNotInstantApp(userContext, packageName); - instance = mAppSearchUserInstanceManager.getUserInstance(callingUser); + Context targetUserContext = mContext.createContextAsUser(targetUser, + /*flags=*/ 0); + verifyUserUnlocked(targetUser); + // TODO(b/193902620): Pass in the callingUser and not the targetUser. + verifyCallingPackage(targetUserContext, targetUser, callingUid, packageName); + // TODO(b/194939218): Pass in the callingUser and not the targetUser. + verifyNotInstantApp(targetUserContext, packageName); + instance = mAppSearchUserInstanceManager.getUserInstance(targetUser); boolean callerHasSystemAccess = instance.getVisibilityStore().doesCallerHaveSystemAccess(packageName); @@ -783,17 +804,20 @@ public class AppSearchManagerService extends SystemService { Objects.requireNonNull(callback); int callingUid = Binder.getCallingUid(); - UserHandle callingUser = handleIncomingUser(userHandle, callingUid); + UserHandle targetUser = handleIncomingUser(userHandle, callingUid); // TODO(b/162450968) check nextPageToken is being advanced by the same uid as originally // opened it EXECUTOR.execute(() -> { try { - Context userContext = mContext.createContextAsUser(callingUser, /*flags=*/ 0); - verifyUserUnlocked(callingUser); - verifyCallingPackage(userContext, callingUser, callingUid, packageName); - verifyNotInstantApp(userContext, packageName); + Context targetUserContext = mContext.createContextAsUser(targetUser, + /*flags=*/ 0); + verifyUserUnlocked(targetUser); + // TODO(b/193902620): Pass in the callingUser and not the targetUser. + verifyCallingPackage(targetUserContext, targetUser, callingUid, packageName); + // TODO(b/194939218): Pass in the callingUser and not the targetUser. + verifyNotInstantApp(targetUserContext, packageName); AppSearchUserInstance instance = - mAppSearchUserInstanceManager.getUserInstance(callingUser); + mAppSearchUserInstanceManager.getUserInstance(targetUser); SearchResultPage searchResultPage = instance.getAppSearchImpl().getNextPage(packageName, nextPageToken); invokeCallbackOnResult( @@ -812,15 +836,18 @@ public class AppSearchManagerService extends SystemService { Objects.requireNonNull(userHandle); int callingUid = Binder.getCallingUid(); - UserHandle callingUser = handleIncomingUser(userHandle, callingUid); + UserHandle targetUser = handleIncomingUser(userHandle, callingUid); EXECUTOR.execute(() -> { try { - Context userContext = mContext.createContextAsUser(callingUser, /*flags=*/ 0); - verifyUserUnlocked(callingUser); - verifyCallingPackage(userContext, callingUser, callingUid, packageName); - verifyNotInstantApp(userContext, packageName); + Context targetUserContext = mContext.createContextAsUser(targetUser, + /*flags=*/ 0); + verifyUserUnlocked(targetUser); + // TODO(b/193902620): Pass in the callingUser and not the targetUser. + verifyCallingPackage(targetUserContext, targetUser, callingUid, packageName); + // TODO(b/194939218): Pass in the callingUser and not the targetUser. + verifyNotInstantApp(targetUserContext, packageName); AppSearchUserInstance instance = - mAppSearchUserInstanceManager.getUserInstance(callingUser); + mAppSearchUserInstanceManager.getUserInstance(targetUser); instance.getAppSearchImpl().invalidateNextPageToken(packageName, nextPageToken); } catch (Throwable t) { Log.e(TAG, "Unable to invalidate the query page token", t); @@ -846,15 +873,18 @@ public class AppSearchManagerService extends SystemService { Objects.requireNonNull(callback); int callingUid = Binder.getCallingUid(); - UserHandle callingUser = handleIncomingUser(userHandle, callingUid); + UserHandle targetUser = handleIncomingUser(userHandle, callingUid); EXECUTOR.execute(() -> { try { - Context userContext = mContext.createContextAsUser(callingUser, /*flags=*/ 0); - verifyUserUnlocked(callingUser); - verifyCallingPackage(userContext, callingUser, callingUid, packageName); - verifyNotInstantApp(userContext, packageName); + Context targetUserContext = mContext.createContextAsUser(targetUser, + /*flags=*/ 0); + verifyUserUnlocked(targetUser); + // TODO(b/193902620): Pass in the callingUser and not the targetUser. + verifyCallingPackage(targetUserContext, targetUser, callingUid, packageName); + // TODO(b/194939218): Pass in the callingUser and not the targetUser. + verifyNotInstantApp(targetUserContext, packageName); AppSearchUserInstance instance = - mAppSearchUserInstanceManager.getUserInstance(callingUser); + mAppSearchUserInstanceManager.getUserInstance(targetUser); // we don't need to append the file. The file is always brand new. try (DataOutputStream outputStream = new DataOutputStream( new FileOutputStream(fileDescriptor.getFileDescriptor()))) { @@ -895,15 +925,18 @@ public class AppSearchManagerService extends SystemService { Objects.requireNonNull(callback); int callingUid = Binder.getCallingUid(); - UserHandle callingUser = handleIncomingUser(userHandle, callingUid); + UserHandle targetUser = handleIncomingUser(userHandle, callingUid); EXECUTOR.execute(() -> { try { - Context userContext = mContext.createContextAsUser(callingUser, /*flags=*/ 0); - verifyUserUnlocked(callingUser); - verifyCallingPackage(userContext, callingUser, callingUid, packageName); - verifyNotInstantApp(userContext, packageName); + Context targetUserContext = mContext.createContextAsUser(targetUser, + /*flags=*/ 0); + verifyUserUnlocked(targetUser); + // TODO(b/193902620): Pass in the callingUser and not the targetUser. + verifyCallingPackage(targetUserContext, targetUser, callingUid, packageName); + // TODO(b/194939218): Pass in the callingUser and not the targetUser. + verifyNotInstantApp(targetUserContext, packageName); AppSearchUserInstance instance = - mAppSearchUserInstanceManager.getUserInstance(callingUser); + mAppSearchUserInstanceManager.getUserInstance(targetUser); GenericDocument document; ArrayList<Bundle> migrationFailureBundles = new ArrayList<>(); @@ -957,15 +990,18 @@ public class AppSearchManagerService extends SystemService { Objects.requireNonNull(callback); int callingUid = Binder.getCallingUid(); - UserHandle callingUser = handleIncomingUser(userHandle, callingUid); + UserHandle targetUser = handleIncomingUser(userHandle, callingUid); EXECUTOR.execute(() -> { try { - Context userContext = mContext.createContextAsUser(callingUser, /*flags=*/ 0); - verifyUserUnlocked(callingUser); - verifyCallingPackage(userContext, callingUser, callingUid, packageName); - verifyNotInstantApp(userContext, packageName); + Context targetUserContext = mContext.createContextAsUser(targetUser, + /*flags=*/ 0); + verifyUserUnlocked(targetUser); + // TODO(b/193902620): Pass in the callingUser and not the targetUser. + verifyCallingPackage(targetUserContext, targetUser, callingUid, packageName); + // TODO(b/194939218): Pass in the callingUser and not the targetUser. + verifyNotInstantApp(targetUserContext, packageName); AppSearchUserInstance instance = - mAppSearchUserInstanceManager.getUserInstance(callingUser); + mAppSearchUserInstanceManager.getUserInstance(targetUser); if (systemUsage && !instance.getVisibilityStore() @@ -1004,20 +1040,23 @@ public class AppSearchManagerService extends SystemService { long totalLatencyStartTimeMillis = SystemClock.elapsedRealtime(); int callingUid = Binder.getCallingUid(); - UserHandle callingUser = handleIncomingUser(userHandle, callingUid); + UserHandle targetUser = handleIncomingUser(userHandle, callingUid); EXECUTOR.execute(() -> { @AppSearchResult.ResultCode int statusCode = AppSearchResult.RESULT_OK; AppSearchUserInstance instance = null; int operationSuccessCount = 0; int operationFailureCount = 0; try { - Context userContext = mContext.createContextAsUser(callingUser, /*flags=*/ 0); - verifyUserUnlocked(callingUser); - verifyCallingPackage(userContext, callingUser, callingUid, packageName); - verifyNotInstantApp(userContext, packageName); + Context targetUserContext = mContext.createContextAsUser(targetUser, + /*flags=*/ 0); + verifyUserUnlocked(targetUser); + // TODO(b/193902620): Pass in the callingUser and not the targetUser. + verifyCallingPackage(targetUserContext, targetUser, callingUid, packageName); + // TODO(b/194939218): Pass in the callingUser and not the targetUser. + verifyNotInstantApp(targetUserContext, packageName); AppSearchBatchResult.Builder<String, Void> resultBuilder = new AppSearchBatchResult.Builder<>(); - instance = mAppSearchUserInstanceManager.getUserInstance(callingUser); + instance = mAppSearchUserInstanceManager.getUserInstance(targetUser); for (int i = 0; i < ids.size(); i++) { String id = ids.get(i); try { @@ -1090,18 +1129,21 @@ public class AppSearchManagerService extends SystemService { long totalLatencyStartTimeMillis = SystemClock.elapsedRealtime(); int callingUid = Binder.getCallingUid(); - UserHandle callingUser = handleIncomingUser(userHandle, callingUid); + UserHandle targetUser = handleIncomingUser(userHandle, callingUid); EXECUTOR.execute(() -> { @AppSearchResult.ResultCode int statusCode = AppSearchResult.RESULT_OK; AppSearchUserInstance instance = null; int operationSuccessCount = 0; int operationFailureCount = 0; try { - Context userContext = mContext.createContextAsUser(callingUser, /*flags=*/ 0); - verifyUserUnlocked(callingUser); - verifyCallingPackage(userContext, callingUser, callingUid, packageName); - verifyNotInstantApp(userContext, packageName); - instance = mAppSearchUserInstanceManager.getUserInstance(callingUser); + Context targetUserContext = mContext.createContextAsUser(targetUser, + /*flags=*/ 0); + verifyUserUnlocked(targetUser); + // TODO(b/193902620): Pass in the callingUser and not the targetUser. + verifyCallingPackage(targetUserContext, targetUser, callingUid, packageName); + // TODO(b/194939218): Pass in the callingUser and not the targetUser. + verifyNotInstantApp(targetUserContext, packageName); + instance = mAppSearchUserInstanceManager.getUserInstance(targetUser); instance.getAppSearchImpl().removeByQuery( packageName, databaseName, @@ -1154,15 +1196,18 @@ public class AppSearchManagerService extends SystemService { Objects.requireNonNull(callback); int callingUid = Binder.getCallingUid(); - UserHandle callingUser = handleIncomingUser(userHandle, callingUid); + UserHandle targetUser = handleIncomingUser(userHandle, callingUid); EXECUTOR.execute(() -> { try { - Context userContext = mContext.createContextAsUser(callingUser, /*flags=*/ 0); - verifyUserUnlocked(callingUser); - verifyCallingPackage(userContext, callingUser, callingUid, packageName); - verifyNotInstantApp(userContext, packageName); + Context targetUserContext = mContext.createContextAsUser(targetUser, + /*flags=*/ 0); + verifyUserUnlocked(targetUser); + // TODO(b/193902620): Pass in the callingUser and not the targetUser. + verifyCallingPackage(targetUserContext, targetUser, callingUid, packageName); + // TODO(b/194939218): Pass in the callingUser and not the targetUser. + verifyNotInstantApp(targetUserContext, packageName); AppSearchUserInstance instance = - mAppSearchUserInstanceManager.getUserInstance(callingUser); + mAppSearchUserInstanceManager.getUserInstance(targetUser); StorageInfo storageInfo = instance.getAppSearchImpl() .getStorageInfoForDatabase(packageName, databaseName); Bundle storageInfoBundle = storageInfo.getBundle(); @@ -1184,18 +1229,21 @@ public class AppSearchManagerService extends SystemService { long totalLatencyStartTimeMillis = SystemClock.elapsedRealtime(); int callingUid = Binder.getCallingUid(); - UserHandle callingUser = handleIncomingUser(userHandle, callingUid); + UserHandle targetUser = handleIncomingUser(userHandle, callingUid); EXECUTOR.execute(() -> { @AppSearchResult.ResultCode int statusCode = AppSearchResult.RESULT_OK; AppSearchUserInstance instance = null; int operationSuccessCount = 0; int operationFailureCount = 0; try { - Context userContext = mContext.createContextAsUser(callingUser, /*flags=*/ 0); - verifyUserUnlocked(callingUser); - verifyCallingPackage(userContext, callingUser, callingUid, packageName); - verifyNotInstantApp(userContext, packageName); - instance = mAppSearchUserInstanceManager.getUserInstance(callingUser); + Context targetUserContext = mContext.createContextAsUser(targetUser, + /*flags=*/ 0); + verifyUserUnlocked(targetUser); + // TODO(b/193902620): Pass in the callingUser and not the targetUser. + verifyCallingPackage(targetUserContext, targetUser, callingUid, packageName); + // TODO(b/194939218): Pass in the callingUser and not the targetUser. + verifyNotInstantApp(targetUserContext, packageName); + instance = mAppSearchUserInstanceManager.getUserInstance(targetUser); instance.getAppSearchImpl().persistToDisk(PersistType.Code.FULL); ++operationSuccessCount; } catch (Throwable t) { @@ -1236,7 +1284,7 @@ public class AppSearchManagerService extends SystemService { long totalLatencyStartTimeMillis = SystemClock.elapsedRealtime(); int callingUid = Binder.getCallingUid(); - UserHandle callingUser = handleIncomingUser(userHandle, callingUid); + UserHandle targetUser = handleIncomingUser(userHandle, callingUid); EXECUTOR.execute(() -> { @AppSearchResult.ResultCode int statusCode = AppSearchResult.RESULT_OK; @@ -1244,12 +1292,15 @@ public class AppSearchManagerService extends SystemService { int operationSuccessCount = 0; int operationFailureCount = 0; try { - Context userContext = mContext.createContextAsUser(callingUser, /*flags=*/ 0); - verifyUserUnlocked(callingUser); - verifyCallingPackage(userContext, callingUser, callingUid, packageName); - verifyNotInstantApp(userContext, packageName); + Context targetUserContext = mContext.createContextAsUser(targetUser, + /*flags=*/ 0); + verifyUserUnlocked(targetUser); + // TODO(b/193902620): Pass in the callingUser and not the targetUser. + verifyCallingPackage(targetUserContext, targetUser, callingUid, packageName); + // TODO(b/194939218): Pass in the callingUser and not the targetUser. + verifyNotInstantApp(targetUserContext, packageName); instance = mAppSearchUserInstanceManager.getOrCreateUserInstance( - userContext, callingUser, AppSearchConfig.getInstance(EXECUTOR)); + targetUserContext, targetUser, AppSearchConfig.getInstance(EXECUTOR)); ++operationSuccessCount; invokeCallbackOnResult(callback, AppSearchResult.newSuccessfulResult(null)); } catch (Throwable t) { @@ -1354,26 +1405,26 @@ public class AppSearchManagerService extends SystemService { /** * Helper for dealing with incoming user arguments to system service calls. * - * @param requestedUser The user which the caller is requesting to execute as. + * @param targetUserHandle The user which the caller is requesting to execute as. * @param callingUid The actual uid of the caller as determined by Binder. * @return the user handle that the call should run as. Will always be a concrete user. */ @NonNull - private UserHandle handleIncomingUser(@NonNull UserHandle requestedUser, int callingUid) { - UserHandle callingUser = UserHandle.getUserHandleForUid(callingUid); - if (callingUser.equals(requestedUser)) { - return requestedUser; + private UserHandle handleIncomingUser(@NonNull UserHandle targetUserHandle, int callingUid) { + UserHandle callingUserHandle = UserHandle.getUserHandleForUid(callingUid); + if (callingUserHandle.equals(targetUserHandle)) { + return targetUserHandle; } // Duplicates UserController#ensureNotSpecialUser - if (requestedUser.getIdentifier() < 0) { + if (targetUserHandle.getIdentifier() < 0) { throw new IllegalArgumentException( - "Call does not support special user " + requestedUser); + "Call does not support special user " + targetUserHandle); } throw new SecurityException( - "Requested user, " + requestedUser + ", is not the same as the calling user, " - + callingUser + "."); + "Requested user, " + targetUserHandle + ", is not the same as the calling user, " + + callingUserHandle + "."); } /** |