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) { |