| Index: chrome/browser/search_engines/template_url_fetcher.cc
|
| diff --git a/chrome/browser/search_engines/template_url_fetcher.cc b/chrome/browser/search_engines/template_url_fetcher.cc
|
| index a891ae0b52f422ea8ba488f96b5a470dbc4ebed1..0d5a00abf598c308325572e6d85032178214776e 100644
|
| --- a/chrome/browser/search_engines/template_url_fetcher.cc
|
| +++ b/chrome/browser/search_engines/template_url_fetcher.cc
|
| @@ -8,11 +8,7 @@
|
|
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| -#include "chrome/browser/profiles/profile.h"
|
| -#include "chrome/browser/search_engines/template_url_fetcher_callbacks.h"
|
| #include "chrome/browser/search_engines/template_url_parser.h"
|
| -#include "chrome/browser/search_engines/template_url_service_factory.h"
|
| -#include "chrome/browser/search_engines/ui_thread_search_terms_data.h"
|
| #include "components/search_engines/template_url.h"
|
| #include "components/search_engines/template_url_service.h"
|
| #include "content/public/browser/render_frame_host.h"
|
| @@ -22,6 +18,7 @@
|
| #include "net/base/load_flags.h"
|
| #include "net/url_request/url_fetcher.h"
|
| #include "net/url_request/url_fetcher_delegate.h"
|
| +#include "net/url_request/url_request_context_getter.h"
|
| #include "net/url_request/url_request_status.h"
|
|
|
| // RequestDelegate ------------------------------------------------------------
|
| @@ -33,7 +30,7 @@ class TemplateURLFetcher::RequestDelegate : public net::URLFetcherDelegate {
|
| const GURL& osdd_url,
|
| const GURL& favicon_url,
|
| content::WebContents* web_contents,
|
| - TemplateURLFetcherCallbacks* callbacks,
|
| + const ConfirmAddSearchProviderCallback& callback,
|
| ProviderType provider_type);
|
|
|
| // net::URLFetcherDelegate:
|
| @@ -61,7 +58,7 @@ class TemplateURLFetcher::RequestDelegate : public net::URLFetcherDelegate {
|
| const GURL osdd_url_;
|
| const GURL favicon_url_;
|
| const ProviderType provider_type_;
|
| - scoped_ptr<TemplateURLFetcherCallbacks> callbacks_;
|
| + ConfirmAddSearchProviderCallback callback_;
|
|
|
| scoped_ptr<TemplateURLService::Subscription> template_url_subscription_;
|
|
|
| @@ -74,7 +71,7 @@ TemplateURLFetcher::RequestDelegate::RequestDelegate(
|
| const GURL& osdd_url,
|
| const GURL& favicon_url,
|
| content::WebContents* web_contents,
|
| - TemplateURLFetcherCallbacks* callbacks,
|
| + const ConfirmAddSearchProviderCallback& callback,
|
| ProviderType provider_type)
|
| : url_fetcher_(net::URLFetcher::Create(
|
| osdd_url, net::URLFetcher::GET, this)),
|
| @@ -83,9 +80,8 @@ TemplateURLFetcher::RequestDelegate::RequestDelegate(
|
| osdd_url_(osdd_url),
|
| favicon_url_(favicon_url),
|
| provider_type_(provider_type),
|
| - callbacks_(callbacks) {
|
| - TemplateURLService* model = TemplateURLServiceFactory::GetForProfile(
|
| - fetcher_->profile());
|
| + callback_(callback) {
|
| + TemplateURLService* model = fetcher_->template_url_service_;
|
| DCHECK(model); // TemplateURLFetcher::ScheduleDownload verifies this.
|
|
|
| if (!model->loaded()) {
|
| @@ -96,7 +92,7 @@ TemplateURLFetcher::RequestDelegate::RequestDelegate(
|
| model->Load();
|
| }
|
|
|
| - url_fetcher_->SetRequestContext(fetcher->profile()->GetRequestContext());
|
| + url_fetcher_->SetRequestContext(fetcher->request_context_.get());
|
| // Can be NULL during tests.
|
| if (web_contents) {
|
| content::AssociateURLFetcherWithRenderFrame(
|
| @@ -135,11 +131,12 @@ void TemplateURLFetcher::RequestDelegate::OnURLFetchComplete(
|
| return;
|
| }
|
|
|
| - template_url_.reset(TemplateURLParser::Parse(fetcher_->profile(), false,
|
| + template_url_.reset(TemplateURLParser::Parse(
|
| + fetcher_->template_url_service_->search_terms_data(), false,
|
| data.data(), data.length(), NULL));
|
| if (!template_url_.get() ||
|
| !template_url_->url_ref().SupportsReplacement(
|
| - UIThreadSearchTermsData(fetcher_->profile()))) {
|
| + fetcher_->template_url_service_->search_terms_data())) {
|
| fetcher_->RequestCompleted(this);
|
| // WARNING: RequestCompleted deletes us.
|
| return;
|
| @@ -156,9 +153,7 @@ void TemplateURLFetcher::RequestDelegate::OnURLFetchComplete(
|
| }
|
|
|
| // Wait for the model to be loaded before adding the provider.
|
| - TemplateURLService* model = TemplateURLServiceFactory::GetForProfile(
|
| - fetcher_->profile());
|
| - if (!model->loaded())
|
| + if (!fetcher_->template_url_service_->loaded())
|
| return;
|
| AddSearchProvider();
|
| // WARNING: AddSearchProvider deletes us.
|
| @@ -167,8 +162,7 @@ void TemplateURLFetcher::RequestDelegate::OnURLFetchComplete(
|
| void TemplateURLFetcher::RequestDelegate::AddSearchProvider() {
|
| DCHECK(template_url_.get());
|
| DCHECK(!keyword_.empty());
|
| - Profile* profile = fetcher_->profile();
|
| - TemplateURLService* model = TemplateURLServiceFactory::GetForProfile(profile);
|
| + TemplateURLService* model = fetcher_->template_url_service_;
|
| DCHECK(model);
|
| DCHECK(model->loaded());
|
|
|
| @@ -206,7 +200,7 @@ void TemplateURLFetcher::RequestDelegate::AddSearchProvider() {
|
| // 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.
|
| - callbacks_->ConfirmAddSearchProvider(new TemplateURL(data), profile);
|
| + callback_.Run(make_scoped_ptr(new TemplateURL(data)));
|
| break;
|
|
|
| default:
|
| @@ -220,8 +214,11 @@ void TemplateURLFetcher::RequestDelegate::AddSearchProvider() {
|
|
|
| // TemplateURLFetcher ---------------------------------------------------------
|
|
|
| -TemplateURLFetcher::TemplateURLFetcher(Profile* profile) : profile_(profile) {
|
| - DCHECK(profile_);
|
| +TemplateURLFetcher::TemplateURLFetcher(
|
| + TemplateURLService* template_url_service,
|
| + net::URLRequestContextGetter* request_context)
|
| + : template_url_service_(template_url_service),
|
| + request_context_(request_context) {
|
| }
|
|
|
| TemplateURLFetcher::~TemplateURLFetcher() {
|
| @@ -232,15 +229,9 @@ void TemplateURLFetcher::ScheduleDownload(
|
| const GURL& osdd_url,
|
| const GURL& favicon_url,
|
| content::WebContents* web_contents,
|
| - TemplateURLFetcherCallbacks* callbacks,
|
| + const ConfirmAddSearchProviderCallback& callback,
|
| ProviderType provider_type) {
|
| DCHECK(osdd_url.is_valid());
|
| - scoped_ptr<TemplateURLFetcherCallbacks> owned_callbacks(callbacks);
|
| -
|
| - TemplateURLService* url_model =
|
| - TemplateURLServiceFactory::GetForProfile(profile());
|
| - if (!url_model)
|
| - return;
|
|
|
| // 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,
|
| @@ -248,15 +239,15 @@ void TemplateURLFetcher::ScheduleDownload(
|
| if (provider_type == TemplateURLFetcher::AUTODETECTED_PROVIDER) {
|
| DCHECK(!keyword.empty());
|
|
|
| - if (!url_model->loaded()) {
|
| + 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.
|
| - url_model->Load();
|
| + template_url_service_->Load();
|
| return;
|
| }
|
|
|
| const TemplateURL* template_url =
|
| - url_model->GetTemplateURLForKeyword(keyword);
|
| + template_url_service_->GetTemplateURLForKeyword(keyword);
|
| if (template_url && (!template_url->safe_for_autoreplace() ||
|
| template_url->originating_url() == osdd_url))
|
| return;
|
| @@ -272,7 +263,7 @@ void TemplateURLFetcher::ScheduleDownload(
|
|
|
| requests_.push_back(
|
| new RequestDelegate(this, keyword, osdd_url, favicon_url, web_contents,
|
| - owned_callbacks.release(), provider_type));
|
| + callback, provider_type));
|
| }
|
|
|
| void TemplateURLFetcher::RequestCompleted(RequestDelegate* request) {
|
|
|