Fix re-parenting for modifications to the profile.

Bug 5274218

Change-Id: Icbeed88032dcdab643aaa85216fb4363473cc80b
diff --git a/src/com/android/contacts/ContactSaveService.java b/src/com/android/contacts/ContactSaveService.java
index 78c4b18..2df2e47 100644
--- a/src/com/android/contacts/ContactSaveService.java
+++ b/src/com/android/contacts/ContactSaveService.java
@@ -18,6 +18,7 @@
 
 import com.android.contacts.model.AccountTypeManager;
 import com.android.contacts.model.AccountWithDataSet;
+import com.android.contacts.model.EntityDelta;
 import com.android.contacts.model.EntityDeltaList;
 import com.android.contacts.model.EntityModifier;
 import com.google.android.collect.Lists;
@@ -48,6 +49,7 @@
 import android.provider.ContactsContract.Groups;
 import android.provider.ContactsContract.Profile;
 import android.provider.ContactsContract.RawContacts;
+import android.provider.ContactsContract.RawContactsEntity;
 import android.util.Log;
 import android.widget.Toast;
 
@@ -355,9 +357,19 @@
                     throw new IllegalStateException("Version consistency failed for a new contact");
                 }
 
-                final EntityDeltaList newState = EntityDeltaList.fromQuery(resolver,
-                        sb.toString(), null, null);
+                final EntityDeltaList newState = EntityDeltaList.fromQuery(
+                        isProfile
+                                ? RawContactsEntity.PROFILE_CONTENT_URI
+                                : RawContactsEntity.CONTENT_URI,
+                        resolver, sb.toString(), null, null);
                 state = EntityDeltaList.mergeAfter(newState, state);
+
+                // Update the new state to use profile URIs if appropriate.
+                if (isProfile) {
+                    for (EntityDelta delta : state) {
+                        delta.setProfileQueryUri();
+                    }
+                }
             }
         }