Show promo after reloading data when stopping from search.

BUG 30706521

Change-Id: I36697d54ec2171a3568178b25fb86b39e18bcf1d
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 2e32e11..8a0ae1b 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -82,6 +82,7 @@
 import com.android.contacts.list.ContactsRequest;
 import com.android.contacts.list.ContactsUnavailableFragment;
 import com.android.contacts.list.DefaultContactBrowseListFragment;
+import com.android.contacts.list.DefaultContactBrowseListFragment.FeatureHighlightCallback;
 import com.android.contacts.list.MultiSelectContactsListFragment.OnCheckBoxListActionListener;
 import com.android.contacts.list.OnContactBrowserActionListener;
 import com.android.contacts.list.OnContactsUnavailableActionListener;
@@ -104,7 +105,8 @@
         DialogManager.DialogShowingViewActivity,
         ContactListFilterController.ContactListFilterListener,
         ProviderStatusListener,
-        MultiContactDeleteListener {
+        MultiContactDeleteListener,
+        DefaultContactBrowseListFragment.FeatureHighlightCallback {
 
     private static final String TAG = "PeopleActivity";
 
@@ -356,6 +358,7 @@
             transaction.add(R.id.tab_pager, mAllFragment, ALL_TAG);
         }
 
+        mAllFragment.setFeatureHighlightCallback(this);
         mAllFragment.setOnContactListActionListener(new ContactBrowserActionListener());
         mAllFragment.setCheckBoxListListener(new CheckBoxListListener());
         mAllFragment.setListType(mContactListFilterController.getFilterListType());
@@ -578,9 +581,14 @@
                 showFabWithAnimation(shouldShowFabForAccount());
                 break;
             case ActionBarAdapter.Listener.Action.STOP_SEARCH_AND_SELECTION_MODE:
+                // If queryString is empty, fragment data will not be reloaded,
+                // so hamburger promo should be checked now.
+                // If not empty, promo should be checked and displayed after reloading. (b/30706521)
+                if (TextUtils.isEmpty(mAllFragment.getQueryString())) {
+                    maybeShowHamburgerFeatureHighlight();
+                }
                 setQueryTextToFragment("");
                 updateFragmentsVisibility();
-                maybeShowHamburgerFeatureHighlight();
                 invalidateOptionsMenu();
                 showFabWithAnimation(shouldShowFabForAccount());
                 break;
@@ -1493,4 +1501,9 @@
     protected ContactListFilter getContactListFilter() {
         return mContactListFilterController.getFilter();
     }
+
+    @Override
+    public void onLoadFinishedCallback() {
+        maybeShowHamburgerFeatureHighlight();
+    }
 }
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index 1bd09f8..75168cd 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -52,6 +52,11 @@
     private View mEmptyHomeView;
     private View mAccountFilterContainer;
     private TextView mSearchProgressText;
+    private FeatureHighlightCallback mCallback;
+
+    public interface FeatureHighlightCallback {
+        void onLoadFinishedCallback();
+    }
 
     public DefaultContactBrowseListFragment() {
         setPhotoLoaderEnabled(true);
@@ -63,6 +68,10 @@
         setDisplayDirectoryHeader(false);
     }
 
+    public void setFeatureHighlightCallback(FeatureHighlightCallback callback) {
+        mCallback = callback;
+    }
+
     @Override
     public CursorLoader createCursorLoader(Context context) {
         return new FavoritesAndContactsLoader(context);
@@ -72,6 +81,9 @@
     public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
         bindListHeader(data.getCount());
         super.onLoadFinished(loader, data);
+        if (!isSearchMode() && mCallback != null) {
+            mCallback.onLoadFinishedCallback();
+        }
     }
 
     private void bindListHeader(int numberOfContacts) {