Hide assistant left nav behind flag

Add flag to flip between assistant and duplicates
in left nav.

Test: manual
  - default flag to false - see duplicates and navigate to and from
  - flip flag to true - see assistant and navigate to and from

Bug:32091041
Change-Id: I74979d4fcbd8c6d99f09007d4354d16e9ba9104e
diff --git a/src/com/android/contacts/ContactsDrawerActivity.java b/src/com/android/contacts/ContactsDrawerActivity.java
index 68b9884..0892baf 100644
--- a/src/com/android/contacts/ContactsDrawerActivity.java
+++ b/src/com/android/contacts/ContactsDrawerActivity.java
@@ -44,6 +44,7 @@
 
 import com.android.contacts.activities.ActionBarAdapter;
 import com.android.contacts.common.ContactsUtils;
+import com.android.contacts.common.Experiments;
 import com.android.contacts.common.compat.CompatUtils;
 import com.android.contacts.common.list.AccountFilterActivity;
 import com.android.contacts.common.list.ContactListFilter;
@@ -74,6 +75,7 @@
 import com.android.contacts.util.SharedPreferenceUtil;
 import com.android.contactsbind.HelpUtils;
 import com.android.contactsbind.ObjectFactory;
+import com.android.contactsbind.experiments.Flags;
 
 import java.util.HashMap;
 import java.util.Iterator;
@@ -272,11 +274,21 @@
     private void setUpMenu() {
         final Menu menu = mNavigationView.getMenu();
 
-        if (ObjectFactory.getAssistantFragment() == null) {
+        if (ObjectFactory.getDuplicatesUtilFragment() == null) {
             menu.removeItem(R.id.nav_assistant);
+            menu.removeItem(R.id.nav_find_duplicates);
         } else {
-            final MenuItem assistantMenu = menu.findItem(R.id.nav_assistant);
-            mIdMenuMap.put(R.id.nav_assistant, assistantMenu);
+            int id;
+            if (Flags.getInstance(this).getBoolean(Experiments.ASSISTANT)) {
+                id = R.id.nav_assistant;
+                menu.removeItem(R.id.nav_find_duplicates);
+            } else {
+                id = R.id.nav_find_duplicates;
+                menu.removeItem(R.id.nav_assistant);
+            }
+
+            final MenuItem assistantMenu = menu.findItem(id);
+            mIdMenuMap.put(id, assistantMenu);
             if (isAssistantView()) {
                 updateMenuSelection(assistantMenu);
             }
@@ -591,7 +603,7 @@
                     HelpUtils.launchHelpAndFeedbackForMainScreen(ContactsDrawerActivity.this);
                 } else if (id == R.id.nav_all_contacts) {
                     switchToAllContacts();
-                } else if (id == R.id.nav_assistant) {
+                } else if (id == R.id.nav_assistant || id == R.id.nav_find_duplicates) {
                     if (!isAssistantView()) {
                         launchAssistant();
                         updateMenuSelection(item);
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 5621c1b..9326b0d 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -790,13 +790,26 @@
             transaction.replace(
                     R.id.contacts_list_container, mMembersFragment, TAG_GROUP_VIEW);
         } else if(isAssistantView()) {
-            Fragment assistantFragment = fragmentManager.findFragmentByTag(TAG_ASSISTANT);
-            if (assistantFragment == null) {
-                assistantFragment = ObjectFactory.getAssistantFragment();
+            String fragmentTag;
+            if (Flags.getInstance(this).getBoolean(Experiments.ASSISTANT)) {
+                fragmentTag = TAG_ASSISTANT;
+            } else {
+                fragmentTag = TAG_DUPLICATES;
             }
-            if (assistantFragment != null) {
-                transaction.replace(
-                        R.id.contacts_list_container, assistantFragment, TAG_ASSISTANT);
+
+            Fragment uiFragment = fragmentManager.findFragmentByTag(fragmentTag);
+            if (uiFragment == null) {
+                uiFragment = ObjectFactory.getAssistantFragment(fragmentTag);
+            }
+            transaction.replace(R.id.contacts_list_container, uiFragment, fragmentTag);
+
+            Fragment duplicatesUtilFragment =
+                    fragmentManager.findFragmentByTag(TAG_DUPLICATES_UTIL);
+            if (duplicatesUtilFragment == null) {
+                duplicatesUtilFragment = ObjectFactory.getDuplicatesUtilFragment();
+            }
+            if (!duplicatesUtilFragment.isAdded()) {
+                transaction.add(duplicatesUtilFragment, TAG_DUPLICATES_UTIL);
             }
             resetToolBarStatusBarColor();
         }
diff --git a/src/com/android/contacts/common/Experiments.java b/src/com/android/contacts/common/Experiments.java
index 4487b45..df709b3 100644
--- a/src/com/android/contacts/common/Experiments.java
+++ b/src/com/android/contacts/common/Experiments.java
@@ -21,6 +21,11 @@
 public final class Experiments {
 
     /**
+     * Experiment to enable assistant in left navigation drawer.
+     */
+    public static final String ASSISTANT = "Assistant__enable_assistant";
+
+    /**
      * Whether to open contact sheet (aka smart profile) instead of our own QuickContact.
      */
     public static final String CONTACT_SHEET = "QuickContact__contact_sheet";