Hook up link duplicates button

Bug: 27796451
Change-Id: I73b68e439eb5e8c3c7c030605a651e5e51c286af
diff --git a/src/com/android/contacts/interactions/JoinContactsDialogFragment.java b/src/com/android/contacts/interactions/JoinContactsDialogFragment.java
index 205e18e..37ced3f 100644
--- a/src/com/android/contacts/interactions/JoinContactsDialogFragment.java
+++ b/src/com/android/contacts/interactions/JoinContactsDialogFragment.java
@@ -36,7 +36,9 @@
  */
 public class JoinContactsDialogFragment extends DialogFragment {
 
-    private static final String FRAGMENT_TAG = "joinDialog";
+    public static final String FRAGMENT_TAG = "joinDialog";
+    public static final String KEY_POSITION = "position";
+
     private static final String KEY_CONTACT_IDS = "contactIds";
 
     public interface JoinContactsListener {
@@ -50,10 +52,22 @@
         newFragment.show(ft, FRAGMENT_TAG);
     }
 
-    private static JoinContactsDialogFragment newInstance(TreeSet<Long> contactIds) {
+    public static JoinContactsDialogFragment newInstance(TreeSet<Long> contactIds) {
+        return newInstance(contactIds, -1);
+    }
+
+    /**
+     * Creates a new instance of {@link JoinContactsDialogFragment} with passed in arguments.
+     * 
+     * Position parameter is passed back to target fragment if this instance of the join dialog
+     * was launched from a list fragment that needs to know which item position in the list
+     * the dialog was launched from.
+     */
+    public static JoinContactsDialogFragment newInstance(TreeSet<Long> contactIds, int position) {
         final JoinContactsDialogFragment fragment = new JoinContactsDialogFragment();
         Bundle arguments = new Bundle();
         arguments.putSerializable(KEY_CONTACT_IDS, contactIds);
+        arguments.putInt(KEY_POSITION, position);
         fragment.setArguments(arguments);
         return fragment;
     }
@@ -101,6 +115,11 @@
     private void notifyListener() {
         if (getActivity() instanceof JoinContactsListener) {
             ((JoinContactsListener) getActivity()).onContactsJoined();
+        } else if (getTargetFragment() != null) {
+            final Intent intent = new Intent()
+                    .putExtra(KEY_POSITION, getArguments().getInt(KEY_POSITION));
+            getTargetFragment().onActivityResult(getTargetRequestCode(),
+                    Activity.RESULT_OK, intent);
         }
     }