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) {