summaryrefslogtreecommitdiff
path: root/sdksandbox/tests/cts/endtoendtests
diff options
context:
space:
mode:
Diffstat (limited to 'sdksandbox/tests/cts/endtoendtests')
-rw-r--r--sdksandbox/tests/cts/endtoendtests/Android.bp3
-rw-r--r--sdksandbox/tests/cts/endtoendtests/AndroidManifest.xml15
-rw-r--r--sdksandbox/tests/cts/endtoendtests/AndroidTest.xml7
-rw-r--r--sdksandbox/tests/cts/endtoendtests/DisabledAndroidManifest.xml2
-rw-r--r--sdksandbox/tests/cts/endtoendtests/DisabledAndroidTest.xml6
-rw-r--r--sdksandbox/tests/cts/endtoendtests/providers/getLoadedSdkLibInfoSuccessfully/Android.bp3
-rw-r--r--sdksandbox/tests/cts/endtoendtests/providers/loadSdkAndCheckClassloader/Android.bp31
-rw-r--r--sdksandbox/tests/cts/endtoendtests/providers/loadSdkAndCheckClassloader/AndroidManifest.xml26
-rw-r--r--sdksandbox/tests/cts/endtoendtests/providers/loadSdkAndCheckClassloader/src/com/android/loadsdkandcheckclassloadersdkprovider/SdkProvider.java58
-rw-r--r--sdksandbox/tests/cts/endtoendtests/providers/loadSdkSuccessfully/Android.bp3
-rw-r--r--sdksandbox/tests/cts/endtoendtests/providers/loadSdkSuccessfullyTwo/Android.bp3
-rw-r--r--sdksandbox/tests/cts/endtoendtests/providers/loadSdkWithInternalError/Android.bp3
-rw-r--r--sdksandbox/tests/cts/endtoendtests/providers/requestSurfacePackageSuccessfully/Android.bp3
-rw-r--r--sdksandbox/tests/cts/endtoendtests/providers/requestSurfacePackageWithInternalError/Android.bp3
-rw-r--r--sdksandbox/tests/cts/endtoendtests/src/com/android/tests/sdksandbox/disablede2e/SdkSandboxManagerDisabledTest.java2
-rw-r--r--sdksandbox/tests/cts/endtoendtests/src/com/android/tests/sdksandbox/endtoend/SdkSandboxManagerTest.java63
16 files changed, 205 insertions, 26 deletions
diff --git a/sdksandbox/tests/cts/endtoendtests/Android.bp b/sdksandbox/tests/cts/endtoendtests/Android.bp
index 6a3724fd68..d7bdee90ee 100644
--- a/sdksandbox/tests/cts/endtoendtests/Android.bp
+++ b/sdksandbox/tests/cts/endtoendtests/Android.bp
@@ -34,6 +34,7 @@ android_test {
],
data: [
":LoadSdkSuccessfullySdkProvider",
+ ":LoadSdkAndCheckClassloaderSdkProvider",
":GetLoadedSdkLibInfoSuccessfully",
":LoadSdkSuccessfullySdkProviderTwo",
":LoadSdkWithInternalErrorSdkProvider",
@@ -42,7 +43,7 @@ android_test {
":CodeProviderWithResources",
],
min_sdk_version: "Tiramisu",
- target_sdk_version: "current",
+ target_sdk_version: "Tiramisu",
test_suites: [
"cts",
"mts-adservices",
diff --git a/sdksandbox/tests/cts/endtoendtests/AndroidManifest.xml b/sdksandbox/tests/cts/endtoendtests/AndroidManifest.xml
index 995a6ae69d..9602549ea6 100644
--- a/sdksandbox/tests/cts/endtoendtests/AndroidManifest.xml
+++ b/sdksandbox/tests/cts/endtoendtests/AndroidManifest.xml
@@ -21,20 +21,23 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.android.app.sdksandbox.permission.STOP_SDK_SANDBOX" />
- <application android:debuggable="true">
- <uses-library android:name="android.test.runner" />
+ <application>
+ <uses-library android:name="android.test.runner"/>
<uses-sdk-library android:name="com.android.loadSdkSuccessfullySdkProvider"
android:versionMajor="1"
- android:certDigest="0B:44:2D:88:FA:A7:B3:AD:23:8D:DE:29:8A:A1:9B:D5:62:03:92:0B:BF:D8:D3:EB:C8:99:33:2C:8E:E1:15:99" />
+ android:certDigest="0B:44:2D:88:FA:A7:B3:AD:23:8D:DE:29:8A:A1:9B:D5:62:03:92:0B:BF:D8:D3:EB:C8:99:33:2C:8E:E1:15:99"/>
+ <uses-sdk-library android:name="com.android.loadSdkAndCheckClassloader"
+ android:versionMajor="1"
+ android:certDigest="0B:44:2D:88:FA:A7:B3:AD:23:8D:DE:29:8A:A1:9B:D5:62:03:92:0B:BF:D8:D3:EB:C8:99:33:2C:8E:E1:15:99"/>
<uses-sdk-library android:name="com.android.getLoadedSdkLibInfoSuccessfully"
android:versionMajor="1"
- android:certDigest="0B:44:2D:88:FA:A7:B3:AD:23:8D:DE:29:8A:A1:9B:D5:62:03:92:0B:BF:D8:D3:EB:C8:99:33:2C:8E:E1:15:99" />
+ android:certDigest="0B:44:2D:88:FA:A7:B3:AD:23:8D:DE:29:8A:A1:9B:D5:62:03:92:0B:BF:D8:D3:EB:C8:99:33:2C:8E:E1:15:99"/>
<uses-sdk-library android:name="com.android.loadSdkSuccessfullySdkProviderTwo"
android:versionMajor="1"
- android:certDigest="0B:44:2D:88:FA:A7:B3:AD:23:8D:DE:29:8A:A1:9B:D5:62:03:92:0B:BF:D8:D3:EB:C8:99:33:2C:8E:E1:15:99" />
+ android:certDigest="0B:44:2D:88:FA:A7:B3:AD:23:8D:DE:29:8A:A1:9B:D5:62:03:92:0B:BF:D8:D3:EB:C8:99:33:2C:8E:E1:15:99"/>
<uses-sdk-library android:name="com.android.loadSdkWithInternalErrorSdkProvider"
android:versionMajor="1"
- android:certDigest="0B:44:2D:88:FA:A7:B3:AD:23:8D:DE:29:8A:A1:9B:D5:62:03:92:0B:BF:D8:D3:EB:C8:99:33:2C:8E:E1:15:99" />
+ android:certDigest="0B:44:2D:88:FA:A7:B3:AD:23:8D:DE:29:8A:A1:9B:D5:62:03:92:0B:BF:D8:D3:EB:C8:99:33:2C:8E:E1:15:99"/>
<uses-sdk-library android:name="com.android.requestSurfacePackageSuccessfullySdkProvider"
android:versionMajor="1"
android:certDigest="0B:44:2D:88:FA:A7:B3:AD:23:8D:DE:29:8A:A1:9B:D5:62:03:92:0B:BF:D8:D3:EB:C8:99:33:2C:8E:E1:15:99" />
diff --git a/sdksandbox/tests/cts/endtoendtests/AndroidTest.xml b/sdksandbox/tests/cts/endtoendtests/AndroidTest.xml
index 5ecaadb1d8..78c5ae1c28 100644
--- a/sdksandbox/tests/cts/endtoendtests/AndroidTest.xml
+++ b/sdksandbox/tests/cts/endtoendtests/AndroidTest.xml
@@ -20,9 +20,16 @@
<option name="config-descriptor:metadata" key="parameter" value="not_instant_app"/>
<option name="config-descriptor:metadata" key="parameter" value="not_multi_abi"/>
<option name="config-descriptor:metadata" key="parameter" value="secondary_user"/>
+
+ <target_preparer class="com.android.tradefed.targetprep.DeviceSetup">
+ <!-- Disable syncing to prevent overwriting flags during testing. -->
+ <option name="disable-device-config-sync" value="true" />
+ </target_preparer>
+
<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
<option name="cleanup-apks" value="true"/>
<option name="test-file-name" value="LoadSdkSuccessfullySdkProvider.apk"/>
+ <option name="test-file-name" value="LoadSdkAndCheckClassloaderSdkProvider.apk"/>
<option name="test-file-name" value="GetLoadedSdkLibInfoSuccessfully.apk"/>
<option name="test-file-name" value="LoadSdkSuccessfullySdkProviderTwo.apk"/>
<option name="test-file-name" value="LoadSdkWithInternalErrorSdkProvider.apk"/>
diff --git a/sdksandbox/tests/cts/endtoendtests/DisabledAndroidManifest.xml b/sdksandbox/tests/cts/endtoendtests/DisabledAndroidManifest.xml
index 24d32fb63d..8874449614 100644
--- a/sdksandbox/tests/cts/endtoendtests/DisabledAndroidManifest.xml
+++ b/sdksandbox/tests/cts/endtoendtests/DisabledAndroidManifest.xml
@@ -20,7 +20,7 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- <application android:debuggable="true">
+ <application>
<uses-library android:name="android.test.runner" />
<uses-sdk-library android:name="com.android.loadSdkSuccessfullySdkProvider"
android:versionMajor="1"
diff --git a/sdksandbox/tests/cts/endtoendtests/DisabledAndroidTest.xml b/sdksandbox/tests/cts/endtoendtests/DisabledAndroidTest.xml
index 72a47d0386..3222d1b494 100644
--- a/sdksandbox/tests/cts/endtoendtests/DisabledAndroidTest.xml
+++ b/sdksandbox/tests/cts/endtoendtests/DisabledAndroidTest.xml
@@ -20,6 +20,12 @@
<option name="config-descriptor:metadata" key="parameter" value="not_instant_app"/>
<option name="config-descriptor:metadata" key="parameter" value="not_multi_abi"/>
<option name="config-descriptor:metadata" key="parameter" value="secondary_user"/>
+
+ <target_preparer class="com.android.tradefed.targetprep.DeviceSetup">
+ <!-- Disable syncing to prevent overwriting flags during testing. -->
+ <option name="disable-device-config-sync" value="true" />
+ </target_preparer>
+
<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
<option name="cleanup-apks" value="true"/>
<option name="test-file-name" value="LoadSdkSuccessfullySdkProvider.apk"/>
diff --git a/sdksandbox/tests/cts/endtoendtests/providers/getLoadedSdkLibInfoSuccessfully/Android.bp b/sdksandbox/tests/cts/endtoendtests/providers/getLoadedSdkLibInfoSuccessfully/Android.bp
index a1d970af33..21ce59d1cb 100644
--- a/sdksandbox/tests/cts/endtoendtests/providers/getLoadedSdkLibInfoSuccessfully/Android.bp
+++ b/sdksandbox/tests/cts/endtoendtests/providers/getLoadedSdkLibInfoSuccessfully/Android.bp
@@ -23,5 +23,6 @@ android_test_helper_app {
srcs: [
"src/**/*.java",
],
- platform_apis: true,
+ min_sdk_version: "33",
+ target_sdk_version: "33",
}
diff --git a/sdksandbox/tests/cts/endtoendtests/providers/loadSdkAndCheckClassloader/Android.bp b/sdksandbox/tests/cts/endtoendtests/providers/loadSdkAndCheckClassloader/Android.bp
new file mode 100644
index 0000000000..12ee53de05
--- /dev/null
+++ b/sdksandbox/tests/cts/endtoendtests/providers/loadSdkAndCheckClassloader/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2022 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+android_test_helper_app {
+ name: "LoadSdkAndCheckClassloaderSdkProvider",
+ defaults: ["platform_app_defaults",],
+ certificate: ":sdksandbox-test",
+ srcs: [
+ "src/**/*.java",
+ ],
+ static_libs: [
+ "SdkSandbox-java-lib",
+ ],
+ min_sdk_version: "33",
+ target_sdk_version: "33",
+}
diff --git a/sdksandbox/tests/cts/endtoendtests/providers/loadSdkAndCheckClassloader/AndroidManifest.xml b/sdksandbox/tests/cts/endtoendtests/providers/loadSdkAndCheckClassloader/AndroidManifest.xml
new file mode 100644
index 0000000000..922bf0be2d
--- /dev/null
+++ b/sdksandbox/tests/cts/endtoendtests/providers/loadSdkAndCheckClassloader/AndroidManifest.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2022 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.loadsdkandcheckclassloadersdkprovider">
+
+ <application>
+ <sdk-library android:name="com.android.loadSdkAndCheckClassloader"
+ android:versionMajor="1"/>
+ <property android:name="android.sdksandbox.PROPERTY_SDK_PROVIDER_CLASS_NAME"
+ android:value="com.android.loadsdkandcheckclassloadersdkprovider.SdkProvider"/>
+ </application>
+</manifest>
diff --git a/sdksandbox/tests/cts/endtoendtests/providers/loadSdkAndCheckClassloader/src/com/android/loadsdkandcheckclassloadersdkprovider/SdkProvider.java b/sdksandbox/tests/cts/endtoendtests/providers/loadSdkAndCheckClassloader/src/com/android/loadsdkandcheckclassloadersdkprovider/SdkProvider.java
new file mode 100644
index 0000000000..e4fdd7dce2
--- /dev/null
+++ b/sdksandbox/tests/cts/endtoendtests/providers/loadSdkAndCheckClassloader/src/com/android/loadsdkandcheckclassloadersdkprovider/SdkProvider.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.loadsdkandcheckclassloadersdkprovider;
+
+import android.app.sdksandbox.SandboxedSdk;
+import android.app.sdksandbox.SandboxedSdkProvider;
+import android.content.Context;
+import android.os.Binder;
+import android.os.Bundle;
+import android.view.View;
+
+import com.android.sdksandbox.SdkSandboxServiceImpl;
+
+public class SdkProvider extends SandboxedSdkProvider {
+
+ @Override
+ public SandboxedSdk onLoadSdk(Bundle params) {
+ final ClassLoader ownClassloader = getClass().getClassLoader();
+ if (ownClassloader == null) {
+ throw new RuntimeException("SdkProvider loaded in top-level classloader");
+ }
+
+ final ClassLoader contextClassloader = getContext().getClassLoader();
+ if (!ownClassloader.equals(contextClassloader)) {
+ throw new RuntimeException("Different SdkProvider and Context classloaders");
+ }
+
+ try {
+ Class<?> loadedClazz = ownClassloader.loadClass(SdkSandboxServiceImpl.class.getName());
+ if (!ownClassloader.equals(loadedClazz.getClassLoader())) {
+ throw new RuntimeException("SdkSandboxServiceImpl loaded with wrong classloader");
+ }
+ } catch (ClassNotFoundException ex) {
+ throw new RuntimeException("Couldn't find class bundled with SdkProvider", ex);
+ }
+
+ return new SandboxedSdk(new Binder());
+ }
+
+ @Override
+ public View getView(Context windowContext, Bundle params, int width, int height) {
+ return null;
+ }
+}
diff --git a/sdksandbox/tests/cts/endtoendtests/providers/loadSdkSuccessfully/Android.bp b/sdksandbox/tests/cts/endtoendtests/providers/loadSdkSuccessfully/Android.bp
index 983e909b06..96bef68b84 100644
--- a/sdksandbox/tests/cts/endtoendtests/providers/loadSdkSuccessfully/Android.bp
+++ b/sdksandbox/tests/cts/endtoendtests/providers/loadSdkSuccessfully/Android.bp
@@ -23,5 +23,6 @@ android_test_helper_app {
srcs: [
"src/**/*.java",
],
- platform_apis: true,
+ min_sdk_version: "33",
+ target_sdk_version: "33",
}
diff --git a/sdksandbox/tests/cts/endtoendtests/providers/loadSdkSuccessfullyTwo/Android.bp b/sdksandbox/tests/cts/endtoendtests/providers/loadSdkSuccessfullyTwo/Android.bp
index 95b2785238..5689a86965 100644
--- a/sdksandbox/tests/cts/endtoendtests/providers/loadSdkSuccessfullyTwo/Android.bp
+++ b/sdksandbox/tests/cts/endtoendtests/providers/loadSdkSuccessfullyTwo/Android.bp
@@ -23,5 +23,6 @@ android_test_helper_app {
srcs: [
"src/**/*.java",
],
- platform_apis: true,
+ min_sdk_version: "33",
+ target_sdk_version: "33",
}
diff --git a/sdksandbox/tests/cts/endtoendtests/providers/loadSdkWithInternalError/Android.bp b/sdksandbox/tests/cts/endtoendtests/providers/loadSdkWithInternalError/Android.bp
index ec948a6f95..073c7deef1 100644
--- a/sdksandbox/tests/cts/endtoendtests/providers/loadSdkWithInternalError/Android.bp
+++ b/sdksandbox/tests/cts/endtoendtests/providers/loadSdkWithInternalError/Android.bp
@@ -23,5 +23,6 @@ android_test_helper_app {
srcs: [
"src/**/*.java",
],
- platform_apis: true,
+ min_sdk_version: "33",
+ target_sdk_version: "33",
}
diff --git a/sdksandbox/tests/cts/endtoendtests/providers/requestSurfacePackageSuccessfully/Android.bp b/sdksandbox/tests/cts/endtoendtests/providers/requestSurfacePackageSuccessfully/Android.bp
index 4b0b7f9814..dcb0a31a10 100644
--- a/sdksandbox/tests/cts/endtoendtests/providers/requestSurfacePackageSuccessfully/Android.bp
+++ b/sdksandbox/tests/cts/endtoendtests/providers/requestSurfacePackageSuccessfully/Android.bp
@@ -23,5 +23,6 @@ android_test_helper_app {
srcs: [
"src/**/*.java",
],
- platform_apis: true,
+ min_sdk_version: "33",
+ target_sdk_version: "33",
}
diff --git a/sdksandbox/tests/cts/endtoendtests/providers/requestSurfacePackageWithInternalError/Android.bp b/sdksandbox/tests/cts/endtoendtests/providers/requestSurfacePackageWithInternalError/Android.bp
index 9a7a221172..3cdffc0ac3 100644
--- a/sdksandbox/tests/cts/endtoendtests/providers/requestSurfacePackageWithInternalError/Android.bp
+++ b/sdksandbox/tests/cts/endtoendtests/providers/requestSurfacePackageWithInternalError/Android.bp
@@ -23,5 +23,6 @@ android_test_helper_app {
srcs: [
"src/**/*.java",
],
- platform_apis: true,
+ min_sdk_version: "33",
+ target_sdk_version: "33",
}
diff --git a/sdksandbox/tests/cts/endtoendtests/src/com/android/tests/sdksandbox/disablede2e/SdkSandboxManagerDisabledTest.java b/sdksandbox/tests/cts/endtoendtests/src/com/android/tests/sdksandbox/disablede2e/SdkSandboxManagerDisabledTest.java
index dcd6423369..850e69923f 100644
--- a/sdksandbox/tests/cts/endtoendtests/src/com/android/tests/sdksandbox/disablede2e/SdkSandboxManagerDisabledTest.java
+++ b/sdksandbox/tests/cts/endtoendtests/src/com/android/tests/sdksandbox/disablede2e/SdkSandboxManagerDisabledTest.java
@@ -59,7 +59,7 @@ public class SdkSandboxManagerDisabledTest {
@Test
public void testSdkSandboxDisabledErrorCode() throws Exception {
DeviceConfig.setProperty(
- DeviceConfig.NAMESPACE_SDK_SANDBOX, "disable_sdk_sandbox", "true", false);
+ DeviceConfig.NAMESPACE_ADSERVICES, "disable_sdk_sandbox", "true", false);
// Allow time for DeviceConfig change to propagate
Thread.sleep(1000);
final String sdkName = "com.android.loadSdkSuccessfullySdkProvider";
diff --git a/sdksandbox/tests/cts/endtoendtests/src/com/android/tests/sdksandbox/endtoend/SdkSandboxManagerTest.java b/sdksandbox/tests/cts/endtoendtests/src/com/android/tests/sdksandbox/endtoend/SdkSandboxManagerTest.java
index b882c6fa71..4e85e8cfe7 100644
--- a/sdksandbox/tests/cts/endtoendtests/src/com/android/tests/sdksandbox/endtoend/SdkSandboxManagerTest.java
+++ b/sdksandbox/tests/cts/endtoendtests/src/com/android/tests/sdksandbox/endtoend/SdkSandboxManagerTest.java
@@ -53,6 +53,8 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
+import java.util.List;
+
/*
* TODO(b/215372846): These providers
* (RequestSurfacePackageSuccessfullySdkProvider, RetryLoadSameSdkShouldFailSdkProvider) could be
@@ -98,6 +100,39 @@ public class SdkSandboxManagerTest {
}
@Test
+ public void getSandboxedSdkSuccessfully() {
+ final String sdkName = "com.android.loadSdkSuccessfullySdkProvider";
+ final FakeLoadSdkCallback callback = new FakeLoadSdkCallback();
+ mSdkSandboxManager.loadSdk(sdkName, new Bundle(), Runnable::run, callback);
+ assertThat(callback.isLoadSdkSuccessful(/*ignoreSdkAlreadyLoadedError=*/ true)).isTrue();
+
+ List<SandboxedSdk> sandboxedSdks = mSdkSandboxManager.getSandboxedSdks();
+
+ int nLoadedSdks = sandboxedSdks.size();
+ assertThat(nLoadedSdks).isGreaterThan(0);
+ assertThat(
+ sandboxedSdks.stream()
+ .filter(s -> s.getSharedLibraryInfo().getName().equals(sdkName))
+ .count())
+ .isEqualTo(1);
+
+ mSdkSandboxManager.unloadSdk(sdkName);
+ List<SandboxedSdk> sandboxedSdksAfterUnload = mSdkSandboxManager.getSandboxedSdks();
+ assertThat(sandboxedSdksAfterUnload.size()).isEqualTo(nLoadedSdks - 1);
+ }
+
+ @Test
+ public void loadSdkAndCheckClassloader() {
+ final String sdkName = "com.android.loadSdkAndCheckClassloader";
+ final FakeLoadSdkCallback callback = new FakeLoadSdkCallback();
+ mSdkSandboxManager.loadSdk(sdkName, new Bundle(), Runnable::run, callback);
+ assertThat(callback.isLoadSdkSuccessful()).isTrue();
+ assertNotNull(callback.getSandboxedSdk());
+ assertNotNull(callback.getSandboxedSdk().getInterface());
+ mSdkSandboxManager.unloadSdk(sdkName);
+ }
+
+ @Test
public void retryLoadSameSdkShouldFail() {
final String sdkName = "com.android.loadSdkSuccessfullySdkProviderTwo";
FakeLoadSdkCallback callback = new FakeLoadSdkCallback();
@@ -143,23 +178,28 @@ public class SdkSandboxManagerTest {
}
@Test
- public void unloadAndReloadSdk() {
+ public void unloadAndReloadSdk() throws Exception {
final String sdkName = "com.android.loadSdkSuccessfullySdkProvider";
final FakeLoadSdkCallback callback = new FakeLoadSdkCallback();
mSdkSandboxManager.loadSdk(sdkName, new Bundle(), Runnable::run, callback);
assertThat(callback.isLoadSdkSuccessful()).isTrue();
mSdkSandboxManager.unloadSdk(sdkName);
+ // Wait till SDK is unloaded.
+ Thread.sleep(2000);
- // Calls to an unloaded SDK should throw an exception.
+ // Calls to an unloaded SDK should fail.
final FakeRequestSurfacePackageCallback requestSurfacePackageCallback =
new FakeRequestSurfacePackageCallback();
- Bundle params = getRequestSurfacePackageParams();
- assertThrows(
- IllegalArgumentException.class,
- () ->
- mSdkSandboxManager.requestSurfacePackage(
- sdkName, params, Runnable::run, requestSurfacePackageCallback));
+ mSdkSandboxManager.requestSurfacePackage(
+ sdkName,
+ getRequestSurfacePackageParams(),
+ Runnable::run,
+ requestSurfacePackageCallback);
+
+ assertThat(requestSurfacePackageCallback.isRequestSurfacePackageSuccessful()).isFalse();
+ assertThat(requestSurfacePackageCallback.getSurfacePackageErrorCode())
+ .isEqualTo(SdkSandboxManager.REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED);
// SDK can be reloaded after being unloaded.
final FakeLoadSdkCallback callback2 = new FakeLoadSdkCallback();
@@ -168,7 +208,7 @@ public class SdkSandboxManagerTest {
}
@Test
- public void unloadingNonexistentSdkThrowsException() {
+ public void unloadNonexistentSdk() {
final String sdkName1 = "com.android.loadSdkSuccessfullySdkProvider";
final FakeLoadSdkCallback callback = new FakeLoadSdkCallback();
mSdkSandboxManager.loadSdk(sdkName1, new Bundle(), Runnable::run, callback);
@@ -176,7 +216,8 @@ public class SdkSandboxManagerTest {
assertThat(callback.isLoadSdkSuccessful(/*ignoreSdkAlreadyLoadedError=*/ true)).isTrue();
final String sdkName2 = "com.android.nonexistent";
- assertThrows(IllegalArgumentException.class, () -> mSdkSandboxManager.unloadSdk(sdkName2));
+ // Unloading does nothing - call should go throw without error.
+ mSdkSandboxManager.unloadSdk(sdkName2);
}
@Test
@@ -362,7 +403,7 @@ public class SdkSandboxManagerTest {
sdkName, getRequestSurfacePackageParams(), Runnable::run, surfacePackageCallback);
assertThat(surfacePackageCallback.isRequestSurfacePackageSuccessful()).isFalse();
assertThat(surfacePackageCallback.getSurfacePackageErrorCode())
- .isEqualTo(SdkSandboxManager.SDK_SANDBOX_PROCESS_NOT_AVAILABLE);
+ .isEqualTo(SdkSandboxManager.REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED);
}
@Test