summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/intentresolver/v2/ext/IntentExt.kt6
-rw-r--r--java/src/com/android/intentresolver/v2/ui/viewmodel/ChooserRequestReader.kt8
2 files changed, 8 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() }