summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2024-08-12 18:22:37 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-08-12 18:22:37 +0000
commit35f0119787662f8d742aac4eb17d0992f78a4254 (patch)
tree8ea249efd8ed7f905682c1c97e97b8574af0126d /tests
parenteaa7d09b6075e8bbb00904f76bf0c81d655bab46 (diff)
parent51dcb3e094bad99d2f3e8d3e692a7dd0ebcf7d30 (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.kt68
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 {