summaryrefslogtreecommitdiff
path: root/sdksandbox/tests/unittest/src/com/android/server/sdksandbox/SdkSandboxManagerServiceUnitTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'sdksandbox/tests/unittest/src/com/android/server/sdksandbox/SdkSandboxManagerServiceUnitTest.java')
-rw-r--r--sdksandbox/tests/unittest/src/com/android/server/sdksandbox/SdkSandboxManagerServiceUnitTest.java491
1 files changed, 307 insertions, 184 deletions
diff --git a/sdksandbox/tests/unittest/src/com/android/server/sdksandbox/SdkSandboxManagerServiceUnitTest.java b/sdksandbox/tests/unittest/src/com/android/server/sdksandbox/SdkSandboxManagerServiceUnitTest.java
index 2316563957..c8f5db3ea1 100644
--- a/sdksandbox/tests/unittest/src/com/android/server/sdksandbox/SdkSandboxManagerServiceUnitTest.java
+++ b/sdksandbox/tests/unittest/src/com/android/server/sdksandbox/SdkSandboxManagerServiceUnitTest.java
@@ -20,6 +20,7 @@ import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREG
import static com.android.sdksandbox.service.stats.SdkSandboxStatsLog.SANDBOX_API_CALLED__METHOD__ADD_SDK_SANDBOX_LIFECYCLE_CALLBACK;
import static com.android.sdksandbox.service.stats.SdkSandboxStatsLog.SANDBOX_API_CALLED__METHOD__REMOVE_SDK_SANDBOX_LIFECYCLE_CALLBACK;
+import static com.android.sdksandbox.service.stats.SdkSandboxStatsLog.SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE;
import static com.android.sdksandbox.service.stats.SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__SANDBOX_TO_SYSTEM_SERVER;
import static com.android.sdksandbox.service.stats.SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_SANDBOX_TO_APP;
import static com.android.sdksandbox.service.stats.SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_TO_SANDBOX;
@@ -108,6 +109,7 @@ public class SdkSandboxManagerServiceUnitTest {
private MockitoSession mStaticMockSession = null;
private Context mSpyContext;
private SdkSandboxManagerService.Injector mInjector;
+ private int mClientAppUid;
private static final String CLIENT_PACKAGE_NAME = "com.android.client";
private static final String SDK_NAME = "com.android.codeprovider";
@@ -173,6 +175,8 @@ public class SdkSandboxManagerServiceUnitTest {
mInjector = Mockito.spy(new InjectorForTest());
mService = new SdkSandboxManagerService(mSpyContext, mProvider, mInjector);
+
+ mClientAppUid = Process.myUid();
}
@After
@@ -336,7 +340,6 @@ public class SdkSandboxManagerServiceUnitTest {
android.Manifest.permission.ACCESS_NETWORK_STATE);
}
-
@Test
public void testLoadSdk_successOnFirstLoad_errorOnLoadAgain() throws Exception {
disableNetworkPermissionChecks();
@@ -366,33 +369,51 @@ public class SdkSandboxManagerServiceUnitTest {
}
@Test
- public void testLoadSdk_errorOnFirstLoad_canBeLoadedAgain() throws Exception {
+ public void testLoadSdk_firstLoadPending_errorOnLoadAgainRequest() throws Exception {
disableNetworkPermissionChecks();
disableForegroundCheck();
- // Load code, but make it fail
+ // Request to load the SDK, but do not complete loading it
{
FakeLoadSdkCallbackBinder callback = new FakeLoadSdkCallbackBinder();
mService.loadSdk(
TEST_PACKAGE, SDK_NAME, TIME_APP_CALLED_SYSTEM_SERVER, new Bundle(), callback);
- // Assume SupplementalProcess load fails
- mSdkSandboxService.sendLoadCodeError();
+ }
+
+ // Requesting to load the SDK while the first load is still pending should throw an error
+ {
+ FakeLoadSdkCallbackBinder callback = new FakeLoadSdkCallbackBinder();
+ mService.loadSdk(
+ TEST_PACKAGE, SDK_NAME, TIME_APP_CALLED_SYSTEM_SERVER, new Bundle(), callback);
+ // Verify loading failed
assertThat(callback.isLoadSdkSuccessful()).isFalse();
+ assertThat(callback.getLoadSdkErrorCode())
+ .isEqualTo(SdkSandboxManager.LOAD_SDK_ALREADY_LOADED);
+ assertThat(callback.getLoadSdkErrorMsg()).contains("is currently being loaded");
}
+ }
- // Caller should be able to retry loading the code
+ @Test
+ public void testLoadSdk_errorOnFirstLoad_canBeLoadedAgain() throws Exception {
+ disableNetworkPermissionChecks();
+ disableForegroundCheck();
+
+ // Load code, but make it fail
{
FakeLoadSdkCallbackBinder callback = new FakeLoadSdkCallbackBinder();
mService.loadSdk(
TEST_PACKAGE, SDK_NAME, TIME_APP_CALLED_SYSTEM_SERVER, new Bundle(), callback);
- // Assume SupplementalProcess loads successfully
- mSdkSandboxService.sendLoadCodeSuccessful();
- assertThat(callback.isLoadSdkSuccessful()).isTrue();
+ // Assume sdk load fails
+ mSdkSandboxService.sendLoadCodeError();
+ assertThat(callback.isLoadSdkSuccessful()).isFalse();
}
+
+ // Caller should be able to retry loading the code
+ loadSdk(SDK_NAME);
}
@Test
- public void testLoadSdk_SandboxDiesInBetween() throws Exception {
+ public void testLoadSdk_sandboxDiesInBetween() throws Exception {
disableNetworkPermissionChecks();
disableForegroundCheck();
@@ -415,7 +436,24 @@ public class SdkSandboxManagerServiceUnitTest {
}
@Test
- public void testRequestSurfacePackageSdkNotLoaded() throws Exception {
+ public void testLoadSdk_sandboxIsInitialized() throws Exception {
+ loadSdk(SDK_NAME);
+
+ // Verify that sandbox was initialized
+ assertThat(mSdkSandboxService.getInitializationCount()).isEqualTo(1);
+ }
+
+ @Test
+ public void testLoadSdk_sandboxIsInitialized_onlyOnce() throws Exception {
+ loadSdk(SDK_NAME);
+ loadSdk(SDK_PROVIDER_RESOURCES_SDK_NAME);
+
+ // Verify that sandbox was initialized
+ assertThat(mSdkSandboxService.getInitializationCount()).isEqualTo(1);
+ }
+
+ @Test
+ public void testRequestSurfacePackageSdkNotLoaded_SandboxExists() throws Exception {
disableNetworkPermissionChecks();
disableForegroundCheck();
@@ -428,21 +466,21 @@ public class SdkSandboxManagerServiceUnitTest {
// Trying to request package with not exist SDK packageName
String sdkName = "invalid";
- IllegalArgumentException thrown =
- assertThrows(
- IllegalArgumentException.class,
- () ->
- mService.requestSurfacePackage(
- TEST_PACKAGE,
- sdkName,
- new Binder(),
- 0,
- 500,
- 500,
- TIME_APP_CALLED_SYSTEM_SERVER,
- new Bundle(),
- new FakeRequestSurfacePackageCallbackBinder()));
- assertThat(thrown).hasMessageThat().contains("Sdk " + sdkName + " is not loaded");
+ FakeRequestSurfacePackageCallbackBinder surfacePackageCallback =
+ new FakeRequestSurfacePackageCallbackBinder();
+ mService.requestSurfacePackage(
+ TEST_PACKAGE,
+ sdkName,
+ new Binder(),
+ 0,
+ 500,
+ 500,
+ TIME_APP_CALLED_SYSTEM_SERVER,
+ new Bundle(),
+ surfacePackageCallback);
+ assertThat(surfacePackageCallback.isRequestSurfacePackageSuccessful()).isFalse();
+ assertThat(surfacePackageCallback.getSurfacePackageErrorCode())
+ .isEqualTo(SdkSandboxManager.REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED);
}
@Test
@@ -465,13 +503,13 @@ public class SdkSandboxManagerServiceUnitTest {
callback);
assertThat(callback.isRequestSurfacePackageSuccessful()).isFalse();
assertThat(callback.getSurfacePackageErrorCode())
- .isEqualTo(SdkSandboxManager.SDK_SANDBOX_PROCESS_NOT_AVAILABLE);
+ .isEqualTo(SdkSandboxManager.REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED);
}
@Test
public void testRequestSurfacePackage() throws Exception {
// 1. We first need to collect a proper sdkToken by calling loadCode
- loadSdk();
+ loadSdk(SDK_NAME);
// 2. Call request package with the retrieved sdkToken
FakeRequestSurfacePackageCallbackBinder surfacePackageCallback =
@@ -528,12 +566,12 @@ public class SdkSandboxManagerServiceUnitTest {
requestSurfacePackageCallback);
assertThat(requestSurfacePackageCallback.isRequestSurfacePackageSuccessful()).isFalse();
assertThat(requestSurfacePackageCallback.getSurfacePackageErrorCode())
- .isEqualTo(SdkSandboxManager.SDK_SANDBOX_PROCESS_NOT_AVAILABLE);
+ .isEqualTo(SdkSandboxManager.REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED);
}
@Test
public void testSurfacePackageError() throws Exception {
- loadSdk();
+ loadSdk(SDK_NAME);
// Assume SurfacePackage encounters an error.
FakeRequestSurfacePackageCallbackBinder surfacePackageCallback =
@@ -583,7 +621,7 @@ public class SdkSandboxManagerServiceUnitTest {
assertThat(surfacePackageCallback.isRequestSurfacePackageSuccessful()).isFalse();
assertThat(surfacePackageCallback.getSurfacePackageErrorCode())
- .isEqualTo(SdkSandboxManager.SDK_SANDBOX_PROCESS_NOT_AVAILABLE);
+ .isEqualTo(SdkSandboxManager.REQUEST_SURFACE_PACKAGE_SDK_NOT_LOADED);
}
@Test
@@ -595,7 +633,7 @@ public class SdkSandboxManagerServiceUnitTest {
TEST_PACKAGE, TIME_APP_CALLED_SYSTEM_SERVER, lifecycleCallback);
// Load SDK and start the sandbox
- loadSdk();
+ loadSdk(SDK_NAME);
// Kill the sandbox
ArgumentCaptor<IBinder.DeathRecipient> deathRecipientCaptor =
@@ -612,7 +650,7 @@ public class SdkSandboxManagerServiceUnitTest {
@Test
public void testAddSdkSandboxProcessDeathCallback_AfterStartingSandbox() throws Exception {
// Load SDK and start the sandbox
- loadSdk();
+ loadSdk(SDK_NAME);
// Register for sandbox death event
FakeSdkSandboxProcessDeathCallbackBinder lifecycleCallback =
@@ -635,7 +673,7 @@ public class SdkSandboxManagerServiceUnitTest {
@Test
public void testMultipleAddSdkSandboxProcessDeathCallbacks() throws Exception {
// Load SDK and start the sandbox
- loadSdk();
+ loadSdk(SDK_NAME);
// Register for sandbox death event
FakeSdkSandboxProcessDeathCallbackBinder lifecycleCallback1 =
@@ -665,7 +703,7 @@ public class SdkSandboxManagerServiceUnitTest {
@Test
public void testRemoveSdkSandboxProcessDeathCallback() throws Exception {
// Load SDK and start the sandbox
- loadSdk();
+ loadSdk(SDK_NAME);
// Register for sandbox death event
FakeSdkSandboxProcessDeathCallbackBinder lifecycleCallback1 =
@@ -734,7 +772,14 @@ public class SdkSandboxManagerServiceUnitTest {
PackageManager.MATCH_STATIC_SHARED_AND_SDK_LIBRARIES);
assertThat(info).isNotNull();
SandboxedSdkContext sandboxedSdkContext =
- new SandboxedSdkContext(context, CLIENT_PACKAGE_NAME, info, SDK_NAME, null, null);
+ new SandboxedSdkContext(
+ context,
+ getClass().getClassLoader(),
+ CLIENT_PACKAGE_NAME,
+ info,
+ SDK_NAME,
+ null,
+ null);
Resources resources = sandboxedSdkContext.getResources();
int integerId = resources.getIdentifier("test_integer", "integer",
@@ -790,7 +835,7 @@ public class SdkSandboxManagerServiceUnitTest {
disableKillUid();
// First load SDK.
- loadSdk();
+ loadSdk(SDK_NAME);
final CallingInfo callingInfo = new CallingInfo(Process.myUid(), TEST_PACKAGE);
@@ -811,7 +856,7 @@ public class SdkSandboxManagerServiceUnitTest {
disableKillUid();
// First load SDK.
- loadSdk();
+ loadSdk(SDK_NAME);
final CallingInfo callingInfo = new CallingInfo(Process.myUid(), TEST_PACKAGE);
@@ -879,20 +924,20 @@ public class SdkSandboxManagerServiceUnitTest {
}
@Test
- public void testGetLoadedSdkLibrariesInfo_afterLoadSdkSuccess() throws Exception {
- loadSdk();
- assertThat(mService.getLoadedSdkLibrariesInfo(TEST_PACKAGE, TIME_APP_CALLED_SYSTEM_SERVER))
+ public void testGetSandboxedSdks_afterLoadSdkSuccess() throws Exception {
+ loadSdk(SDK_NAME);
+ assertThat(mService.getSandboxedSdks(TEST_PACKAGE, TIME_APP_CALLED_SYSTEM_SERVER))
.hasSize(1);
assertThat(
- mService.getLoadedSdkLibrariesInfo(
- TEST_PACKAGE, TIME_APP_CALLED_SYSTEM_SERVER)
+ mService.getSandboxedSdks(TEST_PACKAGE, TIME_APP_CALLED_SYSTEM_SERVER)
.get(0)
+ .getSharedLibraryInfo()
.getName())
.isEqualTo(SDK_NAME);
}
@Test
- public void testGetLoadedSdkLibrariesInfo_errorLoadingSdk() throws Exception {
+ public void testGetSandboxedSdks_errorLoadingSdk() throws Exception {
disableNetworkPermissionChecks();
disableForegroundCheck();
@@ -906,7 +951,7 @@ public class SdkSandboxManagerServiceUnitTest {
assertThat(callback.isLoadSdkSuccessful()).isFalse();
assertThat(callback.getLoadSdkErrorCode())
.isEqualTo(SdkSandboxManager.LOAD_SDK_INTERNAL_ERROR);
- assertThat(mService.getLoadedSdkLibrariesInfo(TEST_PACKAGE, TIME_APP_CALLED_SYSTEM_SERVER))
+ assertThat(mService.getSandboxedSdks(TEST_PACKAGE, TIME_APP_CALLED_SYSTEM_SERVER))
.isEmpty();
}
@@ -928,28 +973,17 @@ public class SdkSandboxManagerServiceUnitTest {
@Test
public void testUnloadSdkThatIsNotLoaded() throws Exception {
// Load SDK to bring up a sandbox
- loadSdk();
- // Trying to load an SDK that is not loaded should fail.
- assertThrows(
- IllegalArgumentException.class,
- () -> mService.unloadSdk(
- TEST_PACKAGE, SDK_PROVIDER_PACKAGE, TIME_APP_CALLED_SYSTEM_SERVER));
+ loadSdk(SDK_NAME);
+ // Trying to unload an SDK that is not loaded should do nothing - it's a no-op.
+ mService.unloadSdk(TEST_PACKAGE, SDK_PROVIDER_PACKAGE, TIME_APP_CALLED_SYSTEM_SERVER);
}
@Test
public void testUnloadSdkThatIsLoaded() throws Exception {
disableKillUid();
- loadSdk();
+ loadSdk(SDK_NAME);
- FakeLoadSdkCallbackBinder callback2 = new FakeLoadSdkCallbackBinder();
- mService.loadSdk(
- TEST_PACKAGE,
- SDK_PROVIDER_RESOURCES_SDK_NAME,
- TIME_APP_CALLED_SYSTEM_SERVER,
- new Bundle(),
- callback2);
- mSdkSandboxService.sendLoadCodeSuccessful();
- assertThat(callback2.isLoadSdkSuccessful()).isTrue();
+ loadSdk(SDK_PROVIDER_RESOURCES_SDK_NAME);
final CallingInfo callingInfo = new CallingInfo(Process.myUid(), TEST_PACKAGE);
mService.unloadSdk(TEST_PACKAGE, SDK_NAME, TIME_APP_CALLED_SYSTEM_SERVER);
@@ -967,10 +1001,32 @@ public class SdkSandboxManagerServiceUnitTest {
}
@Test
+ public void testUnloadSdkThatIsBeingLoaded() throws Exception {
+ // Ask to load SDK, but don't finish loading it
+ disableKillUid();
+ disableNetworkPermissionChecks();
+ disableForegroundCheck();
+
+ FakeLoadSdkCallbackBinder callback = new FakeLoadSdkCallbackBinder();
+ mService.loadSdk(
+ TEST_PACKAGE, SDK_NAME, TIME_APP_CALLED_SYSTEM_SERVER, new Bundle(), callback);
+
+ // Trying to unload an SDK that is being loaded should fail
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> mService.unloadSdk(TEST_PACKAGE, SDK_NAME, TIME_APP_CALLED_SYSTEM_SERVER));
+
+ // After loading the SDK, unloading should not fail
+ mSdkSandboxService.sendLoadCodeSuccessful();
+ assertThat(callback.isLoadSdkSuccessful()).isTrue();
+ mService.unloadSdk(TEST_PACKAGE, SDK_NAME, TIME_APP_CALLED_SYSTEM_SERVER);
+ }
+
+ @Test
public void testUnloadSdkAfterKillingSandboxDoesNotThrowException() throws Exception {
disableKillUid();
- loadSdk();
+ loadSdk(SDK_NAME);
// Kill the sandbox
ArgumentCaptor<IBinder.DeathRecipient> deathRecipientCaptor =
@@ -1030,7 +1086,7 @@ public class SdkSandboxManagerServiceUnitTest {
callback.resetLatch();
// Now loadSdk so that sandbox is created
- loadSdk();
+ loadSdk(SDK_NAME);
// Verify that onSandboxStart was called
assertThat(callback.hasSandboxStarted()).isTrue();
@@ -1059,7 +1115,7 @@ public class SdkSandboxManagerServiceUnitTest {
@Test
public void testStopSdkSandbox() throws Exception {
disableKillUid();
- loadSdk();
+ loadSdk(SDK_NAME);
Mockito.doNothing()
.when(mSpyContext)
@@ -1117,7 +1173,7 @@ public class SdkSandboxManagerServiceUnitTest {
@Test
public void testLatencyMetrics_IpcFromAppToSystemServer_LoadSdk() throws Exception {
- loadSdk();
+ loadSdk(SDK_NAME);
ExtendedMockito.verify(
() ->
@@ -1128,14 +1184,14 @@ public class SdkSandboxManagerServiceUnitTest {
(TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP
- TIME_APP_CALLED_SYSTEM_SERVER),
/*success=*/ true,
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__STAGE__APP_TO_SYSTEM_SERVER));
+ SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__APP_TO_SYSTEM_SERVER,
+ mClientAppUid));
}
@Test
public void testLatencyMetrics_IpcFromAppToSystemServer_RequestSurfacePackage()
throws Exception {
- loadSdk();
+ loadSdk(SDK_NAME);
// 2. Call request package
FakeRequestSurfacePackageCallbackBinder surfacePackageCallback =
@@ -1154,37 +1210,36 @@ public class SdkSandboxManagerServiceUnitTest {
() ->
SdkSandboxStatsLog.write(
SdkSandboxStatsLog.SANDBOX_API_CALLED,
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE,
+ SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE,
(int)
(TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP
- TIME_APP_CALLED_SYSTEM_SERVER),
/*success=*/ true,
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__STAGE__APP_TO_SYSTEM_SERVER));
+ SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__APP_TO_SYSTEM_SERVER,
+ mClientAppUid));
}
@Test
- public void testLatencyMetrics_IpcFromAppToSystemServer_GetLoadedSdkLibrariesInfo() {
- mService.getLoadedSdkLibrariesInfo(TEST_PACKAGE, TIME_APP_CALLED_SYSTEM_SERVER);
+ public void testLatencyMetrics_IpcFromAppToSystemServer_GetSandboxedSdks() {
+ mService.getSandboxedSdks(TEST_PACKAGE, TIME_APP_CALLED_SYSTEM_SERVER);
ExtendedMockito.verify(
() ->
SdkSandboxStatsLog.write(
SdkSandboxStatsLog.SANDBOX_API_CALLED,
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__METHOD__GET_LOADED_SDK_LIBRARIES_INFO,
+ SdkSandboxStatsLog.SANDBOX_API_CALLED__METHOD__GET_SANDBOXED_SDKS,
(int)
(TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP
- TIME_APP_CALLED_SYSTEM_SERVER),
/*success=*/ true,
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__STAGE__APP_TO_SYSTEM_SERVER));
+ SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__APP_TO_SYSTEM_SERVER,
+ mClientAppUid));
}
@Test
public void testLatencyMetrics_IpcFromAppToSystemServer_UnloadSdk() throws Exception {
disableKillUid();
- loadSdk();
+
+ loadSdk(SDK_NAME);
mService.unloadSdk(TEST_PACKAGE, SDK_NAME, TIME_APP_CALLED_SYSTEM_SERVER);
ExtendedMockito.verify(
() ->
@@ -1195,8 +1250,8 @@ public class SdkSandboxManagerServiceUnitTest {
(TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP
- TIME_APP_CALLED_SYSTEM_SERVER),
/*success=*/ true,
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__STAGE__APP_TO_SYSTEM_SERVER));
+ SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__APP_TO_SYSTEM_SERVER,
+ mClientAppUid));
}
@Test
@@ -1217,8 +1272,8 @@ public class SdkSandboxManagerServiceUnitTest {
(TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP
- TIME_APP_CALLED_SYSTEM_SERVER),
/*success=*/ true,
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__STAGE__APP_TO_SYSTEM_SERVER));
+ SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__APP_TO_SYSTEM_SERVER,
+ mClientAppUid));
}
// TODO(b/242149555): Update tests to use fake for getting time series.
@@ -1230,7 +1285,7 @@ public class SdkSandboxManagerServiceUnitTest {
START_TIME_TO_LOAD_SANDBOX,
END_TIME_TO_LOAD_SANDBOX,
TIME_SYSTEM_SERVER_CALLS_SANDBOX);
- loadSdk();
+ loadSdk(SDK_NAME);
final int timeToLoadSdk = (int) (END_TIME_TO_LOAD_SANDBOX - START_TIME_TO_LOAD_SANDBOX);
@@ -1241,7 +1296,8 @@ public class SdkSandboxManagerServiceUnitTest {
SdkSandboxStatsLog.SANDBOX_API_CALLED__METHOD__LOAD_SDK,
timeToLoadSdk,
/*success=*/ true,
- SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__LOAD_SANDBOX));
+ SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__LOAD_SANDBOX,
+ mClientAppUid));
int timeSystemServerAppToSandbox =
(int)
@@ -1257,12 +1313,13 @@ public class SdkSandboxManagerServiceUnitTest {
timeSystemServerAppToSandbox,
/*success=*/ true,
SdkSandboxStatsLog
- .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX));
+ .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX,
+ mClientAppUid));
}
@Test
public void testLatencyMetrics_SystemServerSandboxToApp_LoadSdk() throws Exception {
- loadSdk();
+ loadSdk(SDK_NAME);
ExtendedMockito.verify(
() ->
@@ -1271,7 +1328,8 @@ public class SdkSandboxManagerServiceUnitTest {
Mockito.eq(SdkSandboxStatsLog.SANDBOX_API_CALLED__METHOD__LOAD_SDK),
Mockito.anyInt(),
Mockito.eq(/*success=*/ true),
- Mockito.eq(SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_TO_SANDBOX)));
+ Mockito.eq(SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_TO_SANDBOX),
+ Mockito.eq(mClientAppUid)));
ExtendedMockito.verify(
() ->
@@ -1280,7 +1338,8 @@ public class SdkSandboxManagerServiceUnitTest {
Mockito.eq(SdkSandboxStatsLog.SANDBOX_API_CALLED__METHOD__LOAD_SDK),
Mockito.anyInt(),
Mockito.eq(/*success=*/ true),
- Mockito.eq(SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__SANDBOX)));
+ Mockito.eq(SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__SANDBOX),
+ Mockito.eq(mClientAppUid)));
ExtendedMockito.verify(
() ->
@@ -1289,7 +1348,8 @@ public class SdkSandboxManagerServiceUnitTest {
Mockito.eq(SdkSandboxStatsLog.SANDBOX_API_CALLED__METHOD__LOAD_SDK),
Mockito.anyInt(),
Mockito.eq(/*success=*/ true),
- Mockito.eq(SANDBOX_API_CALLED__STAGE__SANDBOX_TO_SYSTEM_SERVER)));
+ Mockito.eq(SANDBOX_API_CALLED__STAGE__SANDBOX_TO_SYSTEM_SERVER),
+ Mockito.eq(mClientAppUid)));
}
@Test
@@ -1320,7 +1380,8 @@ public class SdkSandboxManagerServiceUnitTest {
(TIME_SANDBOX_RECEIVED_CALL_FROM_SYSTEM_SERVER
- TIME_SYSTEM_SERVER_CALLED_SANDBOX),
/*success=*/ true,
- SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_TO_SANDBOX));
+ SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_TO_SANDBOX,
+ mClientAppUid));
int sandboxLatency =
(int)
@@ -1335,7 +1396,8 @@ public class SdkSandboxManagerServiceUnitTest {
SdkSandboxStatsLog.SANDBOX_API_CALLED__METHOD__LOAD_SDK,
sandboxLatency,
/*success=*/ true,
- SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__SANDBOX));
+ SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__SANDBOX,
+ mClientAppUid));
ExtendedMockito.verify(
() ->
@@ -1344,7 +1406,8 @@ public class SdkSandboxManagerServiceUnitTest {
SdkSandboxStatsLog.SANDBOX_API_CALLED__METHOD__LOAD_SDK,
(int) (TIME_SDK_CALL_COMPLETED - TIME_SANDBOX_CALLED_SDK),
/*success=*/ true,
- SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__SDK));
+ SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__SDK,
+ mClientAppUid));
ExtendedMockito.verify(
() ->
@@ -1355,7 +1418,8 @@ public class SdkSandboxManagerServiceUnitTest {
(TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_SANDBOX
- TIME_SANDBOX_CALLED_SYSTEM_SERVER),
/*success=*/ true,
- SANDBOX_API_CALLED__STAGE__SANDBOX_TO_SYSTEM_SERVER));
+ SANDBOX_API_CALLED__STAGE__SANDBOX_TO_SYSTEM_SERVER,
+ mClientAppUid));
}
@Test
@@ -1363,6 +1427,7 @@ public class SdkSandboxManagerServiceUnitTest {
throws Exception {
disableNetworkPermissionChecks();
disableForegroundCheck();
+
Mockito.when(mInjector.getCurrentTime())
.thenReturn(
TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP,
@@ -1400,7 +1465,8 @@ public class SdkSandboxManagerServiceUnitTest {
timeSystemServerAppToSandbox,
/*success=*/ false,
SdkSandboxStatsLog
- .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX));
+ .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX,
+ mClientAppUid));
}
@Test
@@ -1408,6 +1474,7 @@ public class SdkSandboxManagerServiceUnitTest {
throws RemoteException {
disableNetworkPermissionChecks();
disableForegroundCheck();
+
Mockito.when(mInjector.getCurrentTime())
.thenReturn(TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP, TIME_FAILURE_HANDLED);
@@ -1425,7 +1492,8 @@ public class SdkSandboxManagerServiceUnitTest {
- TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP),
/*success=*/ false,
SdkSandboxStatsLog
- .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX));
+ .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX,
+ mClientAppUid));
ExtendedMockito.verify(
() ->
@@ -1434,6 +1502,7 @@ public class SdkSandboxManagerServiceUnitTest {
Mockito.anyInt(),
Mockito.anyInt(),
Mockito.anyBoolean(),
+ Mockito.anyInt(),
Mockito.anyInt()),
Mockito.times(2));
}
@@ -1473,7 +1542,8 @@ public class SdkSandboxManagerServiceUnitTest {
- TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP),
/*success=*/ false,
SdkSandboxStatsLog
- .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX));
+ .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX,
+ mClientAppUid));
ExtendedMockito.verify(
() ->
@@ -1482,6 +1552,7 @@ public class SdkSandboxManagerServiceUnitTest {
Mockito.anyInt(),
Mockito.anyInt(),
Mockito.anyBoolean(),
+ Mockito.anyInt(),
Mockito.anyInt()),
Mockito.times(2));
}
@@ -1510,7 +1581,8 @@ public class SdkSandboxManagerServiceUnitTest {
SdkSandboxStatsLog.SANDBOX_API_CALLED__METHOD__LOAD_SDK,
(int) (TIME_FAILURE_HANDLED - START_TIME_TO_LOAD_SANDBOX),
/*success=*/ false,
- SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__LOAD_SANDBOX));
+ SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__LOAD_SANDBOX,
+ mClientAppUid));
}
@Test
@@ -1526,7 +1598,7 @@ public class SdkSandboxManagerServiceUnitTest {
TIME_SYSTEM_SERVER_CALLED_APP,
TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP,
TIME_SYSTEM_SERVER_CALLED_SANDBOX);
- loadSdk();
+ loadSdk(SDK_NAME);
// 2. Call request package
FakeRequestSurfacePackageCallbackBinder surfacePackageCallback =
@@ -1548,47 +1620,44 @@ public class SdkSandboxManagerServiceUnitTest {
() ->
SdkSandboxStatsLog.write(
SdkSandboxStatsLog.SANDBOX_API_CALLED,
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE,
+ SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE,
(int)
(TIME_SYSTEM_SERVER_CALLED_SANDBOX
- TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP),
/*success=*/ true,
SdkSandboxStatsLog
- .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX));
+ .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX,
+ mClientAppUid));
ExtendedMockito.verify(
() ->
SdkSandboxStatsLog.write(
Mockito.eq(SdkSandboxStatsLog.SANDBOX_API_CALLED),
- Mockito.eq(
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE),
+ Mockito.eq(SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE),
Mockito.anyInt(),
Mockito.eq(/*success=*/ true),
- Mockito.eq(SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_TO_SANDBOX)));
+ Mockito.eq(SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_TO_SANDBOX),
+ Mockito.eq(mClientAppUid)));
ExtendedMockito.verify(
() ->
SdkSandboxStatsLog.write(
Mockito.eq(SdkSandboxStatsLog.SANDBOX_API_CALLED),
- Mockito.eq(
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE),
+ Mockito.eq(SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE),
Mockito.anyInt(),
Mockito.eq(/*success=*/ true),
- Mockito.eq(SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__SANDBOX)));
+ Mockito.eq(SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__SANDBOX),
+ Mockito.eq(mClientAppUid)));
ExtendedMockito.verify(
() ->
SdkSandboxStatsLog.write(
Mockito.eq(SdkSandboxStatsLog.SANDBOX_API_CALLED),
- Mockito.eq(
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE),
+ Mockito.eq(SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE),
Mockito.anyInt(),
Mockito.eq(/*success=*/ true),
- Mockito.eq(SANDBOX_API_CALLED__STAGE__SANDBOX_TO_SYSTEM_SERVER)));
+ Mockito.eq(SANDBOX_API_CALLED__STAGE__SANDBOX_TO_SYSTEM_SERVER),
+ Mockito.eq(mClientAppUid)));
}
@Test
@@ -1605,7 +1674,7 @@ public class SdkSandboxManagerServiceUnitTest {
TIME_SYSTEM_SERVER_CALLED_APP,
TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP,
TIME_SYSTEM_SERVER_CALLED_SANDBOX);
- loadSdk();
+ loadSdk(SDK_NAME);
// 2. Call request package
FakeRequestSurfacePackageCallbackBinder surfacePackageCallback =
@@ -1627,80 +1696,122 @@ public class SdkSandboxManagerServiceUnitTest {
() ->
SdkSandboxStatsLog.write(
SdkSandboxStatsLog.SANDBOX_API_CALLED,
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE,
+ SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE,
(int)
(TIME_SYSTEM_SERVER_CALLED_SANDBOX
- TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP),
/*success=*/ true,
SdkSandboxStatsLog
- .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX));
+ .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX,
+ mClientAppUid));
ExtendedMockito.verify(
() ->
SdkSandboxStatsLog.write(
Mockito.eq(SdkSandboxStatsLog.SANDBOX_API_CALLED),
- Mockito.eq(
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE),
+ Mockito.eq(SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE),
Mockito.anyInt(),
Mockito.eq(/*success=*/ true),
- Mockito.eq(SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_TO_SANDBOX)));
+ Mockito.eq(SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_TO_SANDBOX),
+ Mockito.eq(mClientAppUid)));
ExtendedMockito.verify(
() ->
SdkSandboxStatsLog.write(
Mockito.eq(SdkSandboxStatsLog.SANDBOX_API_CALLED),
- Mockito.eq(
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE),
+ Mockito.eq(SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE),
Mockito.anyInt(),
Mockito.eq(/*success=*/ true),
- Mockito.eq(SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__SANDBOX)));
+ Mockito.eq(SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__SANDBOX),
+ Mockito.eq(mClientAppUid)));
ExtendedMockito.verify(
() ->
SdkSandboxStatsLog.write(
Mockito.eq(SdkSandboxStatsLog.SANDBOX_API_CALLED),
- Mockito.eq(
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE),
+ Mockito.eq(SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE),
Mockito.anyInt(),
Mockito.eq(/*success=*/ true),
- Mockito.eq(SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__SDK)));
+ Mockito.eq(SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__SDK),
+ Mockito.eq(mClientAppUid)));
ExtendedMockito.verify(
() ->
SdkSandboxStatsLog.write(
Mockito.eq(SdkSandboxStatsLog.SANDBOX_API_CALLED),
- Mockito.eq(
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE),
+ Mockito.eq(SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE),
Mockito.anyInt(),
Mockito.eq(/*success=*/ true),
- Mockito.eq(SANDBOX_API_CALLED__STAGE__SANDBOX_TO_SYSTEM_SERVER)));
+ Mockito.eq(SANDBOX_API_CALLED__STAGE__SANDBOX_TO_SYSTEM_SERVER),
+ Mockito.eq(mClientAppUid)));
+ }
+
+ @Test
+ public void testLatencyMetrics_SystemServerSandboxToApp_RequestSurfacePackage()
+ throws RemoteException {
+ Mockito.when(mInjector.getCurrentTime())
+ .thenReturn(
+ TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP,
+ START_TIME_TO_LOAD_SANDBOX,
+ END_TIME_TO_LOAD_SANDBOX,
+ TIME_SYSTEM_SERVER_CALLED_SANDBOX,
+ TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_SANDBOX,
+ TIME_SYSTEM_SERVER_CALLED_APP,
+ TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP,
+ TIME_SYSTEM_SERVER_CALLED_SANDBOX,
+ TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_SANDBOX,
+ TIME_SYSTEM_SERVER_CALLED_APP);
+ loadSdk(SDK_NAME);
+
+ // 2. Call request package
+ FakeRequestSurfacePackageCallbackBinder surfacePackageCallback =
+ new FakeRequestSurfacePackageCallbackBinder();
+ mService.requestSurfacePackage(
+ TEST_PACKAGE,
+ SDK_NAME,
+ new Binder(),
+ 0,
+ 500,
+ 500,
+ TIME_APP_CALLED_SYSTEM_SERVER,
+ new Bundle(),
+ surfacePackageCallback);
+ mSdkSandboxService.sendSurfacePackageReady(
+ new SandboxLatencyInfo(TIME_SYSTEM_SERVER_CALLED_SANDBOX));
+
+ ExtendedMockito.verify(
+ () ->
+ SdkSandboxStatsLog.write(
+ SdkSandboxStatsLog.SANDBOX_API_CALLED,
+ SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE,
+ (int)
+ (TIME_SYSTEM_SERVER_CALLED_APP
+ - TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_SANDBOX),
+ /*success=*/ true,
+ SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_SANDBOX_TO_APP,
+ mClientAppUid));
}
@Test
- public void testLatencyMetrics_SystemServerAppToSandbox_GetLoadedSdkLibrariesInfo() {
+ public void testLatencyMetrics_SystemServerAppToSandbox_GetSandboxedSdks() {
// TODO(b/242149555): Update tests to use fake for getting time series.
Mockito.when(mInjector.getCurrentTime())
.thenReturn(TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP, END_TIME_IN_SYSTEM_SERVER);
- mService.getLoadedSdkLibrariesInfo(TEST_PACKAGE, TIME_APP_CALLED_SYSTEM_SERVER);
+ mService.getSandboxedSdks(TEST_PACKAGE, TIME_APP_CALLED_SYSTEM_SERVER);
ExtendedMockito.verify(
() ->
SdkSandboxStatsLog.write(
SdkSandboxStatsLog.SANDBOX_API_CALLED,
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__METHOD__GET_LOADED_SDK_LIBRARIES_INFO,
+ SdkSandboxStatsLog.SANDBOX_API_CALLED__METHOD__GET_SANDBOXED_SDKS,
(int)
(END_TIME_IN_SYSTEM_SERVER
- TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP),
/*success=*/ true,
SdkSandboxStatsLog
- .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX));
+ .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX,
+ mClientAppUid));
}
@Test
@@ -1711,12 +1822,11 @@ public class SdkSandboxManagerServiceUnitTest {
() ->
SdkSandboxStatsLog.write(
SdkSandboxStatsLog.SANDBOX_API_CALLED,
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE,
+ SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE,
/*latency=*/ 1,
/*success=*/ true,
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_TO_APP));
+ SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_TO_APP,
+ mClientAppUid));
}
@Test
@@ -1753,14 +1863,14 @@ public class SdkSandboxManagerServiceUnitTest {
assertThat(listener.isKillSwitchEnabled()).isFalse();
listener.onPropertiesChanged(
new DeviceConfig.Properties(
- DeviceConfig.NAMESPACE_SDK_SANDBOX,
+ DeviceConfig.NAMESPACE_ADSERVICES,
Map.of(PROPERTY_DISABLE_SANDBOX, "true")));
assertThat(listener.isKillSwitchEnabled()).isTrue();
listener.onPropertiesChanged(
new DeviceConfig.Properties(
- DeviceConfig.NAMESPACE_SDK_SANDBOX,
+ DeviceConfig.NAMESPACE_ADSERVICES,
Map.of(PROPERTY_DISABLE_SANDBOX, "false")));
- assertThat(listener.isKillSwitchEnabled()).isTrue();
+ assertThat(listener.isKillSwitchEnabled()).isFalse();
}
@Test
@@ -1770,13 +1880,13 @@ public class SdkSandboxManagerServiceUnitTest {
mService.getSdkSandboxSettingsListener();
listener.onPropertiesChanged(
new DeviceConfig.Properties(
- DeviceConfig.NAMESPACE_SDK_SANDBOX,
+ DeviceConfig.NAMESPACE_ADSERVICES,
Map.of(PROPERTY_DISABLE_SANDBOX, "false")));
mService.getSdkSandboxSettingsListener().reset();
- loadSdk();
+ loadSdk(SDK_NAME);
listener.onPropertiesChanged(
new DeviceConfig.Properties(
- DeviceConfig.NAMESPACE_SDK_SANDBOX,
+ DeviceConfig.NAMESPACE_ADSERVICES,
Map.of(PROPERTY_DISABLE_SANDBOX, "true")));
int callingUid = Binder.getCallingUid();
final CallingInfo callingInfo = new CallingInfo(callingUid, TEST_PACKAGE);
@@ -1784,15 +1894,18 @@ public class SdkSandboxManagerServiceUnitTest {
}
@Test
- public void testLoadSdkFailsWhenSandboxDisabled() {
+ public void testLoadSdkFailsWhenSandboxDisabled() throws Exception {
disableNetworkPermissionChecks();
disableForegroundCheck();
SdkSandboxManagerService.SdkSandboxSettingsListener listener =
mService.getSdkSandboxSettingsListener();
listener.reset();
+ // Sleep needed to avoid deadlock.
+ // TODO(b/257255118): Remove this sleep.
+ Thread.sleep(500);
listener.onPropertiesChanged(
new DeviceConfig.Properties(
- DeviceConfig.NAMESPACE_SDK_SANDBOX,
+ DeviceConfig.NAMESPACE_ADSERVICES,
Map.of(PROPERTY_DISABLE_SANDBOX, "true")));
FakeLoadSdkCallbackBinder callback = new FakeLoadSdkCallbackBinder();
mService.loadSdk(
@@ -1828,14 +1941,14 @@ public class SdkSandboxManagerServiceUnitTest {
() ->
SdkSandboxStatsLog.write(
SdkSandboxStatsLog.SANDBOX_API_CALLED,
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE,
+ SANDBOX_API_CALLED__METHOD__REQUEST_SURFACE_PACKAGE,
(int)
(TIME_FAILURE_HANDLED
- TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP),
/*success=*/ false,
SdkSandboxStatsLog
- .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX));
+ .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX,
+ mClientAppUid));
}
@Test
@@ -1857,7 +1970,7 @@ public class SdkSandboxManagerServiceUnitTest {
TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_SANDBOX,
TIME_SYSTEM_SERVER_CALLED_APP);
- loadSdk();
+ loadSdk(SDK_NAME);
mService.unloadSdk(TEST_PACKAGE, SDK_NAME, TIME_APP_CALLED_SYSTEM_SERVER);
ExtendedMockito.verify(
() ->
@@ -1868,8 +1981,8 @@ public class SdkSandboxManagerServiceUnitTest {
(TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP
- TIME_APP_CALLED_SYSTEM_SERVER),
/*success=*/ true,
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__STAGE__APP_TO_SYSTEM_SERVER));
+ SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__APP_TO_SYSTEM_SERVER,
+ mClientAppUid));
ExtendedMockito.verify(
() ->
@@ -1881,11 +1994,12 @@ public class SdkSandboxManagerServiceUnitTest {
- TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP),
/*success=*/ true,
SdkSandboxStatsLog
- .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX));
+ .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX,
+ mClientAppUid));
}
@Test
- public void testLatencyMetrics_systemServer_unloadSdk_withSandboxLatencies() throws Exception {
+ public void testLatencyMetrics_SystemServer_UnloadSdk_WithSandboxLatencies() throws Exception {
disableKillUid();
Mockito.when(mInjector.getCurrentTime())
@@ -1904,7 +2018,7 @@ public class SdkSandboxManagerServiceUnitTest {
TIME_SYSTEM_SERVER_CALLED_APP,
TIME_SANDBOX_CALLED_SYSTEM_SERVER);
- loadSdk();
+ loadSdk(SDK_NAME);
mService.unloadSdk(TEST_PACKAGE, SDK_NAME, TIME_APP_CALLED_SYSTEM_SERVER);
mSdkSandboxService.sendUnloadSdkSuccess();
@@ -1917,7 +2031,8 @@ public class SdkSandboxManagerServiceUnitTest {
(TIME_SANDBOX_RECEIVED_CALL_FROM_SYSTEM_SERVER
- TIME_SYSTEM_SERVER_CALLED_SANDBOX),
/*success=*/ true,
- SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_TO_SANDBOX));
+ SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_TO_SANDBOX,
+ mClientAppUid));
ExtendedMockito.verify(
() ->
@@ -1930,7 +2045,8 @@ public class SdkSandboxManagerServiceUnitTest {
- (TIME_SDK_CALL_COMPLETED
- TIME_SANDBOX_CALLED_SDK)),
/*success=*/ true,
- SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__SANDBOX));
+ SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__SANDBOX,
+ mClientAppUid));
ExtendedMockito.verify(
() ->
@@ -1939,7 +2055,8 @@ public class SdkSandboxManagerServiceUnitTest {
SdkSandboxStatsLog.SANDBOX_API_CALLED__METHOD__UNLOAD_SDK,
(int) (TIME_SDK_CALL_COMPLETED - TIME_SANDBOX_CALLED_SDK),
/*success=*/ true,
- SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__SDK));
+ SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__SDK,
+ mClientAppUid));
ExtendedMockito.verify(
() ->
@@ -1950,7 +2067,8 @@ public class SdkSandboxManagerServiceUnitTest {
(TIME_SANDBOX_CALLED_SYSTEM_SERVER
- TIME_SANDBOX_CALLED_SYSTEM_SERVER),
/*success=*/ true,
- SANDBOX_API_CALLED__STAGE__SANDBOX_TO_SYSTEM_SERVER));
+ SANDBOX_API_CALLED__STAGE__SANDBOX_TO_SYSTEM_SERVER,
+ mClientAppUid));
ExtendedMockito.verify(
() ->
@@ -1961,7 +2079,8 @@ public class SdkSandboxManagerServiceUnitTest {
(TIME_SYSTEM_SERVER_CALLED_APP
- TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_SANDBOX),
/*success=*/ true,
- SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_SANDBOX_TO_APP));
+ SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_SANDBOX_TO_APP,
+ mClientAppUid));
}
@Test
@@ -1985,8 +2104,8 @@ public class SdkSandboxManagerServiceUnitTest {
(TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP
- TIME_APP_CALLED_SYSTEM_SERVER),
/*success=*/ true,
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__STAGE__APP_TO_SYSTEM_SERVER));
+ SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__APP_TO_SYSTEM_SERVER,
+ mClientAppUid));
}
@Test
@@ -2013,7 +2132,8 @@ public class SdkSandboxManagerServiceUnitTest {
- TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP),
/*success=*/ true,
SdkSandboxStatsLog
- .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX));
+ .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX,
+ mClientAppUid));
}
@Test
@@ -2045,8 +2165,8 @@ public class SdkSandboxManagerServiceUnitTest {
(TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP
- TIME_APP_CALLED_SYSTEM_SERVER),
/*success=*/ true,
- SdkSandboxStatsLog
- .SANDBOX_API_CALLED__STAGE__APP_TO_SYSTEM_SERVER));
+ SdkSandboxStatsLog.SANDBOX_API_CALLED__STAGE__APP_TO_SYSTEM_SERVER,
+ mClientAppUid));
}
@Test
@@ -2081,7 +2201,8 @@ public class SdkSandboxManagerServiceUnitTest {
- TIME_SYSTEM_SERVER_RECEIVED_CALL_FROM_APP),
/*success=*/ true,
SdkSandboxStatsLog
- .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX));
+ .SANDBOX_API_CALLED__STAGE__SYSTEM_SERVER_APP_TO_SANDBOX,
+ mClientAppUid));
}
private SandboxLatencyInfo getFakedSandboxLatencies() {
@@ -2096,12 +2217,12 @@ public class SdkSandboxManagerServiceUnitTest {
return sandboxLatencyInfo;
}
- private void loadSdk() throws RemoteException {
+ private void loadSdk(String sdkName) throws RemoteException {
disableNetworkPermissionChecks();
disableForegroundCheck();
FakeLoadSdkCallbackBinder callback = new FakeLoadSdkCallbackBinder();
mService.loadSdk(
- TEST_PACKAGE, SDK_NAME, TIME_APP_CALLED_SYSTEM_SERVER, new Bundle(), callback);
+ TEST_PACKAGE, sdkName, TIME_APP_CALLED_SYSTEM_SERVER, new Bundle(), callback);
mSdkSandboxService.sendLoadCodeSuccessful();
assertThat(callback.isLoadSdkSuccessful()).isTrue();
}
@@ -2171,10 +2292,11 @@ public class SdkSandboxManagerServiceUnitTest {
private ILoadSdkInSandboxCallback mLoadSdkInSandboxCallback;
private final ISdkSandboxManagerToSdkSandboxCallback mManagerToSdkCallback;
private IRequestSurfacePackageFromSdkCallback mRequestSurfacePackageFromSdkCallback = null;
- private ISdkToServiceCallback mSdkToServiceCallback;
private IUnloadSdkCallback mUnloadSdkCallback = null;
private boolean mSurfacePackageRequested = false;
+ private int mInitializationCount = 0;
+
boolean mIsDisabledResponse = false;
private SharedPreferencesUpdate mLastSyncUpdate = null;
@@ -2184,9 +2306,13 @@ public class SdkSandboxManagerServiceUnitTest {
}
@Override
+ public void initialize(ISdkToServiceCallback sdkToServiceCallback) {
+ mInitializationCount++;
+ }
+
+ @Override
public void loadSdk(
String callingPackageName,
- IBinder codeToken,
ApplicationInfo info,
String sdkName,
String sdkProviderClass,
@@ -2194,15 +2320,13 @@ public class SdkSandboxManagerServiceUnitTest {
String deDataDir,
Bundle params,
ILoadSdkInSandboxCallback callback,
- SandboxLatencyInfo sandboxLatencyInfo,
- ISdkToServiceCallback sdkToServiceCallback) {
+ SandboxLatencyInfo sandboxLatencyInfo) {
mLoadSdkInSandboxCallback = callback;
- mSdkToServiceCallback = sdkToServiceCallback;
}
@Override
public void unloadSdk(
- IBinder sdkToken,
+ String sdkName,
IUnloadSdkCallback callback,
SandboxLatencyInfo sandboxLatencyInfo) {
mUnloadSdkCallback = callback;
@@ -2232,12 +2356,11 @@ public class SdkSandboxManagerServiceUnitTest {
return mLastSyncUpdate;
}
+ int getInitializationCount() {
+ return mInitializationCount;
+ }
+
void sendLoadCodeSuccessful() throws RemoteException {
- // Whenever loadSdk has been called successfully, the callback should have been
- // instantiated.
- Objects.requireNonNull(
- mSdkToServiceCallback,
- "mSdkToServiceCallback should have been passed when loadSdk succeeded");
mLoadSdkInSandboxCallback.onLoadSdkSuccess(
new SandboxedSdk(new Binder()),
mManagerToSdkCallback,