From cf71ac0e1ba5b4ac3e11183c9a016439bf539b70 Mon Sep 17 00:00:00 2001 From: Andrey Epin Date: Wed, 15 Nov 2023 15:27:11 -0800 Subject: MultiDisplayResolveItem to return a selected resolved component name. Fix: 309169275 Test: atest com.android.intentresolver.chooser.TargetInfoTest Test: confirm the correct behavior with an injected debug logging Change-Id: Idce3fedb3fbed130132b985479152f8f7e641dae --- .../intentresolver/chooser/MultiDisplayResolveInfo.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'java/src') diff --git a/java/src/com/android/intentresolver/chooser/MultiDisplayResolveInfo.java b/java/src/com/android/intentresolver/chooser/MultiDisplayResolveInfo.java index b97e6b45..4fe28384 100644 --- a/java/src/com/android/intentresolver/chooser/MultiDisplayResolveInfo.java +++ b/java/src/com/android/intentresolver/chooser/MultiDisplayResolveInfo.java @@ -17,9 +17,11 @@ package com.android.intentresolver.chooser; import android.app.Activity; +import android.content.ComponentName; import android.content.Intent; import android.os.Bundle; import android.os.UserHandle; +import android.util.Log; import androidx.annotation.Nullable; @@ -120,6 +122,19 @@ public class MultiDisplayResolveInfo extends DisplayResolveInfo { return mTargetInfos.get(mSelected).startAsCaller(activity, options, userId); } + @Override + public ComponentName getResolvedComponentName() { + if (hasSelected()) { + return mTargetInfos.get(mSelected).getResolvedComponentName(); + } + // It is not expected to have this method be called on an unselected multi-display item. + // Call super to preserve the legacy (most likely erroneous) behavior. + Log.wtf( + "ChooserActivity", + "retrieving ResolvedComponentName from an unselected MultiDisplayResolveInfo"); + return super.getResolvedComponentName(); + } + @Override public boolean startAsUser(Activity activity, Bundle options, UserHandle user) { return mTargetInfos.get(mSelected).startAsUser(activity, options, user); -- cgit v1.2.3-59-g8ed1b