summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
author Andrey Epin <ayepin@google.com> 2023-02-02 11:37:21 -0800
committer Andrey Epin <ayepin@google.com> 2023-02-03 16:44:25 -0800
commit651ea96e4e069309cf3d1c5f518388e1410d5172 (patch)
tree79d6ee7407baf54ed764b3fe9ecce64f77e925eb /java/src
parent3d094b80389b2386b9f724217ef593dc64a3ca8b (diff)
Add MultiDisplayResolveInfo#cloneFilledIn() implementation.
Fix: 267652812 Test: manual verification of the fix Change-Id: I1355c64a6226579d4af05c2b259866f782b4e9fe
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/intentresolver/chooser/DisplayResolveInfo.java4
-rw-r--r--java/src/com/android/intentresolver/chooser/MultiDisplayResolveInfo.java19
2 files changed, 20 insertions, 3 deletions
diff --git a/java/src/com/android/intentresolver/chooser/DisplayResolveInfo.java b/java/src/com/android/intentresolver/chooser/DisplayResolveInfo.java
index db5ae0b4..1b729c0e 100644
--- a/java/src/com/android/intentresolver/chooser/DisplayResolveInfo.java
+++ b/java/src/com/android/intentresolver/chooser/DisplayResolveInfo.java
@@ -169,6 +169,10 @@ public class DisplayResolveInfo implements TargetInfo {
@Override
public TargetInfo cloneFilledIn(Intent fillInIntent, int flags) {
+ return cloneFilledInInternal(fillInIntent, flags);
+ }
+
+ protected final DisplayResolveInfo cloneFilledInInternal(Intent fillInIntent, int flags) {
return new DisplayResolveInfo(this, fillInIntent, flags, mPresentationGetter);
}
diff --git a/java/src/com/android/intentresolver/chooser/MultiDisplayResolveInfo.java b/java/src/com/android/intentresolver/chooser/MultiDisplayResolveInfo.java
index 29f00a35..e4cec887 100644
--- a/java/src/com/android/intentresolver/chooser/MultiDisplayResolveInfo.java
+++ b/java/src/com/android/intentresolver/chooser/MultiDisplayResolveInfo.java
@@ -17,6 +17,7 @@
package com.android.intentresolver.chooser;
import android.app.Activity;
+import android.content.Intent;
import android.os.Bundle;
import android.os.UserHandle;
@@ -30,7 +31,7 @@ import java.util.List;
*/
public class MultiDisplayResolveInfo extends DisplayResolveInfo {
- ArrayList<DisplayResolveInfo> mTargetInfos = new ArrayList<>();
+ final ArrayList<DisplayResolveInfo> mTargetInfos;
// Index of selected target
private int mSelected = -1;
@@ -66,8 +67,9 @@ public class MultiDisplayResolveInfo extends DisplayResolveInfo {
/**
* List of all {@link DisplayResolveInfo}s included in this target.
- * TODO: provide as a generic {@code List<DisplayResolveInfo>} once {@link ChooserActivity}
- * stops requiring the signature to match that of the other "lists" it builds up.
+ * TODO: provide as a generic {@code List<DisplayResolveInfo>} once
+ * {@link com.android.intentresolver.ChooserActivity} stops requiring the signature to match
+ * that of the other "lists" it builds up.
*/
@Override
public ArrayList<DisplayResolveInfo> getAllDisplayTargets() {
@@ -93,6 +95,17 @@ public class MultiDisplayResolveInfo extends DisplayResolveInfo {
}
@Override
+ public TargetInfo cloneFilledIn(Intent fillInIntent, int flags) {
+ ArrayList<DisplayResolveInfo> targetInfos = new ArrayList<>(mTargetInfos.size());
+ for (int i = 0, size = mTargetInfos.size(); i < size; i++) {
+ targetInfos.add(mTargetInfos.get(i).cloneFilledInInternal(fillInIntent, flags));
+ }
+ MultiDisplayResolveInfo clone = new MultiDisplayResolveInfo(targetInfos);
+ clone.mSelected = mSelected;
+ return clone;
+ }
+
+ @Override
public boolean start(Activity activity, Bundle options) {
return mTargetInfos.get(mSelected).start(activity, options);
}