Pass SDK Sandbox package name to the SDK
SDKs are not able to access TestApis when their package ID is set to
INVALID_UID. Modify a few tests to avoid accessing a TestApi from the
sandbox.
Bug: 306180965
Test: atest SdkSandboxManagerTest
Change-Id: I31dae32330f691810fadc96071a94b7af25f376c
diff --git a/sdksandbox/tests/cts/endtoendtests/providers/CtsProvider/src/com/android/ctssdkprovider/CtsSdkProviderApiImpl.java b/sdksandbox/tests/cts/endtoendtests/providers/CtsProvider/src/com/android/ctssdkprovider/CtsSdkProviderApiImpl.java
index 9809f08..4bd2082 100644
--- a/sdksandbox/tests/cts/endtoendtests/providers/CtsProvider/src/com/android/ctssdkprovider/CtsSdkProviderApiImpl.java
+++ b/sdksandbox/tests/cts/endtoendtests/providers/CtsProvider/src/com/android/ctssdkprovider/CtsSdkProviderApiImpl.java
@@ -186,10 +186,10 @@
}
@Override
- public void startSandboxActivityDirectlyByAction() {
+ public void startSandboxActivityDirectlyByAction(String sandboxPackageName) {
Intent intent = new Intent();
intent.setAction("android.app.sdksandbox.action.START_SANDBOXED_ACTIVITY");
- intent.setPackage(mContext.getPackageManager().getSdkSandboxPackageName());
+ intent.setPackage(sandboxPackageName);
intent.setFlags(FLAG_ACTIVITY_NEW_TASK);
Bundle params = new Bundle();
@@ -200,12 +200,10 @@
}
@Override
- public void startSandboxActivityDirectlyByComponent() {
+ public void startSandboxActivityDirectlyByComponent(String sandboxPackageName) {
Intent intent = new Intent();
intent.setComponent(
- new ComponentName(
- mContext.getPackageManager().getSdkSandboxPackageName(),
- "com.android.sdksandbox.SandboxedActivity"));
+ new ComponentName(sandboxPackageName, "com.android.sdksandbox.SandboxedActivity"));
intent.setFlags(FLAG_ACTIVITY_NEW_TASK);
Bundle params = new Bundle();
diff --git a/sdksandbox/tests/cts/endtoendtests/providers/CtsProvider/src/com/android/ctssdkprovider/ICtsSdkProviderApi.aidl b/sdksandbox/tests/cts/endtoendtests/providers/CtsProvider/src/com/android/ctssdkprovider/ICtsSdkProviderApi.aidl
index c385006..97f8d2c 100644
--- a/sdksandbox/tests/cts/endtoendtests/providers/CtsProvider/src/com/android/ctssdkprovider/ICtsSdkProviderApi.aidl
+++ b/sdksandbox/tests/cts/endtoendtests/providers/CtsProvider/src/com/android/ctssdkprovider/ICtsSdkProviderApi.aidl
@@ -26,8 +26,8 @@
int getContextHashCode(boolean useApplicationContext);
void testStoragePaths();
int getProcessImportance();
- void startSandboxActivityDirectlyByAction();
- void startSandboxActivityDirectlyByComponent();
+ void startSandboxActivityDirectlyByAction(String sandboxPackageName);
+ void startSandboxActivityDirectlyByComponent(String sandboxPackageName);
IActivityActionExecutor startActivity(IActivityStarter callback, in Bundle extras);
String getPackageName();
String getOpPackageName();
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 8a73346..ba5a81c 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
@@ -21,10 +21,14 @@
import static android.app.sdksandbox.SdkSandboxManager.EXTRA_HOST_TOKEN;
import static android.app.sdksandbox.SdkSandboxManager.EXTRA_WIDTH_IN_PIXELS;
import static android.app.sdksandbox.SdkSandboxManager.LOAD_SDK_INTERNAL_ERROR;
+
import static androidx.lifecycle.Lifecycle.State;
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
+
import static com.android.sdksandbox.flags.Flags.FLAG_SANDBOX_ACTIVITY_SDK_BASED_CONTEXT;
+
import static com.google.common.truth.Truth.assertThat;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
@@ -59,7 +63,6 @@
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
import android.provider.DeviceConfig;
-import android.view.Surface;
import androidx.lifecycle.Lifecycle;
import androidx.test.core.app.ActivityScenario;
@@ -644,7 +647,8 @@
assertThat(mScenario.getState()).isEqualTo(State.RESUMED);
SecurityException exception =
assertThrows(
- SecurityException.class, () -> sdk.startSandboxActivityDirectlyByAction());
+ SecurityException.class,
+ () -> sdk.startSandboxActivityDirectlyByAction(getSdkSandboxPackageName()));
assertThat(exception.getMessage())
.isEqualTo("Sandbox process is not allowed to start sandbox activities.");
assertThat(mScenario.getState()).isEqualTo(State.RESUMED);
@@ -660,7 +664,9 @@
SecurityException exception =
assertThrows(
SecurityException.class,
- () -> sdk.startSandboxActivityDirectlyByComponent());
+ () ->
+ sdk.startSandboxActivityDirectlyByComponent(
+ getSdkSandboxPackageName()));
assertThat(exception.getMessage())
.isEqualTo("Sandbox process is not allowed to start sandbox activities.");
assertThat(mScenario.getState()).isEqualTo(State.RESUMED);