Merge "Fix NPE in onHandleIntent" into lmp-mr1-dev
diff --git a/res/layout/contact_editor_accounts_changed_activity_with_text.xml b/res/layout/contact_editor_accounts_changed_activity_with_text.xml
index 33714ea..f608f84 100644
--- a/res/layout/contact_editor_accounts_changed_activity_with_text.xml
+++ b/res/layout/contact_editor_accounts_changed_activity_with_text.xml
@@ -39,6 +39,8 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="horizontal"
+        android:measureWithLargestChild="true"
+        android:baselineAligned="false"
         style="?android:attr/buttonBarStyle">
 
         <Button
diff --git a/src/com/android/contacts/activities/ActionBarAdapter.java b/src/com/android/contacts/activities/ActionBarAdapter.java
index 634f9ad..4b9e83f 100644
--- a/src/com/android/contacts/activities/ActionBarAdapter.java
+++ b/src/com/android/contacts/activities/ActionBarAdapter.java
@@ -30,7 +30,6 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.inputmethod.InputMethodManager;
-import android.widget.SearchView;
 import android.widget.SearchView.OnCloseListener;
 import android.view.View.OnClickListener;
 import android.widget.EditText;
@@ -253,7 +252,11 @@
                 return;
             }
             if (mSearchMode) {
+                mSearchView.setEnabled(true);
                 setFocusOnSearchView();
+            } else {
+                // Disable search view, so that it doesn't keep the IME visible.
+                mSearchView.setEnabled(false);
             }
             setQueryString(null);
         } else if (flag) {
@@ -399,18 +402,6 @@
         outState.putInt(EXTRA_KEY_SELECTED_TAB, mCurrentTab);
     }
 
-    /**
-     * Clears the focus from the {@link SearchView} if we are in search mode.
-     * This will suppress the IME if it is visible.
-     */
-    public void clearFocusOnSearchView() {
-        if (isSearchMode()) {
-            if (mSearchView != null) {
-                mSearchView.clearFocus();
-            }
-        }
-    }
-
     public void setFocusOnSearchView() {
         mSearchView.requestFocus();
         showInputMethod(mSearchView); // Workaround for the "IME not popping up" issue.
diff --git a/src/com/android/contacts/activities/ContactEditorActivity.java b/src/com/android/contacts/activities/ContactEditorActivity.java
index 5f382a7..c350da9 100644
--- a/src/com/android/contacts/activities/ContactEditorActivity.java
+++ b/src/com/android/contacts/activities/ContactEditorActivity.java
@@ -95,31 +95,15 @@
 
         ActionBar actionBar = getActionBar();
         if (actionBar != null) {
-            // Inflate a custom action bar that contains the "done" button for saving changes
-            // to the contact
-            LayoutInflater inflater = (LayoutInflater) getSystemService
-                    (Context.LAYOUT_INFLATER_SERVICE);
-            View customActionBarView = inflater.inflate(R.layout.editor_custom_action_bar, null);
-            View saveMenuItem = customActionBarView.findViewById(R.id.save_menu_item);
-            saveMenuItem.setOnClickListener(new OnClickListener() {
-                @Override
-                public void onClick(View v) {
-                    mFragment.doSaveAction();
-                }
-            });
-            TextView title = (TextView) customActionBarView.findViewById(R.id.title);
             if (Intent.ACTION_EDIT.equals(action)) {
-                title.setText(getResources().getString(
+                actionBar.setTitle(getResources().getString(
                         R.string.contact_editor_title_existing_contact));
             } else {
-                title.setText(getResources().getString(
+                actionBar.setTitle(getResources().getString(
                         R.string.contact_editor_title_new_contact));
             }
-            // Show the custom action bar but hide the home icon and title
-            actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
-                    ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME |
-                    ActionBar.DISPLAY_SHOW_TITLE);
-            actionBar.setCustomView(customActionBarView);
+            actionBar.setDisplayShowHomeEnabled(true);
+            actionBar.setDisplayHomeAsUpEnabled(true);
         }
 
         mFragment = (ContactEditorFragment) getFragmentManager().findFragmentById(
diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java
index a5057d3..4ff6b9e 100644
--- a/src/com/android/contacts/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorFragment.java
@@ -1125,6 +1125,7 @@
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
+            case android.R.id.home:
             case R.id.menu_done:
                 return save(SaveMode.CLOSE);
             case R.id.menu_discard:
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 849bae3..277d1bf 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -2224,6 +2224,9 @@
     }
 
     private boolean isShortcutCreatable() {
+        if (mContactData == null || mContactData.isUserProfile()) {
+            return false;
+        }
         final Intent createShortcutIntent = new Intent();
         createShortcutIntent.setAction(ACTION_INSTALL_SHORTCUT);
         final List<ResolveInfo> receivers = getPackageManager()