[AiS] Better prefetch cache.

Step 1 - factor out current cache and increase its size.

BUG=401758
[email protected]

Review URL: https://codereview.chromium.org/455563002

Cr-Commit-Position: refs/heads/master@{#291307}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@291307 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/autocomplete/search_provider.cc b/chrome/browser/autocomplete/search_provider.cc
index c059c6ec..4dca4d4 100644
--- a/chrome/browser/autocomplete/search_provider.cc
+++ b/chrome/browser/autocomplete/search_provider.cc
@@ -136,7 +136,8 @@
                          AutocompleteProvider::TYPE_SEARCH),
       listener_(listener),
       suggest_results_pending_(0),
-      providers_(template_url_service) {
+      providers_(template_url_service),
+      answers_cache_(1) {
 }
 
 // static
@@ -669,9 +670,9 @@
     search_term_args.session_token = GetSessionToken();
     if (!prefetch_data_.full_query_text.empty()) {
       search_term_args.prefetch_query =
-          base::UTF16ToUTF8(last_answer_seen_.full_query_text);
+          base::UTF16ToUTF8(prefetch_data_.full_query_text);
       search_term_args.prefetch_query_type =
-          base::UTF16ToUTF8(last_answer_seen_.query_type);
+          base::UTF16ToUTF8(prefetch_data_.query_type);
     }
   }
   GURL suggest_url(template_url->suggestions_url_ref().ReplaceSearchTerms(
@@ -1256,14 +1257,9 @@
     return;
 
   // Valid answer encountered, cache it for further queries.
-  last_answer_seen_.full_query_text = match->fill_into_edit;
-  last_answer_seen_.query_type = match->answer_type;
+  answers_cache_.UpdateRecentAnswers(match->fill_into_edit, match->answer_type);
 }
 
 void SearchProvider::DoAnswersQuery(const AutocompleteInput& input) {
-  // If the query text starts with trimmed input, this is valid prefetch data.
-  prefetch_data_ = StartsWith(last_answer_seen_.full_query_text,
-                              base::CollapseWhitespace(input.text(), false),
-                              false) ?
-      last_answer_seen_ : AnswersQueryData();
+  prefetch_data_ = answers_cache_.GetTopAnswerEntry(input.text());
 }