Merge change I994fc479 into eclair

* changes:
  Send RESULT_CANCELED when missing, return legacy Uris.
diff --git a/src/com/android/contacts/ui/EditContactActivity.java b/src/com/android/contacts/ui/EditContactActivity.java
index 94b8020..914a2e8 100644
--- a/src/com/android/contacts/ui/EditContactActivity.java
+++ b/src/com/android/contacts/ui/EditContactActivity.java
@@ -720,10 +720,28 @@
     private void onSaveCompleted(boolean success, int saveMode, Uri contactLookupUri) {
         switch (saveMode) {
             case SAVE_MODE_DEFAULT:
-                if (success) {
-                    Intent intent = new Intent();
-                    intent.setData(contactLookupUri);
-                    setResult(RESULT_OK, intent);
+                if (success && contactLookupUri != null) {
+                    final Intent resultIntent = new Intent();
+
+                    final Uri requestData = getIntent().getData();
+                    final String requestAuthority = requestData == null ? null : requestData
+                            .getAuthority();
+
+                    if (android.provider.Contacts.AUTHORITY.equals(requestAuthority)) {
+                        // Build legacy Uri when requested by caller
+                        final long contactId = ContentUris.parseId(Contacts.lookupContact(
+                                getContentResolver(), contactLookupUri));
+                        final Uri legacyUri = ContentUris.withAppendedId(
+                                android.provider.Contacts.People.CONTENT_URI, contactId);
+                        resultIntent.setData(legacyUri);
+                    } else {
+                        // Otherwise pass back a lookup-style Uri
+                        resultIntent.setData(contactLookupUri);
+                    }
+
+                    setResult(RESULT_OK, resultIntent);
+                } else {
+                    setResult(RESULT_CANCELED, null);
                 }
                 finish();
                 break;