| Index: athena/main/url_search_provider.cc
|
| diff --git a/athena/main/url_search_provider.cc b/athena/main/url_search_provider.cc
|
| index 39819bd9a9b0a2058691c27461a6c616f650b363..5fcea5a0efd6031949cf1b953f75a91f7ac9601c 100644
|
| --- a/athena/main/url_search_provider.cc
|
| +++ b/athena/main/url_search_provider.cc
|
| @@ -6,13 +6,13 @@
|
|
|
| #include "athena/activity/public/activity_factory.h"
|
| #include "athena/activity/public/activity_manager.h"
|
| +#include "athena/content/public/scheme_classifier_factory.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "base/values.h"
|
| #include "components/metrics/proto/omnibox_event.pb.h"
|
| #include "components/metrics/proto/omnibox_input_type.pb.h"
|
| #include "components/omnibox/autocomplete_input.h"
|
| #include "components/omnibox/autocomplete_provider_client.h"
|
| -#include "components/omnibox/autocomplete_scheme_classifier.h"
|
| #include "components/omnibox/search_provider.h"
|
| #include "components/search_engines/search_terms_data.h"
|
| #include "components/search_engines/template_url_service.h"
|
| @@ -39,21 +39,6 @@ class AthenaSearchTermsData : public SearchTermsData {
|
| }
|
| };
|
|
|
| -// The AutocompleteSchemeClassifier implementation for Athena.
|
| -// TODO(mukai): Introduce supports of normal schemes like about: or blob:
|
| -class AthenaSchemeClassifier : public AutocompleteSchemeClassifier {
|
| - public:
|
| - AthenaSchemeClassifier() {}
|
| -
|
| - // AutocompleteSchemeClassifier:
|
| - virtual metrics::OmniboxInputType::Type GetInputTypeForScheme(
|
| - const std::string& scheme) const OVERRIDE {
|
| - if (net::URLRequest::IsHandledProtocol(scheme))
|
| - return metrics::OmniboxInputType::URL;
|
| - return metrics::OmniboxInputType::INVALID;
|
| - }
|
| -};
|
| -
|
| // The templateURLServiceClient for Athena. Mainly for the interaction with
|
| // history module (see chrome/browser/search_engines for Chrome implementation).
|
| // TODO(mukai): Implement the contents of this class when it's necessary.
|
| @@ -82,7 +67,8 @@ class AthenaAutocompleteProviderClient : public AutocompleteProviderClient {
|
| public:
|
| explicit AthenaAutocompleteProviderClient(
|
| content::BrowserContext* browser_context)
|
| - : browser_context_(browser_context) {}
|
| + : browser_context_(browser_context),
|
| + scheme_classifier_(CreateSchemeClassifier(browser_context)) {}
|
| virtual ~AthenaAutocompleteProviderClient() {}
|
|
|
| virtual net::URLRequestContextGetter* RequestContext() OVERRIDE {
|
| @@ -98,7 +84,7 @@ class AthenaAutocompleteProviderClient : public AutocompleteProviderClient {
|
| virtual bool SearchSuggestEnabled() OVERRIDE { return true; }
|
| virtual bool ShowBookmarkBar() OVERRIDE { return false; }
|
| virtual const AutocompleteSchemeClassifier& SchemeClassifier() OVERRIDE {
|
| - return scheme_classifier_;
|
| + return *scheme_classifier_;
|
| }
|
| virtual void Classify(
|
| const base::string16& text,
|
| @@ -116,7 +102,7 @@ class AthenaAutocompleteProviderClient : public AutocompleteProviderClient {
|
|
|
| private:
|
| content::BrowserContext* browser_context_;
|
| - AthenaSchemeClassifier scheme_classifier_;
|
| + scoped_ptr<AutocompleteSchemeClassifier> scheme_classifier_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(AthenaAutocompleteProviderClient);
|
| };
|
| @@ -246,6 +232,8 @@ UrlSearchProvider::~UrlSearchProvider() {
|
|
|
| void UrlSearchProvider::Start(const base::string16& query) {
|
| const bool minimal_changes = query == input_.text();
|
| + scoped_ptr<AutocompleteSchemeClassifier> scheme_classifier(
|
| + CreateSchemeClassifier(browser_context_));
|
| input_ = AutocompleteInput(query,
|
| base::string16::npos /* cursor_position */,
|
| base::string16() /* desired_tld */,
|
| @@ -255,20 +243,12 @@ void UrlSearchProvider::Start(const base::string16& query) {
|
| false /* prefer_keyword */,
|
| true /* allow_extract_keyword_match */,
|
| true /* want_asynchronous_matches */,
|
| - AthenaSchemeClassifier());
|
| -
|
| - provider_->Start(input_, minimal_changes);
|
| -}
|
| + *scheme_classifier);
|
|
|
| -void UrlSearchProvider::Stop() {
|
| - provider_->Stop(false);
|
| -}
|
| -
|
| -void UrlSearchProvider::OnProviderUpdate(bool updated_matches) {
|
| - if (!updated_matches)
|
| - return;
|
| -
|
| - ClearResults();
|
| + // Clearing results here may cause unexpected results.
|
| + // TODO(mukai): fix this by fixing crbug.com/415500
|
| + if (!minimal_changes)
|
| + ClearResults();
|
|
|
| if (input_.type() == metrics::OmniboxInputType::URL) {
|
| // TODO(hashimoto): Componentize HistoryURLProvider and remove this code.
|
| @@ -281,6 +261,17 @@ void UrlSearchProvider::OnProviderUpdate(bool updated_matches) {
|
| browser_context_, what_you_typed_match)));
|
| }
|
|
|
| + provider_->Start(input_, minimal_changes);
|
| +}
|
| +
|
| +void UrlSearchProvider::Stop() {
|
| + provider_->Stop(false);
|
| +}
|
| +
|
| +void UrlSearchProvider::OnProviderUpdate(bool updated_matches) {
|
| + if (!updated_matches)
|
| + return;
|
| +
|
| const ACMatches& matches = provider_->matches();
|
| for (ACMatches::const_iterator it = matches.begin(); it != matches.end();
|
| ++it) {
|
|
|