diff options
author | 2024-08-12 18:22:37 +0000 | |
---|---|---|
committer | 2024-08-12 18:22:37 +0000 | |
commit | 35f0119787662f8d742aac4eb17d0992f78a4254 (patch) | |
tree | 8ea249efd8ed7f905682c1c97e97b8574af0126d /tests | |
parent | eaa7d09b6075e8bbb00904f76bf0c81d655bab46 (diff) | |
parent | 51dcb3e094bad99d2f3e8d3e692a7dd0ebcf7d30 (diff) |
Merge "Don't send target selection callbacks crossprofile" into main
Diffstat (limited to 'tests')
-rw-r--r-- | tests/unit/src/com/android/intentresolver/ui/ShareResultSenderImplTest.kt | 68 |
1 files changed, 66 insertions, 2 deletions
diff --git a/tests/unit/src/com/android/intentresolver/ui/ShareResultSenderImplTest.kt b/tests/unit/src/com/android/intentresolver/ui/ShareResultSenderImplTest.kt index c254a856..7b43360a 100644 --- a/tests/unit/src/com/android/intentresolver/ui/ShareResultSenderImplTest.kt +++ b/tests/unit/src/com/android/intentresolver/ui/ShareResultSenderImplTest.kt @@ -68,7 +68,7 @@ class ShareResultSenderImplTest { intentDispatcher = intentDispatcher ) - resultSender.onComponentSelected(ComponentName("example.com", "Foo"), true) + resultSender.onComponentSelected(ComponentName("example.com", "Foo"), true, false) runCurrent() val intentReceived = deferred.await() @@ -83,6 +83,43 @@ class ShareResultSenderImplTest { assertThat(chooserResult?.isShortcut).isTrue() } + @OptIn(ExperimentalCoroutinesApi::class) + @EnableCompatChanges(ChooserResult.SEND_CHOOSER_RESULT) + @Test + fun onComponentSelected_crossProfile_chooserResultEnabled() = runTest { + val pi = PendingIntent.getBroadcast(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) + val deferred = CompletableDeferred<Intent>() + val intentDispatcher = IntentSenderDispatcher { _, intent -> deferred.complete(intent) } + + flags.setFlag(Flags.FLAG_ENABLE_CHOOSER_RESULT, true) + + val resultSender = + ShareResultSenderImpl( + flags = flags, + scope = this, + backgroundDispatcher = UnconfinedTestDispatcher(testScheduler), + callerUid = Process.myUid(), + resultSender = pi.intentSender, + intentDispatcher = intentDispatcher + ) + + // Invoke as in the previous test, but this time say that the selection was cross-profile. + resultSender.onComponentSelected(ComponentName("example.com", "Foo"), true, true) + runCurrent() + + val intentReceived = deferred.await() + val chooserResult = + intentReceived.getParcelableExtra( + Intent.EXTRA_CHOOSER_RESULT, + ChooserResult::class.java + ) + assertThat(chooserResult).isNotNull() + assertThat(chooserResult?.type).isEqualTo(ChooserResult.CHOOSER_RESULT_UNKNOWN) + assertThat(chooserResult?.selectedComponent).isNull() + assertThat(chooserResult?.isShortcut).isTrue() + assertThat(intentReceived.hasExtra(Intent.EXTRA_CHOSEN_COMPONENT)).isFalse() + } + @DisableCompatChanges(ChooserResult.SEND_CHOOSER_RESULT) @Test fun onComponentSelected_chooserResultDisabled() = runTest { @@ -102,7 +139,7 @@ class ShareResultSenderImplTest { intentDispatcher = intentDispatcher ) - resultSender.onComponentSelected(ComponentName("example.com", "Foo"), true) + resultSender.onComponentSelected(ComponentName("example.com", "Foo"), true, false) runCurrent() val intentReceived = deferred.await() @@ -121,6 +158,33 @@ class ShareResultSenderImplTest { .isFalse() } + @DisableCompatChanges(ChooserResult.SEND_CHOOSER_RESULT) + @Test + fun onComponentSelected_crossProfile_chooserResultDisabled() = runTest { + val pi = PendingIntent.getBroadcast(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) + val deferred = CompletableDeferred<Intent>() + val intentDispatcher = IntentSenderDispatcher { _, intent -> deferred.complete(intent) } + + flags.setFlag(Flags.FLAG_ENABLE_CHOOSER_RESULT, true) + + val resultSender = + ShareResultSenderImpl( + flags = flags, + scope = this, + backgroundDispatcher = UnconfinedTestDispatcher(testScheduler), + callerUid = Process.myUid(), + resultSender = pi.intentSender, + intentDispatcher = intentDispatcher + ) + + // Invoke as in the previous test, but this time say that the selection was cross-profile. + resultSender.onComponentSelected(ComponentName("example.com", "Foo"), true, true) + runCurrent() + + // In the pre-ChooserResult API, no callback intent is sent for cross-profile selections. + assertWithMessage("deferred result isComplete").that(deferred.isCompleted).isFalse() + } + @EnableCompatChanges(ChooserResult.SEND_CHOOSER_RESULT) @Test fun onActionSelected_chooserResultEnabled() = runTest { |