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

Unified Diff: chrome/browser/autocomplete/zero_suggest_provider.h

Issue 131433003: Refactor search and zero suggest providers to use common base class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More style + zero-suggest logic fixes Created 6 years, 11 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
Index: chrome/browser/autocomplete/zero_suggest_provider.h
diff --git a/chrome/browser/autocomplete/zero_suggest_provider.h b/chrome/browser/autocomplete/zero_suggest_provider.h
index 41d6b04cc9d1aed44240e7f0910128931e1dfc4d..ecf884f3818018ec8227b2ea34c60aa2784a7439 100644
--- a/chrome/browser/autocomplete/zero_suggest_provider.h
+++ b/chrome/browser/autocomplete/zero_suggest_provider.h
@@ -18,13 +18,11 @@
#include <string>
#include <vector>
-#include "base/basictypes.h"
-#include "base/compiler_specific.h"
-#include "base/memory/scoped_ptr.h"
+#include "base/memory/weak_ptr.h"
#include "base/strings/string16.h"
-#include "chrome/browser/autocomplete/autocomplete_provider.h"
-#include "chrome/browser/autocomplete/search_provider.h"
-#include "net/url_request/url_fetcher_delegate.h"
+#include "chrome/browser/autocomplete/autocomplete_input.h"
+#include "chrome/browser/autocomplete/base_search_provider.h"
+#include "chrome/browser/history/history_types.h"
class AutocompleteInput;
class GURL;
@@ -49,27 +47,17 @@ 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,
Profile* profile);
// 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;
- // net::URLFetcherDelegate
- virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE;
-
// Initiates a new fetch for the given |url| of classification
// |page_classification|. |permanent_text| is the omnibox text
// for the current page.
@@ -83,54 +71,48 @@ class ZeroSuggestProvider : public AutocompleteProvider,
}
private:
+ // BaseSearchProvider:
+ // Stops the suggest query.
+ // NOTE: This does not update |done_|. Callers must do so.
+ virtual void StopSuggest() OVERRIDE;
+
+ // Clears the current results.
+ virtual void ClearAllResults() OVERRIDE;
+
+ virtual void LogFetchComplete(const net::URLFetcher* source) OVERRIDE;
+
+ virtual bool ShouldSendProviderUpdate(bool results_updated) OVERRIDE;
+
+ virtual bool IsValidQuery(const base::string16 query,
+ const net::URLFetcher* source) OVERRIDE;
+ virtual const base::string16 GetInputText(const net::URLFetcher* source)
+ OVERRIDE;
+ virtual int GetDefaultRelevance() OVERRIDE;
+
+ virtual void UpdateMatches() OVERRIDE;
+
+ virtual Results* GetResultsObjectToFill(const net::URLFetcher* source)
+ OVERRIDE;
+
+ virtual void RecordDeletionResult(bool success) OVERRIDE;
+
ZeroSuggestProvider(AutocompleteProviderListener* listener,
Profile* profile);
virtual ~ZeroSuggestProvider();
- // 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
- // ZeroSuggestProvider and SearchProvider.
-
- // From the OpenSearch formatted response |root_val|, populate query
- // suggestions into |suggest_results|, navigation suggestions into
- // |navigation_results|, and the verbatim relevance score into
- // |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,
+ // Creates AutocompleteMatches to search |template_url| for "<suggestion>"
+ // for all suggestions in |results|, and adds them to |map|.
+ void AddSuggestResultsToMap(const 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);
+ 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);
- // Parses results from the zero-suggest server and updates results.
- void ParseSuggestResults(const base::Value& root_val);
-
// Converts the parsed results to a set of AutocompleteMatches and adds them
// to |matches_|. Also update the histograms for how many results were
// received.
@@ -161,17 +143,15 @@ class ZeroSuggestProvider : public AutocompleteProvider,
// Fetcher used to retrieve results.
scoped_ptr<net::URLFetcher> fetcher_;
- // Whether there's a pending request in flight.
- bool have_pending_request_;
// Suggestion for the current URL.
AutocompleteMatch current_url_match_;
- // Navigation suggestions for the most recent ZeroSuggest input URL.
- SearchProvider::NavigationResults navigation_results_;
- // Query suggestions for the most recent ZeroSuggest input URL.
- SearchProvider::MatchMap query_matches_map_;
- // The relevance score for the URL of the current page.
- int verbatim_relevance_;
+
+ // Suggestions received from the most recent run.
+ Results results_;
+
+ // Generally an empty string since this is zero-suggest.
+ base::string16 input_text_;
// Whether a field trial, if any, has triggered in the most recent
// autocomplete query. This field is set to true if the last request
« no previous file with comments | « chrome/browser/autocomplete/search_provider_unittest.cc ('k') | chrome/browser/autocomplete/zero_suggest_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698