Set action bar title in fragment rather than PeopleActivity

Bug: 31920908
Bug: 30944495

Test: manual - follow steps to repro in the bug and navigate b/w
               fragments (tested all acounts incl. Device).

Change-Id: I085628bd98685f9d1f07cf3c526d36b4127f5376
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 3488c53..2674d5c 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -845,16 +845,7 @@
             mShouldSwitchToAllContacts = true;
         }
 
-        // Set title and check menu in navigation drawer.
-        final String actionBarTitle;
-        if (filter.filterType == ContactListFilter.FILTER_TYPE_DEVICE_CONTACTS) {
-            actionBarTitle = getString(R.string.account_phone);
-        } else if (!TextUtils.isEmpty(filter.accountName)) {
-            actionBarTitle = getActionBarTitleForAccount(filter);
-        } else {
-            actionBarTitle = getString(R.string.contactsList);
-        }
-        setTitle(actionBarTitle);
+        // Check menu in navigation drawer.
         updateFilterMenu(filter);
 
         if (CompatUtils.isNCompatible()) {
@@ -863,15 +854,4 @@
         }
         invalidateOptionsMenu();
     }
-
-    private String getActionBarTitleForAccount(ContactListFilter filter) {
-        final AccountDisplayInfoFactory factory = AccountDisplayInfoFactory
-                .forAllAccounts(this);
-        final AccountDisplayInfo account = factory.getAccountDisplayInfoFor(filter);
-        if (account.hasGoogleAccountType()) {
-            return getString(R.string.title_from_google);
-        }
-        return account.withFormattedName(this, R.string.title_from_other_accounts)
-                .getNameLabel().toString();
-    }
 }
diff --git a/src/com/android/contacts/common/util/AccountFilterUtil.java b/src/com/android/contacts/common/util/AccountFilterUtil.java
index 655ebaf..b89e8b9 100644
--- a/src/com/android/contacts/common/util/AccountFilterUtil.java
+++ b/src/com/android/contacts/common/util/AccountFilterUtil.java
@@ -26,6 +26,7 @@
 import android.graphics.drawable.Drawable;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Intents;
+import android.text.TextUtils;
 import android.util.Log;
 import android.widget.Toast;
 
@@ -35,6 +36,8 @@
 import com.android.contacts.common.list.ContactListFilter;
 import com.android.contacts.common.list.ContactListFilterController;
 import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountDisplayInfo;
+import com.android.contacts.common.model.account.AccountDisplayInfoFactory;
 import com.android.contacts.common.model.account.AccountType;
 import com.android.contacts.common.model.account.AccountWithDataSet;
 import com.android.contacts.common.preference.ContactsPreferences;
@@ -209,4 +212,27 @@
     public static boolean isDeviceContactsFilter(ContactListFilter filter) {
         return filter.filterType == ContactListFilter.FILTER_TYPE_DEVICE_CONTACTS;
     }
+
+    /**
+     * Returns action bar title for filter and returns default title "Contacts" if filter is empty.
+     */
+    public static String getActionBarTitleForFilter(Context context, ContactListFilter filter) {
+        if (filter.filterType == ContactListFilter.FILTER_TYPE_DEVICE_CONTACTS) {
+            return context.getString(R.string.account_phone);
+        } else if (!TextUtils.isEmpty(filter.accountName)) {
+            return getActionBarTitleForAccount(context, filter);
+        }
+        return context.getString(R.string.contactsList);
+    }
+
+    private static String getActionBarTitleForAccount(Context context, ContactListFilter filter) {
+        final AccountDisplayInfoFactory factory =
+                AccountDisplayInfoFactory.forAllAccounts(context);
+        final AccountDisplayInfo account = factory.getAccountDisplayInfoFor(filter);
+        if (account.hasGoogleAccountType()) {
+            return context.getString(R.string.title_from_google);
+        }
+        return account.withFormattedName(context, R.string.title_from_other_accounts)
+                .getNameLabel().toString();
+    }
 }
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index a336e09..c9c5915 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -689,6 +689,7 @@
     private void setFilterAndUpdateTitle(ContactListFilter filter, boolean restoreSelectedUri) {
         setContactListFilter(filter);
         updateListFilter(filter, restoreSelectedUri);
+        mActivity.setTitle(AccountFilterUtil.getActionBarTitleForFilter(mActivity, filter));
 
         // Determine whether the account has pullToRefresh feature
         if (Flags.getInstance(getContext()).getBoolean(Experiments.PULL_TO_REFRESH)) {