Merge "Reset scroll position when account filter is changed"
diff --git a/src/com/android/contacts/ContactsDrawerActivity.java b/src/com/android/contacts/ContactsDrawerActivity.java
index 81c7252..5f0dc2b 100644
--- a/src/com/android/contacts/ContactsDrawerActivity.java
+++ b/src/com/android/contacts/ContactsDrawerActivity.java
@@ -285,7 +285,8 @@
                         mToggle.runWhenIdle(new Runnable() {
                             @Override
                             public void run() {
-                                onGroupMenuItemClicked(groupListItem.getGroupId());
+                                onGroupMenuItemClicked(groupListItem.getGroupId(),
+                                        groupListItem.getTitle());
                             }
                         });
                         mDrawer.closeDrawer(GravityCompat.START);
@@ -340,8 +341,8 @@
         return null;
     }
 
-    protected void onGroupMenuItemClicked(long groupId) {
-        startActivity(GroupUtil.createViewGroupIntent(this, groupId));
+    protected void onGroupMenuItemClicked(long groupId, String title) {
+        startActivity(GroupUtil.createViewGroupIntent(this, groupId, title));
         if (shouldFinish()) {
             finish();
         }
diff --git a/src/com/android/contacts/activities/GroupMembersActivity.java b/src/com/android/contacts/activities/GroupMembersActivity.java
index 1511849..a525460 100644
--- a/src/com/android/contacts/activities/GroupMembersActivity.java
+++ b/src/com/android/contacts/activities/GroupMembersActivity.java
@@ -48,6 +48,7 @@
 import com.android.contacts.group.GroupMembersFragment;
 import com.android.contacts.group.GroupMetadata;
 import com.android.contacts.group.GroupNameEditDialogFragment;
+import com.android.contacts.group.GroupUtil;
 import com.android.contacts.interactions.GroupDeletionDialogFragment;
 import com.android.contacts.list.ContactsRequest;
 import com.android.contacts.list.MultiSelectContactsListFragment;
@@ -218,7 +219,7 @@
 
         // Avoid showing default "Contacts" title before group metadata is loaded. The title will
         // be changed to group name when onGroupMetadataLoaded() is called.
-        setActionBarTitle("");
+        setActionBarTitle(getIntent().getStringExtra(GroupUtil.EXTRA_GROUP_NAME));
 
         // Decide whether to prompt for the account and group name or start loading existing members
         if (mIsInsertAction) {
@@ -356,9 +357,9 @@
     }
 
     @Override
-    protected void onGroupMenuItemClicked(long groupId) {
+    protected void onGroupMenuItemClicked(long groupId, String title) {
         if (mGroupMetadata.groupId != groupId) {
-            super.onGroupMenuItemClicked(groupId);
+            super.onGroupMenuItemClicked(groupId, title);
         }
     }
 
diff --git a/src/com/android/contacts/editor/EditorUiUtils.java b/src/com/android/contacts/editor/EditorUiUtils.java
index 844ac45..0a5c765 100644
--- a/src/com/android/contacts/editor/EditorUiUtils.java
+++ b/src/com/android/contacts/editor/EditorUiUtils.java
@@ -137,28 +137,25 @@
     public static Pair<String,String> getAccountInfo(Context context, String accountName,
             AccountType accountType) {
         CharSequence accountTypeDisplayLabel = accountType.getDisplayLabel(context);
-        if (TextUtils.isEmpty(accountTypeDisplayLabel)) {
+        if (TextUtils.isEmpty(accountTypeDisplayLabel)
+                || TextUtils.equals(
+                        context.getString(R.string.account_phone), accountTypeDisplayLabel)) {
             accountTypeDisplayLabel = context.getString(R.string.account_phone);
+        } else if (GoogleAccountType.ACCOUNT_TYPE.equals(accountType.accountType)
+                && accountType.dataSet == null){
+            accountTypeDisplayLabel = context.getString(R.string.google_account_type_format,
+                    accountTypeDisplayLabel);
+        } else {
+            accountTypeDisplayLabel = context.getString(R.string.account_type_format,
+                    accountTypeDisplayLabel);
         }
 
         if (TextUtils.isEmpty(accountName)) {
-            return new Pair<>(
-                    /* accountName =*/ null,
-                    context.getString(R.string.account_type_format, accountTypeDisplayLabel));
+            return new Pair<>(/* accountName */ null, accountTypeDisplayLabel.toString());
         }
 
-        final String accountNameDisplayLabel =
-                context.getString(R.string.from_account_format, accountName);
-
-        if (GoogleAccountType.ACCOUNT_TYPE.equals(accountType.accountType)
-                && accountType.dataSet == null) {
-            return new Pair<>(
-                    accountNameDisplayLabel,
-                    context.getString(R.string.google_account_type_format, accountTypeDisplayLabel));
-        }
-        return new Pair<>(
-                accountNameDisplayLabel,
-                context.getString(R.string.account_type_format, accountTypeDisplayLabel));
+        return new Pair<>(context.getString(R.string.from_account_format, accountName),
+                accountTypeDisplayLabel.toString());
     }
 
     /**
diff --git a/src/com/android/contacts/group/GroupUtil.java b/src/com/android/contacts/group/GroupUtil.java
index e716fc7..a031106 100644
--- a/src/com/android/contacts/group/GroupUtil.java
+++ b/src/com/android/contacts/group/GroupUtil.java
@@ -53,6 +53,8 @@
     private static final Set<String> FFC_GROUPS =
             new HashSet(Arrays.asList("Friends", "Family", "Coworkers"));
 
+    public static final String EXTRA_GROUP_NAME = "groupName";
+
     private GroupUtil() {
     }
 
@@ -118,10 +120,11 @@
     }
 
     /** Returns an Intent to view the details of the group identified by the given ID. */
-    public static Intent createViewGroupIntent(Context context, long groupId) {
+    public static Intent createViewGroupIntent(Context context, long groupId, String title) {
         final Intent intent = new Intent(context, GroupMembersActivity.class);
         intent.setAction(Intent.ACTION_VIEW);
         intent.setData(ContentUris.withAppendedId(Groups.CONTENT_URI, groupId));
+        intent.putExtra(EXTRA_GROUP_NAME, title);
         return intent;
     }
 
diff --git a/tests/src/com/android/contacts/editor/EditorUiUtilsTest.java b/tests/src/com/android/contacts/editor/EditorUiUtilsTest.java
index 1fb5cb7..19f28d3 100644
--- a/tests/src/com/android/contacts/editor/EditorUiUtilsTest.java
+++ b/tests/src/com/android/contacts/editor/EditorUiUtilsTest.java
@@ -119,10 +119,7 @@
         assertNotNull(pair);
         assertEquals(getContext().getString(R.string.from_account_format, ACCOUNT_NAME),
                 pair.first); // somebody@lunkedin.com
-        assertEquals(
-                getContext().getString(R.string.account_type_format,
-                        getContext().getString(R.string.account_phone)),
-                pair.second); // "Phone-only, unsynced contact"
+        assertEquals(getContext().getString(R.string.account_phone), pair.second); // Device
     }
 
     public void testGetAccountInfo_NoAccountName_DisplayLabel() {
@@ -133,6 +130,14 @@
         assertNull(pair.first);
         assertEquals(getContext().getString(R.string.account_type_format, DISPLAY_LABEL),
                 pair.second); // LunkedIn contact
+
+        final Pair pairDevice = EditorUiUtils.getAccountInfo(
+                getContext(),
+                /* accountName =*/ null,
+                new MockAccountType(getContext().getString(R.string.account_phone)));
+        assertNotNull(pairDevice);
+        assertNull(pairDevice.first);
+        assertEquals(getContext().getString(R.string.account_phone), pairDevice.second); // Device
     }
 
     public void testGetAccountInfo_NoAccountName_NoDisplayLabel() {
@@ -141,10 +146,7 @@
 
         assertNotNull(pair);
         assertNull(pair.first);
-        assertEquals(
-                getContext().getString(R.string.account_type_format,
-                        getContext().getString(R.string.account_phone)),
-                pair.second); // "Phone-only, unsynced contact"
+        assertEquals(getContext().getString(R.string.account_phone), pair.second); // Device
     }
 
     public void testGetRingtongStrFromUri_lessThanOrEqualsToM() {