Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2596)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxSuggestion.java

Issue 2738583002: Add a way to cache and show zero suggest results before native (Closed)
Patch Set: reset on start call as well Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxSuggestion.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxSuggestion.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxSuggestion.java
index f8c81b2ebf28515697baf4aa3d54afd09e8ffa21..06a942fc18c703dd0efba29052d26e711dd68597 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxSuggestion.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxSuggestion.java
@@ -4,10 +4,14 @@
package org.chromium.chrome.browser.omnibox;
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.Editor;
import android.text.TextUtils;
+import org.chromium.base.ContextUtils;
import org.chromium.base.VisibleForTesting;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -15,6 +19,16 @@ import java.util.List;
*/
@VisibleForTesting
public class OmniboxSuggestion {
+ private static final String KEY_ZERO_SUGGEST_LIST_SIZE = "zero_suggest_list_size";
+ private static final String KEY_PREFIX_ZERO_SUGGEST_URL = "zero_suggest_url";
+ private static final String KEY_PREFIX_ZERO_SUGGEST_DISPLAY_TEST = "zero_suggest_display_text";
+ private static final String KEY_PREFIX_ZERO_SUGGEST_DESCRIPTION = "zero_suggest_description";
+ private static final String KEY_PREFIX_ZERO_SUGGEST_NATIVE_TYPE = "zero_suggest_native_type";
+ private static final String KEY_PREFIX_ZERO_SUGGEST_IS_SEARCH_TYPE = "zero_suggest_is_search";
+ private static final String KEY_PREFIX_ZERO_SUGGEST_ANSWER_TEXT = "zero_suggest_answer_text";
+ private static final String KEY_PREFIX_ZERO_SUGGEST_ANSWER_TYPE = "zero_suggest_answer_type";
+ private static final String KEY_PREFIX_ZERO_SUGGEST_IS_DELETABLE = "zero_suggest_is_deletable";
+ private static final String KEY_PREFIX_ZERO_SUGGEST_IS_STARRED = "zero_suggest_is_starred";
/**
* Specifies the style of portions of the suggestion text.
@@ -192,4 +206,65 @@ public class OmniboxSuggestion {
&& mIsStarred == suggestion.mIsStarred
&& mIsDeletable == suggestion.mIsDeletable;
}
+
+ /**
+ * Cache the given suggestion list in shared preferences.
+ * @param suggestions Suggestions to be cached.
+ */
+ public static void cacheOmniboxSuggestionListForZeroSuggest(
+ List<OmniboxSuggestion> suggestions) {
+ Editor editor = ContextUtils.getAppSharedPreferences().edit();
+ editor.putInt(KEY_ZERO_SUGGEST_LIST_SIZE, suggestions.size()).apply();
+ for (int i = 0; i < suggestions.size(); i++) {
+ OmniboxSuggestion suggestion = suggestions.get(i);
+ editor.putString(KEY_PREFIX_ZERO_SUGGEST_URL + i, suggestion.getUrl())
+ .putString(KEY_PREFIX_ZERO_SUGGEST_DISPLAY_TEST + i,
+ suggestion.getDisplayText())
+ .putString(KEY_PREFIX_ZERO_SUGGEST_DESCRIPTION + i,
+ suggestion.getDescription())
+ .putString(KEY_PREFIX_ZERO_SUGGEST_ANSWER_TEXT + i,
+ suggestion.getAnswerContents())
+ .putString(KEY_PREFIX_ZERO_SUGGEST_ANSWER_TYPE + i,
+ suggestion.getAnswerType())
+ .putInt(KEY_PREFIX_ZERO_SUGGEST_NATIVE_TYPE + i, suggestion.getType())
+ .putBoolean(KEY_PREFIX_ZERO_SUGGEST_IS_SEARCH_TYPE + i,
+ !suggestion.isUrlSuggestion())
+ .putBoolean(KEY_PREFIX_ZERO_SUGGEST_IS_DELETABLE + i, suggestion.mIsDeletable)
+ .putBoolean(KEY_PREFIX_ZERO_SUGGEST_IS_STARRED + i, suggestion.mIsStarred)
+ .apply();
+ }
+ }
+
+ /**
+ * @return The zero suggest result if they have been cached before.
+ */
+ public static List<OmniboxSuggestion> getCachedOmniboxSuggestionsForZeroSuggest() {
+ SharedPreferences prefs = ContextUtils.getAppSharedPreferences();
+ int size = prefs.getInt(KEY_ZERO_SUGGEST_LIST_SIZE, -1);
+ List<OmniboxSuggestion> suggestions = null;
+ if (size > 1) {
+ suggestions = new ArrayList<>(size);
+ List<MatchClassification> classifications = new ArrayList<>();
+ classifications.add(new MatchClassification(0, MatchClassificationStyle.NONE));
+ for (int i = 0; i < size; i++) {
+ String url = prefs.getString(KEY_PREFIX_ZERO_SUGGEST_URL + i, "");
+ String displayText = prefs.getString(KEY_PREFIX_ZERO_SUGGEST_DISPLAY_TEST + i, "");
+ String description = prefs.getString(KEY_PREFIX_ZERO_SUGGEST_DESCRIPTION + i, "");
+ String answerText = prefs.getString(KEY_PREFIX_ZERO_SUGGEST_ANSWER_TEXT + i, "");
+ String answerType = prefs.getString(KEY_PREFIX_ZERO_SUGGEST_ANSWER_TYPE + i, "");
+ int nativeType = prefs.getInt(KEY_PREFIX_ZERO_SUGGEST_NATIVE_TYPE + i, -1);
+ boolean isSearchType =
+ prefs.getBoolean(KEY_PREFIX_ZERO_SUGGEST_IS_SEARCH_TYPE, true);
+ boolean isStarred = prefs.getBoolean(KEY_PREFIX_ZERO_SUGGEST_IS_STARRED + i, false);
+ boolean isDeletable = prefs.getBoolean(
+ KEY_PREFIX_ZERO_SUGGEST_IS_DELETABLE + i, false);
+ OmniboxSuggestion suggestion = new OmniboxSuggestion(
+ nativeType, !isSearchType, 0, 0, displayText,
+ classifications, description, classifications, answerText,
+ answerType, "", url, isStarred, isDeletable);
+ suggestions.add(suggestion);
+ }
+ }
+ return suggestions;
+ }
}
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698