summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/src/com/android/intentresolver/chooser/DisplayResolveInfo.java4
-rw-r--r--java/src/com/android/intentresolver/chooser/MultiDisplayResolveInfo.java19
-rw-r--r--java/tests/src/com/android/intentresolver/chooser/TargetInfoTest.kt5
3 files changed, 25 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);
}
diff --git a/java/tests/src/com/android/intentresolver/chooser/TargetInfoTest.kt b/java/tests/src/com/android/intentresolver/chooser/TargetInfoTest.kt
index 7c2b07a9..69948cc9 100644
--- a/java/tests/src/com/android/intentresolver/chooser/TargetInfoTest.kt
+++ b/java/tests/src/com/android/intentresolver/chooser/TargetInfoTest.kt
@@ -186,6 +186,11 @@ class TargetInfoTest {
assertThat(multiTargetInfo.hasSelected()).isTrue()
assertThat(multiTargetInfo.getSelectedTarget()).isEqualTo(secondTargetInfo)
+ val multiTargetInfoClone = multiTargetInfo.cloneFilledIn(Intent(), 0)
+ assertThat(multiTargetInfoClone).isInstanceOf(MultiDisplayResolveInfo::class.java)
+ assertThat((multiTargetInfoClone as MultiDisplayResolveInfo).hasSelected())
+ .isEqualTo(multiTargetInfo.hasSelected())
+
// TODO: consider exercising activity-start behavior.
// TODO: consider exercising DisplayResolveInfo base class behavior.
}