summaryrefslogtreecommitdiff
path: root/sdksandbox/framework/java/android/app/sdksandbox/SandboxedSdkContext.java
diff options
context:
space:
mode:
authorAnton Kulakov <akulakov@google.com>2022-09-06 22:48:40 +0000
committerAnton Kulakov <akulakov@google.com>2022-09-13 09:45:42 +0000
commit3a75e7b52dc225d861ec6e189de95d5a0ab095da (patch)
tree2e2169ad97a3c5d647a61a7f0eaf3ab85c4e6c20 /sdksandbox/framework/java/android/app/sdksandbox/SandboxedSdkContext.java
parentfd9edb82f2a0cd502e0944c71859f42f1be7dfea (diff)
downloadAdServices-3a75e7b52dc225d861ec6e189de95d5a0ab095da.tar.gz
Change classloaders hierarchy for SDK loaded in sandbox
To avoid sharing classes between SdkSandbox and SDK loaded in sandbox their classloaders shouldn't be in parent-child relationship. Also fixes incorrect classloader for SDK in getContext().getClassloader() Test: atest SdkSandboxManagerTest#loadSdkAndCheckClassloader Bug: 243658743 Change-Id: If7d7e1a46e0eda2ddab171c8bb400f560a910fb3
Diffstat (limited to 'sdksandbox/framework/java/android/app/sdksandbox/SandboxedSdkContext.java')
-rw-r--r--sdksandbox/framework/java/android/app/sdksandbox/SandboxedSdkContext.java12
1 files changed, 12 insertions, 0 deletions
diff --git a/sdksandbox/framework/java/android/app/sdksandbox/SandboxedSdkContext.java b/sdksandbox/framework/java/android/app/sdksandbox/SandboxedSdkContext.java
index 80b23e2a04..f90886fdf1 100644
--- a/sdksandbox/framework/java/android/app/sdksandbox/SandboxedSdkContext.java
+++ b/sdksandbox/framework/java/android/app/sdksandbox/SandboxedSdkContext.java
@@ -56,9 +56,11 @@ public final class SandboxedSdkContext extends ContextWrapper {
@Nullable private final File mCeDataDir;
@Nullable private final File mDeDataDir;
private final SdkSandboxSystemServiceRegistry mSdkSandboxSystemServiceRegistry;
+ private final ClassLoader mClassLoader;
public SandboxedSdkContext(
@NonNull Context baseContext,
+ @NonNull ClassLoader classLoader,
@NonNull String clientPackageName,
@NonNull ApplicationInfo info,
@NonNull String sdkName,
@@ -66,6 +68,7 @@ public final class SandboxedSdkContext extends ContextWrapper {
@Nullable String sdkDeDataDir) {
this(
baseContext,
+ classLoader,
clientPackageName,
info,
sdkName,
@@ -77,6 +80,7 @@ public final class SandboxedSdkContext extends ContextWrapper {
@VisibleForTesting
public SandboxedSdkContext(
@NonNull Context baseContext,
+ @NonNull ClassLoader classLoader,
@NonNull String clientPackageName,
@NonNull ApplicationInfo info,
@NonNull String sdkName,
@@ -105,6 +109,7 @@ public final class SandboxedSdkContext extends ContextWrapper {
mDeDataDir = (sdkDeDataDir != null) ? new File(sdkDeDataDir) : null;
mSdkSandboxSystemServiceRegistry = sdkSandboxSystemServiceRegistry;
+ mClassLoader = classLoader;
}
/**
@@ -119,6 +124,7 @@ public final class SandboxedSdkContext extends ContextWrapper {
Context newBaseContext = getBaseContext().createCredentialProtectedStorageContext();
return new SandboxedSdkContext(
newBaseContext,
+ mClassLoader,
mClientPackageName,
mSdkProviderInfo,
mSdkName,
@@ -138,6 +144,7 @@ public final class SandboxedSdkContext extends ContextWrapper {
Context newBaseContext = getBaseContext().createDeviceProtectedStorageContext();
return new SandboxedSdkContext(
newBaseContext,
+ mClassLoader,
mClientPackageName,
mSdkProviderInfo,
mSdkName,
@@ -215,4 +222,9 @@ public final class SandboxedSdkContext extends ContextWrapper {
}
return service;
}
+
+ @Override
+ public ClassLoader getClassLoader() {
+ return mClassLoader;
+ }
}