Deprecating ConfirmAddDetail dialog to use full contact editor.

Bug:22851692
Bug:26754145
Change-Id: Ic8bf321a27f5e43ffb68146690d421375a6f9e33
diff --git a/src/com/android/contacts/activities/ContactSelectionActivity.java b/src/com/android/contacts/activities/ContactSelectionActivity.java
index 33c3f38..4235fe0 100644
--- a/src/com/android/contacts/activities/ContactSelectionActivity.java
+++ b/src/com/android/contacts/activities/ContactSelectionActivity.java
@@ -16,7 +16,6 @@
 
 package com.android.contacts.activities;
 
-import android.app.Activity;
 import android.app.Fragment;
 import android.content.ActivityNotFoundException;
 import android.content.Context;
@@ -46,7 +45,6 @@
 import com.android.contacts.R;
 import com.android.contacts.common.activity.RequestPermissionsActivity;
 import com.android.contacts.common.list.ContactEntryListFragment;
-import com.android.contacts.common.util.ImplicitIntentsUtil;
 import com.android.contacts.editor.EditorIntents;
 import com.android.contacts.list.ContactPickerFragment;
 import com.android.contacts.list.ContactsIntentResolver;
@@ -62,7 +60,6 @@
 import com.android.contacts.list.OnPostalAddressPickerActionListener;
 import com.android.contacts.common.list.PhoneNumberPickerFragment;
 import com.android.contacts.list.PostalAddressPickerFragment;
-import com.google.common.collect.Sets;
 
 import java.util.Set;
 
@@ -75,8 +72,6 @@
                 OnCloseListener, OnFocusChangeListener {
     private static final String TAG = "ContactSelectionActivity";
 
-    private static final int SUBACTIVITY_ADD_TO_EXISTING_CONTACT = 0;
-
     private static final String KEY_ACTION_CODE = "actionCode";
     private static final String KEY_SEARCH_MODE = "searchMode";
     private static final int DEFAULT_DIRECTORY_RESULT_LIMIT = 20;
@@ -406,29 +401,8 @@
 
         @Override
         public void onEditContactAction(Uri contactLookupUri) {
-            Bundle extras = getIntent().getExtras();
-            if (launchAddToContactDialog(extras)) {
-                // Show a confirmation dialog to add the value(s) to the existing contact.
-                Intent intent = new Intent(ContactSelectionActivity.this,
-                        ConfirmAddDetailActivity.class);
-                intent.setData(contactLookupUri);
-                if (extras != null) {
-                    // First remove name key if present because the dialog does not support name
-                    // editing. This is fine because the user wants to add information to an
-                    // existing contact, who should already have a name and we wouldn't want to
-                    // override the name.
-                    extras.remove(Insert.NAME);
-                    intent.putExtras(extras);
-                }
-
-                // Wait for the activity result because we want to keep the picker open (in case the
-                // user cancels adding the info to a contact and wants to pick someone else).
-                startActivityForResult(intent, SUBACTIVITY_ADD_TO_EXISTING_CONTACT);
-            } else {
-                // Otherwise launch the full contact editor.
-                startActivityAndForwardResult(EditorIntents.createEditContactIntent(
-                        contactLookupUri, /* materialPalette =*/ null, /* photoId =*/ -1));
-            }
+            startActivityAndForwardResult(EditorIntents.createEditContactIntent(
+                    contactLookupUri, /* materialPalette =*/ null, /* photoId =*/ -1));
         }
 
         @Override
@@ -440,44 +414,6 @@
         public void onShortcutIntentCreated(Intent intent) {
             returnPickerResult(intent);
         }
-
-        /**
-         * Returns true if is a single email or single phone number provided in the {@link Intent}
-         * extras bundle so that a pop-up confirmation dialog can be used to add the data to
-         * a contact. Otherwise return false if there are other intent extras that require launching
-         * the full contact editor. Ignore extras with the key {@link Insert.NAME} because names
-         * are a special case and we typically don't want to replace the name of an existing
-         * contact.
-         */
-        private boolean launchAddToContactDialog(Bundle extras) {
-            if (extras == null) {
-                return false;
-            }
-
-            // Copy extras because the set may be modified in the next step
-            Set<String> intentExtraKeys = Sets.newHashSet();
-            intentExtraKeys.addAll(extras.keySet());
-
-            // Ignore name key because this is an existing contact.
-            if (intentExtraKeys.contains(Insert.NAME)) {
-                intentExtraKeys.remove(Insert.NAME);
-            }
-
-            int numIntentExtraKeys = intentExtraKeys.size();
-            if (numIntentExtraKeys == 2) {
-                boolean hasPhone = intentExtraKeys.contains(Insert.PHONE) &&
-                        intentExtraKeys.contains(Insert.PHONE_TYPE);
-                boolean hasEmail = intentExtraKeys.contains(Insert.EMAIL) &&
-                        intentExtraKeys.contains(Insert.EMAIL_TYPE);
-                return hasPhone || hasEmail;
-            } else if (numIntentExtraKeys == 1) {
-                return intentExtraKeys.contains(Insert.PHONE) ||
-                        intentExtraKeys.contains(Insert.EMAIL);
-            }
-            // Having 0 or more than 2 intent extra keys means that we should launch
-            // the full contact editor to properly handle the intent extras.
-            return false;
-        }
     }
 
     private final class PhoneNumberPickerActionListener implements
@@ -642,19 +578,6 @@
     }
 
     @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-        if (requestCode == SUBACTIVITY_ADD_TO_EXISTING_CONTACT) {
-            if (resultCode == Activity.RESULT_OK) {
-                if (data != null) {
-                    ImplicitIntentsUtil.startActivityInAppIfPossible(this, data);
-                }
-                finish();
-            }
-        }
-    }
-
-    @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         super.onCreateOptionsMenu(menu);
 
diff --git a/src/com/android/contacts/editor/TextFieldsEditorView.java b/src/com/android/contacts/editor/TextFieldsEditorView.java
index 0ec71fb..91b52d8 100644
--- a/src/com/android/contacts/editor/TextFieldsEditorView.java
+++ b/src/com/android/contacts/editor/TextFieldsEditorView.java
@@ -231,7 +231,8 @@
             int inputType = field.inputType;
             fieldView.setInputType(inputType);
             if (inputType == InputType.TYPE_CLASS_PHONE) {
-                PhoneNumberFormatter.setPhoneNumberFormattingTextWatcher(getContext(), fieldView);
+                PhoneNumberFormatter.setPhoneNumberFormattingTextWatcher(
+                        getContext(), fieldView, /* formatAfterWatcherSet =*/ true);
                 fieldView.setTextDirection(View.TEXT_DIRECTION_LTR);
             }
             fieldView.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);