diff options
| author | 2023-02-02 11:37:21 -0800 | |
|---|---|---|
| committer | 2023-02-03 16:44:25 -0800 | |
| commit | 651ea96e4e069309cf3d1c5f518388e1410d5172 (patch) | |
| tree | 79d6ee7407baf54ed764b3fe9ecce64f77e925eb /java/src/com | |
| parent | 3d094b80389b2386b9f724217ef593dc64a3ca8b (diff) | |
Add MultiDisplayResolveInfo#cloneFilledIn() implementation.
Fix: 267652812
Test: manual verification of the fix
Change-Id: I1355c64a6226579d4af05c2b259866f782b4e9fe
Diffstat (limited to 'java/src/com')
| -rw-r--r-- | java/src/com/android/intentresolver/chooser/DisplayResolveInfo.java | 4 | ||||
| -rw-r--r-- | java/src/com/android/intentresolver/chooser/MultiDisplayResolveInfo.java | 19 |
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); } |