Fix title when account screen is opened from group.

The activity title would remain as the group title if an account was selected
from the nav drawer while viewing a group.

Test
Manual:
* view a group
* switch to an account
* verify that title is correct

Bug 32223767

Change-Id: I2bbb8887db26d26174daf2ae089f29a87c38ccc1
diff --git a/src/com/android/contacts/ContactsDrawerActivity.java b/src/com/android/contacts/ContactsDrawerActivity.java
index caaa326..497295d 100644
--- a/src/com/android/contacts/ContactsDrawerActivity.java
+++ b/src/com/android/contacts/ContactsDrawerActivity.java
@@ -420,8 +420,7 @@
                         mToggle.runWhenIdle(new Runnable() {
                             @Override
                             public void run() {
-                                onGroupMenuItemClicked(groupListItem.getGroupId(),
-                                        groupListItem.getTitle());
+                                onGroupMenuItemClicked(groupListItem);
                                 updateMenuSelection(menuItem);
                             }
                         });
@@ -492,7 +491,7 @@
         return isGroupView() || isAssistantView();
     }
 
-    protected abstract void onGroupMenuItemClicked(long groupId, String title);
+    protected abstract void onGroupMenuItemClicked(GroupListItem group);
 
     protected void onCreateGroupMenuItemClicked() {
         // Select the account to create the group
@@ -587,6 +586,7 @@
     }
 
     protected void onFilterMenuItemClicked(Intent intent) {
+        resetFilter();
         AccountFilterUtil.handleAccountFilterResult(mContactListFilterController,
                 AppCompatActivity.RESULT_OK, intent);
     }
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index cefbe1f..81e6af0 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -22,7 +22,6 @@
 import android.app.FragmentTransaction;
 import android.content.BroadcastReceiver;
 import android.content.ContentResolver;
-import android.content.ContentUris;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
@@ -30,7 +29,6 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
-import android.provider.ContactsContract;
 import android.provider.ContactsContract.ProviderStatus;
 import android.support.design.widget.CoordinatorLayout;
 import android.support.design.widget.Snackbar;
@@ -67,6 +65,7 @@
 import com.android.contacts.common.util.Constants;
 import com.android.contacts.common.util.ImplicitIntentsUtil;
 import com.android.contacts.common.widget.FloatingActionButtonController;
+import com.android.contacts.group.GroupListItem;
 import com.android.contacts.group.GroupMembersFragment;
 import com.android.contacts.group.GroupMetaData;
 import com.android.contacts.group.GroupUtil;
@@ -745,12 +744,18 @@
     }
 
     @Override
-    protected void onGroupMenuItemClicked(long groupId, String title) {
+    protected void onGroupMenuItemClicked(GroupListItem group) {
         if (isGroupView() && mMembersFragment != null
-                && mMembersFragment.isCurrentGroup(groupId)) {
+                && mMembersFragment.isCurrentGroup(group.getGroupId())) {
             return;
         }
-        mGroupUri = ContentUris.withAppendedId(ContactsContract.Groups.CONTENT_URI, groupId);
+        mGroupUri = group.getUri();
+        // Set the filter. This isn't used by the GroupMembersFragment but makes sure that the
+        // filter will change when switching to a different view from the GroupMembersFragment.
+        mContactListFilterController.setContactListFilter(
+                ContactListFilter.createGroupMembersFilter(group.getAccountName(),
+                        group.getAccountType(), group.getDataSet()), /* persistent */ false,
+                /* notifyListeners */ false);
         switchToOrUpdateGroupView(GroupUtil.ACTION_SWITCH_GROUP);
     }
 
diff --git a/src/com/android/contacts/common/list/ContactListFilterController.java b/src/com/android/contacts/common/list/ContactListFilterController.java
index 4d3d6ad..36e740f 100644
--- a/src/com/android/contacts/common/list/ContactListFilterController.java
+++ b/src/com/android/contacts/common/list/ContactListFilterController.java
@@ -71,6 +71,9 @@
      */
     public abstract void setContactListFilter(ContactListFilter filter, boolean persistent);
 
+    public abstract void setContactListFilter(ContactListFilter filter, boolean persistent,
+            boolean notifyListeners);
+
     public abstract void selectCustomFilter();
 
     /**
@@ -139,7 +142,8 @@
         setContactListFilter(filter, persistent, /* notifyListeners */ true);
     }
 
-    private void setContactListFilter(ContactListFilter filter, boolean persistent,
+    @Override
+    public void setContactListFilter(ContactListFilter filter, boolean persistent,
             boolean notifyListeners) {
         if (!filter.equals(mFilter)) {
             mFilter = filter;
diff --git a/src/com/android/contacts/group/GroupListItem.java b/src/com/android/contacts/group/GroupListItem.java
index f2359b6..2906821 100644
--- a/src/com/android/contacts/group/GroupListItem.java
+++ b/src/com/android/contacts/group/GroupListItem.java
@@ -15,6 +15,10 @@
  */
 package com.android.contacts.group;
 
+import android.content.ContentUris;
+import android.net.Uri;
+import android.provider.ContactsContract;
+
 /**
  * Meta-data for a contact group.  We load all groups associated with the contact's
  * constituent accounts.
@@ -83,4 +87,8 @@
     public String getSystemId() {
         return mSystemId;
     }
+
+    public Uri getUri() {
+        return ContentUris.withAppendedId(ContactsContract.Groups.CONTENT_URI, mGroupId);
+    }
 }
\ No newline at end of file