diff options
| author | 2024-02-16 09:10:17 -0500 | |
|---|---|---|
| committer | 2024-02-16 09:22:53 -0500 | |
| commit | 14f66cd6f133fff70c5beab7575b25301568fd6e (patch) | |
| tree | 1350aec0232dc332b8f1370a62db98fcde789a5c | |
| parent | fc6f67c8ddd0fbcd96c363c1c9490aec609e7b67 (diff) | |
Adds hasComponent and hasSendAction to IntentExt
Bug: n/a
Test: atest com.android.intentresolver.v2.ext.IntentExtTest
Change-Id: I6b2ab5e5f829a6ea1d7c127dcc3dac810e0b6982
3 files changed, 23 insertions, 6 deletions
diff --git a/java/src/com/android/intentresolver/v2/ext/IntentExt.kt b/java/src/com/android/intentresolver/v2/ext/IntentExt.kt index 7aa8e036..8c2d7277 100644 --- a/java/src/com/android/intentresolver/v2/ext/IntentExt.kt +++ b/java/src/com/android/intentresolver/v2/ext/IntentExt.kt @@ -32,8 +32,14 @@ inline fun Intent.ifMatch( /** True if the Intent has one of the specified actions. */ fun Intent.hasAction(vararg actions: String): Boolean = action in actions +/** True if the Intent has a specific component target */ +fun Intent.hasComponent(): Boolean = (component != null) + /** True if the Intent has a single matching category. */ fun Intent.hasSingleCategory(category: String) = categories.singleOrNull() == category +/** True if the Intent is a SEND or SEND_MULTIPLE action. */ +fun Intent.hasSendAction() = hasAction(Intent.ACTION_SEND, Intent.ACTION_SEND_MULTIPLE) + /** True if the Intent resolves to the special Home (Launcher) component */ fun Intent.isHomeIntent() = hasAction(Intent.ACTION_MAIN) && hasSingleCategory(Intent.CATEGORY_HOME) diff --git a/java/src/com/android/intentresolver/v2/ui/viewmodel/ChooserRequestReader.kt b/java/src/com/android/intentresolver/v2/ui/viewmodel/ChooserRequestReader.kt index 565d4de1..e32d69b0 100644 --- a/java/src/com/android/intentresolver/v2/ui/viewmodel/ChooserRequestReader.kt +++ b/java/src/com/android/intentresolver/v2/ui/viewmodel/ChooserRequestReader.kt @@ -17,8 +17,6 @@ package com.android.intentresolver.v2.ui.viewmodel import android.content.ComponentName import android.content.Intent -import android.content.Intent.ACTION_SEND -import android.content.Intent.ACTION_SEND_MULTIPLE import android.content.Intent.EXTRA_ALTERNATE_INTENTS import android.content.Intent.EXTRA_CHOOSER_CUSTOM_ACTIONS import android.content.Intent.EXTRA_CHOOSER_MODIFY_SHARE_ACTION @@ -47,7 +45,7 @@ import com.android.intentresolver.ContentTypeHint import com.android.intentresolver.R import com.android.intentresolver.inject.ChooserServiceFlags import com.android.intentresolver.util.hasValidIcon -import com.android.intentresolver.v2.ext.hasAction +import com.android.intentresolver.v2.ext.hasSendAction import com.android.intentresolver.v2.ext.ifMatch import com.android.intentresolver.v2.ui.model.ActivityLaunch import com.android.intentresolver.v2.ui.model.ChooserRequest @@ -60,8 +58,6 @@ import com.android.intentresolver.v2.validation.validateFrom private const val MAX_CHOOSER_ACTIONS = 5 private const val MAX_INITIAL_INTENTS = 2 -private fun Intent.hasSendAction() = hasAction(ACTION_SEND, ACTION_SEND_MULTIPLE) - internal fun Intent.maybeAddSendActionFlags() = ifMatch(Intent::hasSendAction) { addFlags(FLAG_ACTIVITY_NEW_DOCUMENT) @@ -77,7 +73,7 @@ fun readChooserRequest( return validateFrom(extras::get) { val targetIntent = required(IntentOrUri(EXTRA_INTENT)).maybeAddSendActionFlags() - val isSendAction = targetIntent.hasAction(ACTION_SEND, ACTION_SEND_MULTIPLE) + val isSendAction = targetIntent.hasSendAction() val additionalTargets = optional(array<Intent>(EXTRA_ALTERNATE_INTENTS))?.map { it.maybeAddSendActionFlags() } diff --git a/tests/unit/src/com/android/intentresolver/v2/ext/IntentExtTest.kt b/tests/unit/src/com/android/intentresolver/v2/ext/IntentExtTest.kt index 6a16168c..2ccd548a 100644 --- a/tests/unit/src/com/android/intentresolver/v2/ext/IntentExtTest.kt +++ b/tests/unit/src/com/android/intentresolver/v2/ext/IntentExtTest.kt @@ -15,6 +15,7 @@ */ package com.android.intentresolver.v2.ext +import android.content.ComponentName import android.content.Intent import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertWithMessage @@ -36,6 +37,20 @@ class IntentExtTest { } @Test + fun hasComponent() { + assertThat(Intent().hasComponent()).isFalse() + assertThat(Intent().setComponent(ComponentName("A", "B")).hasComponent()).isTrue() + } + + @Test + fun hasSendAction() { + assertThat(Intent(Intent.ACTION_SEND).hasSendAction()).isTrue() + assertThat(Intent(Intent.ACTION_SEND_MULTIPLE).hasSendAction()).isTrue() + assertThat(Intent(Intent.ACTION_SENDTO).hasSendAction()).isFalse() + assertThat(Intent(Intent.ACTION_VIEW).hasSendAction()).isFalse() + } + + @Test fun hasSingleCategory() { val intent = Intent().addCategory(Intent.CATEGORY_HOME) assertThat(intent.hasSingleCategory(Intent.CATEGORY_HOME)).isTrue() |