summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
author Andrey Epin <ayepin@google.com> 2024-02-07 21:31:28 -0800
committer Andrey Epin <ayepin@google.com> 2024-02-08 11:26:47 -0800
commit9155b17d49ec45bd787b3c45de6324278ebe0928 (patch)
tree1c439b29379a3de8c9aa6c649676fb7c440d252e /java/src
parent4e51bb841a3801749ad3ad0eef42bfacaf41a9e3 (diff)
Add new API arguments to ChooserRequest
Bug: 302691505 Test: atest IntentResolver-tests-unit Change-Id: I8f7122649f07a56a67df3db513fe73f5870e3eb6
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/intentresolver/v2/ui/model/ChooserRequest.kt8
-rw-r--r--java/src/com/android/intentresolver/v2/ui/viewmodel/ChooserRequestReader.kt23
2 files changed, 29 insertions, 2 deletions
diff --git a/java/src/com/android/intentresolver/v2/ui/model/ChooserRequest.kt b/java/src/com/android/intentresolver/v2/ui/model/ChooserRequest.kt
index d41d0874..5c785675 100644
--- a/java/src/com/android/intentresolver/v2/ui/model/ChooserRequest.kt
+++ b/java/src/com/android/intentresolver/v2/ui/model/ChooserRequest.kt
@@ -162,7 +162,13 @@ data class ChooserRequest(
* query for matching shortcuts. Specifically, only the [dataTypes][IntentFilter.hasDataType]
* are considered for matching share shortcuts currently.
*/
- val shareTargetFilter: IntentFilter? = null
+ val shareTargetFilter: IntentFilter? = null,
+
+ /** A URI for additional content */
+ val additionalContentUri: Uri? = null,
+
+ /** Focused item index (from target intent's STREAM_EXTRA) */
+ val focusedItemPosition: Int = 0,
) {
val referrerPackage = referrer?.takeIf { it.scheme == ANDROID_APP_SCHEME }?.authority
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 45e2ea64..167c441f 100644
--- a/java/src/com/android/intentresolver/v2/ui/viewmodel/ChooserRequestReader.kt
+++ b/java/src/com/android/intentresolver/v2/ui/viewmodel/ChooserRequestReader.kt
@@ -36,9 +36,11 @@ import android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK
import android.content.Intent.FLAG_ACTIVITY_NEW_DOCUMENT
import android.content.IntentFilter
import android.content.IntentSender
+import android.net.Uri
import android.os.Bundle
import android.service.chooser.ChooserAction
import android.service.chooser.ChooserTarget
+import android.service.chooser.Flags
import com.android.intentresolver.ChooserActivity
import com.android.intentresolver.R
import com.android.intentresolver.util.hasValidIcon
@@ -55,6 +57,13 @@ import com.android.intentresolver.v2.validation.validateFrom
private const val MAX_CHOOSER_ACTIONS = 5
private const val MAX_INITIAL_INTENTS = 2
+// TODO: replace with the new API constant, Intent#EXTRA_CHOOSER_ADDITIONAL_CONTENT_URI
+private const val EXTRA_CHOOSER_ADDITIONAL_CONTENT_URI =
+ "android.intent.extra.CHOOSER_ADDITIONAL_CONTENT_URI"
+// TODO: replace with the new API constant, Intent#EXTRA_CHOOSER_FOCUSED_ITEM_POSITION
+private const val EXTRA_CHOOSER_FOCUSED_ITEM_POSITION =
+ "android.intent.extra.CHOOSER_FOCUSED_ITEM_POSITION"
+
private fun Intent.hasSendAction() = hasAction(ACTION_SEND, ACTION_SEND_MULTIPLE)
internal fun Intent.maybeAddSendActionFlags() =
@@ -124,6 +133,16 @@ fun readChooserRequest(launch: ActivityLaunch): ValidationResult<ChooserRequest>
val referrerFillIn = Intent().putExtra(EXTRA_REFERRER, launch.referrer)
+ val additionalContentUri: Uri?
+ val focusedItemPos: Int
+ if (isSendAction && Flags.chooserPayloadToggling()) {
+ additionalContentUri = optional(value<Uri>(EXTRA_CHOOSER_ADDITIONAL_CONTENT_URI))
+ focusedItemPos = optional(value<Int>(EXTRA_CHOOSER_FOCUSED_ITEM_POSITION)) ?: 0
+ } else {
+ additionalContentUri = null
+ focusedItemPos = 0
+ }
+
ChooserRequest(
targetIntent = targetIntent,
targetAction = targetIntent.action,
@@ -147,7 +166,9 @@ fun readChooserRequest(launch: ActivityLaunch): ValidationResult<ChooserRequest>
chosenComponentSender = chosenComponentSender,
refinementIntentSender = refinementIntentSender,
sharedText = sharedText,
- shareTargetFilter = targetIntent.toShareTargetFilter()
+ shareTargetFilter = targetIntent.toShareTargetFilter(),
+ additionalContentUri = additionalContentUri,
+ focusedItemPosition = focusedItemPos,
)
}
}