diff options
| author | Sanjana Sunil <sanjanasunil@google.com> | 2022-05-17 15:40:12 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2022-05-17 15:40:12 +0000 |
| commit | 0b28d29298e1fc7609f74aaec62720a5e6794022 (patch) | |
| tree | 9b6c88823f96905471f018d064920d3756d9c720 /core/java/android/app/ActivityThread.java | |
| parent | f15480984df249271e947e870e693d70e7bd3ad0 (diff) | |
| parent | 79241ae7d997d4dcfaf920526c82649a480143ee (diff) | |
Merge "Set correct volume storage path for SDK sandbox" into tm-dev
Diffstat (limited to 'core/java/android/app/ActivityThread.java')
| -rw-r--r-- | core/java/android/app/ActivityThread.java | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 3158bd7b21db..c6f59208c450 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -873,6 +873,7 @@ public final class ActivityThread extends ClientTransactionHandler String processName; @UnsupportedAppUsage ApplicationInfo appInfo; + String sdkSandboxClientAppVolumeUuid; String sdkSandboxClientAppPackage; @UnsupportedAppUsage List<ProviderInfo> providers; @@ -1119,9 +1120,10 @@ public final class ActivityThread extends ClientTransactionHandler @Override public final void bindApplication(String processName, ApplicationInfo appInfo, - String sdkSandboxClientAppPackage, ProviderInfoList providerList, - ComponentName instrumentationName, ProfilerInfo profilerInfo, - Bundle instrumentationArgs, IInstrumentationWatcher instrumentationWatcher, + String sdkSandboxClientAppVolumeUuid, String sdkSandboxClientAppPackage, + ProviderInfoList providerList, ComponentName instrumentationName, + ProfilerInfo profilerInfo, Bundle instrumentationArgs, + IInstrumentationWatcher instrumentationWatcher, IUiAutomationConnection instrumentationUiConnection, int debugMode, boolean enableBinderTracking, boolean trackAllocation, boolean isRestrictedBackupMode, boolean persistent, Configuration config, @@ -1161,6 +1163,7 @@ public final class ActivityThread extends ClientTransactionHandler AppBindData data = new AppBindData(); data.processName = processName; data.appInfo = appInfo; + data.sdkSandboxClientAppVolumeUuid = sdkSandboxClientAppVolumeUuid; data.sdkSandboxClientAppPackage = sdkSandboxClientAppPackage; data.providers = providerList.getList(); data.instrumentationName = instrumentationName; @@ -2561,6 +2564,11 @@ public final class ActivityThread extends ClientTransactionHandler return getPackageInfo(ai, compatInfo, null, false, true, false); } + private LoadedApk getPackageInfoNoCheck(ApplicationInfo ai, CompatibilityInfo compatInfo, + boolean isSdkSandbox) { + return getPackageInfo(ai, compatInfo, null, false, true, false, isSdkSandbox); + } + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) public final LoadedApk peekPackageInfo(String packageName, boolean includeCode) { synchronized (mResourcesManager) { @@ -2577,11 +2585,18 @@ public final class ActivityThread extends ClientTransactionHandler private LoadedApk getPackageInfo(ApplicationInfo aInfo, CompatibilityInfo compatInfo, ClassLoader baseLoader, boolean securityViolation, boolean includeCode, boolean registerPackage) { + return getPackageInfo(aInfo, compatInfo, baseLoader, securityViolation, includeCode, + registerPackage, /*isSdkSandbox=*/false); + } + + private LoadedApk getPackageInfo(ApplicationInfo aInfo, CompatibilityInfo compatInfo, + ClassLoader baseLoader, boolean securityViolation, boolean includeCode, + boolean registerPackage, boolean isSdkSandbox) { final boolean differentUser = (UserHandle.myUserId() != UserHandle.getUserId(aInfo.uid)); synchronized (mResourcesManager) { WeakReference<LoadedApk> ref; - if (differentUser) { - // Caching not supported across users + if (differentUser || isSdkSandbox) { + // Caching not supported across users and for sdk sandboxes ref = null; } else if (includeCode) { ref = mPackages.get(aInfo.packageName); @@ -2628,8 +2643,8 @@ public final class ActivityThread extends ClientTransactionHandler getSystemContext().mPackageInfo.getClassLoader()); } - if (differentUser) { - // Caching not supported across users + if (differentUser || isSdkSandbox) { + // Caching not supported across users and for sdk sandboxes } else if (includeCode) { mPackages.put(aInfo.packageName, new WeakReference<LoadedApk>(packageInfo)); @@ -6575,9 +6590,11 @@ public final class ActivityThread extends ClientTransactionHandler mConfigurationController.applyCompatConfiguration(); } - data.info = getPackageInfoNoCheck(data.appInfo, data.compatInfo); - if (data.sdkSandboxClientAppPackage != null) { - data.info.setSdkSandboxStorage(data.sdkSandboxClientAppPackage); + final boolean isSdkSandbox = data.sdkSandboxClientAppPackage != null; + data.info = getPackageInfoNoCheck(data.appInfo, data.compatInfo, isSdkSandbox); + if (isSdkSandbox) { + data.info.setSdkSandboxStorage(data.sdkSandboxClientAppVolumeUuid, + data.sdkSandboxClientAppPackage); } if (agent != null) { |
