Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / autocomplete / zero_suggest_provider.h
index 41d6b04..01d561b 100644 (file)
 #ifndef CHROME_BROWSER_AUTOCOMPLETE_ZERO_SUGGEST_PROVIDER_H_
 #define CHROME_BROWSER_AUTOCOMPLETE_ZERO_SUGGEST_PROVIDER_H_
 
-#include <map>
-#include <string>
-#include <vector>
-
 #include "base/basictypes.h"
 #include "base/compiler_specific.h"
 #include "base/memory/scoped_ptr.h"
-#include "base/strings/string16.h"
-#include "chrome/browser/autocomplete/autocomplete_provider.h"
+#include "chrome/browser/autocomplete/base_search_provider.h"
 #include "chrome/browser/autocomplete/search_provider.h"
-#include "net/url_request/url_fetcher_delegate.h"
 
-class AutocompleteInput;
-class GURL;
 class TemplateURLService;
 
 namespace base {
@@ -49,8 +41,7 @@ class URLFetcher;
 // TODO(jered): Consider deleting this class and building this functionality
 // into SearchProvider after dogfood and after we break the association between
 // omnibox text and suggestions.
-class ZeroSuggestProvider : public AutocompleteProvider,
-                            public net::URLFetcherDelegate {
+class ZeroSuggestProvider : public BaseSearchProvider {
  public:
   // Creates and returns an instance of this provider.
   static ZeroSuggestProvider* Create(AutocompleteProviderListener* listener,
@@ -59,10 +50,6 @@ class ZeroSuggestProvider : public AutocompleteProvider,
   // AutocompleteProvider:
   virtual void Start(const AutocompleteInput& input,
                      bool /*minimal_changes*/) OVERRIDE;
-  virtual void Stop(bool clear_cached_results) OVERRIDE;
-
-  // Adds provider-specific information to omnibox event logs.
-  virtual void AddProviderInfo(ProvidersInfo* provider_info) const OVERRIDE;
 
   // Sets |field_trial_triggered_| to false.
   virtual void ResetSession() OVERRIDE;
@@ -78,16 +65,22 @@ class ZeroSuggestProvider : public AutocompleteProvider,
       AutocompleteInput::PageClassification page_classification,
       const base::string16& permanent_text);
 
-  bool field_trial_triggered_in_session() const {
-    return field_trial_triggered_in_session_;
-  }
-
  private:
   ZeroSuggestProvider(AutocompleteProviderListener* listener,
                       Profile* profile);
 
   virtual ~ZeroSuggestProvider();
 
+  // BaseSearchProvider:
+  virtual const TemplateURL* GetTemplateURL(
+      const SuggestResult& result) const OVERRIDE;
+  virtual const AutocompleteInput GetInput(
+      const SuggestResult& result) const OVERRIDE;
+  virtual bool ShouldAppendExtraParams(
+      const SuggestResult& result) const OVERRIDE;
+  virtual void StopSuggest() OVERRIDE;
+  virtual void ClearAllResults() OVERRIDE;
+
   // The 4 functions below (that take classes defined in SearchProvider as
   // arguments) were copied and trimmed from SearchProvider.
   // TODO(hfung): Refactor them into a new base class common to both
@@ -99,31 +92,16 @@ class ZeroSuggestProvider : public AutocompleteProvider,
   // |verbatim_relevance|.
   void FillResults(const base::Value& root_val,
                    int* verbatim_relevance,
-                   SearchProvider::SuggestResults* suggest_results,
-                   SearchProvider::NavigationResults* navigation_results);
-
-  // Creates AutocompleteMatches to search |template_url| for "<suggestion>" for
-  // all suggestions in |results|, and adds them to |map|.
-  void AddSuggestResultsToMap(const SearchProvider::SuggestResults& results,
-                              const TemplateURL* template_url,
-                              SearchProvider::MatchMap* map);
-
-  // Creates an AutocompleteMatch with the provided |relevance| and |type| to
-  // search |template_url| for |query_string|.  |accepted_suggestion| will be
-  // used to generate Assisted Query Stats.
-  //
-  // Adds this match to |map|; if such a match already exists, whichever one
-  // has lower relevance is eliminated.
-  void AddMatchToMap(int relevance,
-                     AutocompleteMatch::Type type,
-                     const TemplateURL* template_url,
-                     const base::string16& query_string,
-                     int accepted_suggestion,
-                     SearchProvider::MatchMap* map);
+                   SuggestResults* suggest_results,
+                   NavigationResults* navigation_results);
+
+  // Adds AutocompleteMatches for each of the suggestions in |results| to
+  // |map|.
+  void AddSuggestResultsToMap(const SuggestResults& results,
+                              MatchMap* map);
 
   // Returns an AutocompleteMatch for a navigational suggestion |navigation|.
-  AutocompleteMatch NavigationToMatch(
-      const SearchProvider::NavigationResult& navigation);
+  AutocompleteMatch NavigationToMatch(const NavigationResult& navigation);
 
   // Fetches zero-suggest suggestions by sending a request using |suggest_url|.
   void Run(const GURL& suggest_url);
@@ -167,23 +145,12 @@ class ZeroSuggestProvider : public AutocompleteProvider,
   // Suggestion for the current URL.
   AutocompleteMatch current_url_match_;
   // Navigation suggestions for the most recent ZeroSuggest input URL.
-  SearchProvider::NavigationResults navigation_results_;
+  NavigationResults navigation_results_;
   // Query suggestions for the most recent ZeroSuggest input URL.
-  SearchProvider::MatchMap query_matches_map_;
+  MatchMap query_matches_map_;
   // The relevance score for the URL of the current page.
   int verbatim_relevance_;
 
-  // Whether a field trial, if any, has triggered in the most recent
-  // autocomplete query. This field is set to true if the last request
-  // was a zero suggest request, the provider has completed and their
-  // corresponding response contained '"google:fieldtrialtriggered":true'.
-  bool field_trial_triggered_;
-  // Whether a zero suggest request triggered a field trial in the omnibox
-  // session.  The user could have clicked on a suggestion when zero suggest
-  // triggered (same condition as field_trial_triggered_), or triggered zero
-  // suggest but kept typing.
-  bool field_trial_triggered_in_session_;
-
   history::MostVisitedURLList most_visited_urls_;
 
   // For callbacks that may be run after destruction.