| Index: components/search_engines/template_url_fetcher.cc
|
| diff --git a/components/search_engines/template_url_fetcher.cc b/components/search_engines/template_url_fetcher.cc
|
| index 96888e41b30775f245291e23f711a639014d1cbf..16068752d0bf5d4d247f7e3083b7d9164ac798a5 100644
|
| --- a/components/search_engines/template_url_fetcher.cc
|
| +++ b/components/search_engines/template_url_fetcher.cc
|
| @@ -26,9 +26,7 @@ class TemplateURLFetcher::RequestDelegate : public net::URLFetcherDelegate {
|
| const base::string16& keyword,
|
| const GURL& osdd_url,
|
| const GURL& favicon_url,
|
| - const URLFetcherCustomizeCallback& url_fetcher_customize_callback,
|
| - const ConfirmAddSearchProviderCallback& confirm_add_callback,
|
| - ProviderType provider_type);
|
| + const URLFetcherCustomizeCallback& url_fetcher_customize_callback);
|
|
|
| // net::URLFetcherDelegate:
|
| // If data contains a valid OSDD, a TemplateURL is created and added to
|
| @@ -41,9 +39,6 @@ class TemplateURLFetcher::RequestDelegate : public net::URLFetcherDelegate {
|
| // Keyword to use.
|
| base::string16 keyword() const { return keyword_; }
|
|
|
| - // The type of search provider being fetched.
|
| - ProviderType provider_type() const { return provider_type_; }
|
| -
|
| private:
|
| void OnLoaded();
|
| void AddSearchProvider();
|
| @@ -54,8 +49,6 @@ class TemplateURLFetcher::RequestDelegate : public net::URLFetcherDelegate {
|
| base::string16 keyword_;
|
| const GURL osdd_url_;
|
| const GURL favicon_url_;
|
| - const ProviderType provider_type_;
|
| - ConfirmAddSearchProviderCallback confirm_add_callback_;
|
|
|
| std::unique_ptr<TemplateURLService::Subscription> template_url_subscription_;
|
|
|
| @@ -67,17 +60,13 @@ TemplateURLFetcher::RequestDelegate::RequestDelegate(
|
| const base::string16& keyword,
|
| const GURL& osdd_url,
|
| const GURL& favicon_url,
|
| - const URLFetcherCustomizeCallback& url_fetcher_customize_callback,
|
| - const ConfirmAddSearchProviderCallback& confirm_add_callback,
|
| - ProviderType provider_type)
|
| + const URLFetcherCustomizeCallback& url_fetcher_customize_callback)
|
| : url_fetcher_(
|
| net::URLFetcher::Create(osdd_url, net::URLFetcher::GET, this)),
|
| fetcher_(fetcher),
|
| keyword_(keyword),
|
| osdd_url_(osdd_url),
|
| - favicon_url_(favicon_url),
|
| - provider_type_(provider_type),
|
| - confirm_add_callback_(confirm_add_callback) {
|
| + favicon_url_(favicon_url) {
|
| TemplateURLService* model = fetcher_->template_url_service_;
|
| DCHECK(model); // TemplateURLFetcher::ScheduleDownload verifies this.
|
|
|
| @@ -133,7 +122,7 @@ void TemplateURLFetcher::RequestDelegate::OnURLFetchComplete(
|
| return;
|
| }
|
|
|
| - if (provider_type_ != AUTODETECTED_PROVIDER || keyword_.empty()) {
|
| + if (keyword_.empty()) {
|
| // Use the parser-generated new keyword from the URL in the OSDD for the
|
| // non-autodetected case. The existing |keyword_| was generated from the
|
| // URL that hosted the OSDD, which results in the wrong keyword when the
|
| @@ -158,15 +147,15 @@ void TemplateURLFetcher::RequestDelegate::AddSearchProvider() {
|
| DCHECK(model->loaded());
|
|
|
| TemplateURL* existing_url = NULL;
|
| - if (model->CanAddAutogeneratedKeyword(keyword_, GURL(template_url_->url()),
|
| - &existing_url)) {
|
| - if (existing_url)
|
| - model->Remove(existing_url);
|
| - } else if (provider_type_ == AUTODETECTED_PROVIDER) {
|
| + if (!model->CanAddAutogeneratedKeyword(keyword_, GURL(template_url_->url()),
|
| + &existing_url)) {
|
| fetcher_->RequestCompleted(this); // WARNING: Deletes us!
|
| return;
|
| }
|
|
|
| + if (existing_url)
|
| + model->Remove(existing_url);
|
| +
|
| // The short name is what is shown to the user. We preserve original names
|
| // since it is better when generated keyword in many cases.
|
| TemplateURLData data(template_url_->data());
|
| @@ -177,27 +166,9 @@ void TemplateURLFetcher::RequestDelegate::AddSearchProvider() {
|
| if (!data.favicon_url.is_valid())
|
| data.favicon_url = favicon_url_;
|
|
|
| - switch (provider_type_) {
|
| - case AUTODETECTED_PROVIDER:
|
| - // Mark the keyword as replaceable so it can be removed if necessary.
|
| - data.safe_for_autoreplace = true;
|
| - model->Add(new TemplateURL(data));
|
| - break;
|
| -
|
| - case EXPLICIT_PROVIDER:
|
| - // Confirm addition and allow user to edit default choices. It's ironic
|
| - // that only *non*-autodetected additions get confirmed, but the user
|
| - // expects feedback that his action did something.
|
| - // The source WebContents' delegate takes care of adding the URL to the
|
| - // model, which takes ownership, or of deleting it if the add is
|
| - // cancelled.
|
| - confirm_add_callback_.Run(base::WrapUnique(new TemplateURL(data)));
|
| - break;
|
| -
|
| - default:
|
| - NOTREACHED();
|
| - break;
|
| - }
|
| + // Mark the keyword as replaceable so it can be removed if necessary.
|
| + data.safe_for_autoreplace = true;
|
| + model->Add(new TemplateURL(data));
|
|
|
| fetcher_->RequestCompleted(this);
|
| // WARNING: RequestCompleted deletes us.
|
| @@ -219,42 +190,31 @@ void TemplateURLFetcher::ScheduleDownload(
|
| const base::string16& keyword,
|
| const GURL& osdd_url,
|
| const GURL& favicon_url,
|
| - const URLFetcherCustomizeCallback& url_fetcher_customize_callback,
|
| - const ConfirmAddSearchProviderCallback& confirm_add_callback,
|
| - ProviderType provider_type) {
|
| + const URLFetcherCustomizeCallback& url_fetcher_customize_callback) {
|
| DCHECK(osdd_url.is_valid());
|
| + DCHECK(!keyword.empty());
|
|
|
| - // For a JS-added OSDD, the provided keyword is irrelevant because we will
|
| - // generate a keyword later from the OSDD content. For the autodetected case,
|
| - // we need a valid keyword up front.
|
| - if (provider_type == TemplateURLFetcher::AUTODETECTED_PROVIDER) {
|
| - DCHECK(!keyword.empty());
|
| -
|
| - if (!template_url_service_->loaded()) {
|
| - // We could try to set up a callback to this function again once the model
|
| - // is loaded but since this is an auto-add case anyway, meh.
|
| - template_url_service_->Load();
|
| - return;
|
| - }
|
| -
|
| - const TemplateURL* template_url =
|
| - template_url_service_->GetTemplateURLForKeyword(keyword);
|
| - if (template_url && (!template_url->safe_for_autoreplace() ||
|
| - template_url->originating_url() == osdd_url))
|
| - return;
|
| + if (!template_url_service_->loaded()) {
|
| + // We could try to set up a callback to this function again once the model
|
| + // is loaded but meh.
|
| + template_url_service_->Load();
|
| + return;
|
| }
|
|
|
| + const TemplateURL* template_url =
|
| + template_url_service_->GetTemplateURLForKeyword(keyword);
|
| + if (template_url && (!template_url->safe_for_autoreplace() ||
|
| + template_url->originating_url() == osdd_url))
|
| + return;
|
| +
|
| // Make sure we aren't already downloading this request.
|
| for (Requests::iterator i = requests_.begin(); i != requests_.end(); ++i) {
|
| - if (((*i)->url() == osdd_url) ||
|
| - ((provider_type == TemplateURLFetcher::AUTODETECTED_PROVIDER) &&
|
| - ((*i)->keyword() == keyword)))
|
| + if (((*i)->url() == osdd_url) || ((*i)->keyword() == keyword))
|
| return;
|
| }
|
|
|
| requests_.push_back(new RequestDelegate(
|
| - this, keyword, osdd_url, favicon_url, url_fetcher_customize_callback,
|
| - confirm_add_callback, provider_type));
|
| + this, keyword, osdd_url, favicon_url, url_fetcher_customize_callback));
|
| }
|
|
|
| void TemplateURLFetcher::RequestCompleted(RequestDelegate* request) {
|
|
|