summaryrefslogtreecommitdiff
path: root/core/java/android/app/ActivityThread.java
diff options
context:
space:
mode:
authorSanjana Sunil <sanjanasunil@google.com>2022-05-17 15:40:12 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-05-17 15:40:12 +0000
commit0b28d29298e1fc7609f74aaec62720a5e6794022 (patch)
tree9b6c88823f96905471f018d064920d3756d9c720 /core/java/android/app/ActivityThread.java
parentf15480984df249271e947e870e693d70e7bd3ad0 (diff)
parent79241ae7d997d4dcfaf920526c82649a480143ee (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.java37
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) {