Bug 1233602 - Don't depend on search suggestions to show search history r=liuche draft
authorAndrzej Hunt <ahunt@mozilla.com>
Thu, 17 Dec 2015 17:14:27 -0800
changeset 316211 cd6ebf7f89e4dc02715cf8247e26fa4fee12deda
parent 315885 53d6c599b1c957aeb76a46f2fee07e8c68d7be1e
child 512134 42f317ccbd557fcff605cb1a7cf823e10a78a5a0
push id8517
push userahunt@mozilla.com
push dateFri, 18 Dec 2015 01:14:34 +0000
reviewersliuche
bugs1233602
milestone46.0a1
Bug 1233602 - Don't depend on search suggestions to show search history r=liuche
mobile/android/base/java/org/mozilla/gecko/home/BrowserSearch.java
--- a/mobile/android/base/java/org/mozilla/gecko/home/BrowserSearch.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/BrowserSearch.java
@@ -10,37 +10,40 @@ import java.io.InputStreamReader;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.EnumSet;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Locale;
 
+import android.content.SharedPreferences;
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
 
 import org.mozilla.gecko.AppConstants;
 import org.mozilla.gecko.EventDispatcher;
 import org.mozilla.gecko.GeckoAppShell;
 import org.mozilla.gecko.GeckoEvent;
+import org.mozilla.gecko.GeckoSharedPrefs;
 import org.mozilla.gecko.PrefsHelper;
 import org.mozilla.gecko.R;
 import org.mozilla.gecko.SuggestClient;
 import org.mozilla.gecko.Tab;
 import org.mozilla.gecko.Tabs;
 import org.mozilla.gecko.Telemetry;
 import org.mozilla.gecko.TelemetryContract;
 import org.mozilla.gecko.annotation.RobocopTarget;
 import org.mozilla.gecko.db.BrowserContract;
 import org.mozilla.gecko.db.BrowserContract.History;
 import org.mozilla.gecko.db.BrowserContract.URLColumns;
 import org.mozilla.gecko.home.HomePager.OnUrlOpenListener;
 import org.mozilla.gecko.home.SearchLoader.SearchCursorLoader;
+import org.mozilla.gecko.preferences.GeckoPreferences;
 import org.mozilla.gecko.toolbar.AutocompleteHandler;
 import org.mozilla.gecko.util.GeckoEventListener;
 import org.mozilla.gecko.util.StringUtils;
 import org.mozilla.gecko.util.ThreadUtils;
 
 import android.app.Activity;
 import android.content.ContentResolver;
 import android.content.Context;
@@ -152,16 +155,19 @@ public class BrowserSearch extends HomeF
 
     // Track the locale that was last in use when we filled mSearchEngines.
     // Access to this member must only occur from the UI thread.
     private Locale mLastLocale;
 
     // Whether search suggestions are enabled or not
     private boolean mSuggestionsEnabled;
 
+    // Whether history suggestions are enabled or not
+    private boolean mSavedSearchesEnabled;
+
     // Callbacks used for the search loader
     private CursorLoaderCallbacks mCursorLoaderCallbacks;
 
     // Callbacks used for the search suggestion loader
     private SearchEngineSuggestionLoaderCallbacks mSearchEngineSuggestionLoaderCallbacks;
     private SearchHistorySuggestionLoaderCallbacks mSearchHistorySuggestionLoaderCallback;
 
     // Autocomplete handler used when filtering results
@@ -583,17 +589,17 @@ public class BrowserSearch extends HomeF
         return searchDomains(searchTerm);
     }
 
     public void resetScrollState() {
         mSearchEngineBar.scrollToPosition(0);
     }
 
     private void filterSuggestions() {
-        if (mSuggestClient == null || !mSuggestionsEnabled) {
+        if (mSuggestClient == null || (!mSuggestionsEnabled && !mSavedSearchesEnabled)) {
             return;
         }
 
         // Suggestions from search engine
         if (mSearchEngineSuggestionLoaderCallbacks == null) {
             mSearchEngineSuggestionLoaderCallbacks = new SearchEngineSuggestionLoaderCallbacks();
         }
         getLoaderManager().restartLoader(LOADER_ID_SUGGESTION, null, mSearchEngineSuggestionLoaderCallbacks);
@@ -648,16 +654,18 @@ public class BrowserSearch extends HomeF
         try {
             final JSONObject suggest = data.getJSONObject("suggest");
             final String suggestEngine = suggest.optString("engine", null);
             final String suggestTemplate = suggest.optString("template", null);
             final boolean suggestionsPrompted = suggest.getBoolean("prompted");
             final JSONArray engines = data.getJSONArray("searchEngines");
 
             mSuggestionsEnabled = suggest.getBoolean("enabled");
+            final SharedPreferences prefs = GeckoSharedPrefs.forApp(getContext());
+            mSavedSearchesEnabled = prefs.getBoolean(GeckoPreferences.PREFS_HISTORY_SAVED_SEARCH, true);
 
             ArrayList<SearchEngine> searchEngines = new ArrayList<SearchEngine>();
             for (int i = 0; i < engines.length(); i++) {
                 final JSONObject engineJSON = engines.getJSONObject(i);
                 final SearchEngine engine = new SearchEngine((Context) getActivity(), engineJSON);
 
                 if (engine.name.equals(suggestEngine) && suggestTemplate != null) {
                     // Suggest engine should be at the front of the list.