#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 {
// 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,
// 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;
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
// |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);
// 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.