Suppress ShareResult for launch of Editor component
An edit action is reported explicitly as a ShareResult
with type=EDIT.
This change suppresses dispatch of a ShareResult with type
'COMPONENT_SELECTED' type when launching the editor component.
Test: CTS-V
Bug: NONE
Flag: EXEMPT bugfix
Change-Id: Ie13464cba88191dc26d8e5d9758541fd6c75017c
diff --git a/java/src/com/android/intentresolver/ChooserActionFactory.java b/java/src/com/android/intentresolver/ChooserActionFactory.java
index 79998fb..d6153b3 100644
--- a/java/src/com/android/intentresolver/ChooserActionFactory.java
+++ b/java/src/com/android/intentresolver/ChooserActionFactory.java
@@ -88,7 +88,9 @@
// Boolean extra used to inform the editor that it may want to customize the editing experience
// for the sharesheet editing flow.
- private static final String EDIT_SOURCE = "edit_source";
+ // Note: EDIT_SOURCE is also used as a signal to avoid sending a 'Component Selected'
+ // ShareResult for this intent when sent via ChooserActivity#safelyStartActivityAsUser
+ static final String EDIT_SOURCE = "edit_source";
private static final String EDIT_SOURCE_SHARESHEET = "sharesheet";
private static final String CHIP_LABEL_METADATA_KEY = "android.service.chooser.chip_label";
diff --git a/java/src/com/android/intentresolver/ChooserActivity.java b/java/src/com/android/intentresolver/ChooserActivity.java
index 9643b9f..6681018 100644
--- a/java/src/com/android/intentresolver/ChooserActivity.java
+++ b/java/src/com/android/intentresolver/ChooserActivity.java
@@ -22,6 +22,7 @@
import static androidx.lifecycle.LifecycleKt.getCoroutineScope;
+import static com.android.intentresolver.ChooserActionFactory.EDIT_SOURCE;
import static com.android.intentresolver.ext.CreationExtrasExtKt.addDefaultArgs;
import static com.android.intentresolver.profiles.MultiProfilePagerAdapter.PROFILE_PERSONAL;
import static com.android.intentresolver.profiles.MultiProfilePagerAdapter.PROFILE_WORK;
@@ -1079,7 +1080,10 @@
}
try {
if (cti.startAsCaller(this, options, user.getIdentifier())) {
- maybeSendShareResult(cti);
+ // Prevent sending a second chooser result when starting the edit action intent.
+ if (!cti.getTargetIntent().hasExtra(EDIT_SOURCE)) {
+ maybeSendShareResult(cti);
+ }
maybeLogCrossProfileTargetLaunch(cti, user);
}
} catch (RuntimeException e) {