Chromium Code Reviews| Index: chrome/browser/search_engines/search_provider_install_data.cc |
| diff --git a/chrome/browser/search_engines/search_provider_install_data.cc b/chrome/browser/search_engines/search_provider_install_data.cc |
| index 95d5a77a0d7b84e77a60bdb67d3c6f70f2d2f22a..2c5655eb49c1ae8f312888a9517edb2348297abc 100644 |
| --- a/chrome/browser/search_engines/search_provider_install_data.cc |
| +++ b/chrome/browser/search_engines/search_provider_install_data.cc |
| @@ -16,6 +16,7 @@ |
| #include "base/sequenced_task_runner_helpers.h" |
| #include "chrome/browser/chrome_notification_types.h" |
| #include "chrome/browser/google/google_url_tracker.h" |
| +#include "chrome/browser/google/google_url_tracker_factory.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/search_engines/search_host_to_urls_map.h" |
| #include "chrome/browser/search_engines/search_terms_data.h" |
| @@ -25,10 +26,6 @@ |
| #include "chrome/browser/search_engines/util.h" |
| #include "chrome/browser/webdata/web_data_service.h" |
| #include "content/public/browser/browser_thread.h" |
| -#include "content/public/browser/notification_observer.h" |
| -#include "content/public/browser/notification_registrar.h" |
| -#include "content/public/browser/notification_service.h" |
| -#include "content/public/browser/notification_source.h" |
| #include "content/public/browser/render_process_host.h" |
| #include "content/public/browser/render_process_host_observer.h" |
| @@ -122,17 +119,14 @@ void GoogleURLChangeNotifier::OnChange(const std::string& google_base_url) { |
| // Notices changes in the Google base URL and sends them along |
| // to the SearchProviderInstallData on the I/O thread. |
| -class GoogleURLObserver : public content::NotificationObserver, |
| - public content::RenderProcessHostObserver { |
| +class GoogleURLObserver : public content::RenderProcessHostObserver { |
| public: |
| GoogleURLObserver(Profile* profile, |
| GoogleURLChangeNotifier* change_notifier, |
| content::RenderProcessHost* host); |
| - // Implementation of content::NotificationObserver. |
| - virtual void Observe(int type, |
| - const content::NotificationSource& source, |
| - const content::NotificationDetails& details) OVERRIDE; |
| + // Callback that is called when the Google URL is updated. |
| + void OnGoogleURLUpdated(GURL old_url, GURL new_url); |
|
Peter Kasting
2014/05/15 21:12:52
Both this function and the TemplateURLService one
blundell
2014/05/16 09:09:55
Done.
|
| // Implementation of content::RenderProcessHostObserver. |
| virtual void RenderProcessHostDestroyed( |
| @@ -142,7 +136,9 @@ class GoogleURLObserver : public content::NotificationObserver, |
| virtual ~GoogleURLObserver() {} |
| scoped_refptr<GoogleURLChangeNotifier> change_notifier_; |
| - content::NotificationRegistrar registrar_; |
| + |
| + scoped_ptr<base::CallbackList<void(GURL, GURL)>::Subscription> |
| + google_url_updated_subscription_; |
| DISALLOW_COPY_AND_ASSIGN(GoogleURLObserver); |
| }; |
| @@ -153,21 +149,22 @@ GoogleURLObserver::GoogleURLObserver( |
| content::RenderProcessHost* host) |
| : change_notifier_(change_notifier) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| - registrar_.Add(this, chrome::NOTIFICATION_GOOGLE_URL_UPDATED, |
| - content::Source<Profile>(profile->GetOriginalProfile())); |
| + GoogleURLTracker* google_url_tracker = |
| + GoogleURLTrackerFactory::GetForProfile(profile); |
| + if (google_url_tracker) { |
|
Peter Kasting
2014/05/15 21:12:52
Will this ever actually be NULL? Perhaps in tests
blundell
2014/05/16 09:09:55
In tests, yep.
On 2014/05/15 21:12:52, Peter Kast
Peter Kasting
2014/05/16 22:24:23
Can you add a comment to that effect?
blundell
2014/05/17 11:32:53
Done.
|
| + google_url_updated_subscription_ = |
| + google_url_tracker->RegisterCallback(base::Bind( |
| + &GoogleURLObserver::OnGoogleURLUpdated, base::Unretained(this))); |
| + } |
| host->AddObserver(this); |
| } |
| -void GoogleURLObserver::Observe(int type, |
| - const content::NotificationSource& source, |
| - const content::NotificationDetails& details) { |
| - DCHECK_EQ(chrome::NOTIFICATION_GOOGLE_URL_UPDATED, type); |
| - BrowserThread::PostTask( |
| - BrowserThread::IO, FROM_HERE, |
| - base::Bind(&GoogleURLChangeNotifier::OnChange, |
| - change_notifier_.get(), |
| - content::Details<GoogleURLTracker::UpdatedDetails>(details)-> |
| - second.spec())); |
| +void GoogleURLObserver::OnGoogleURLUpdated(GURL old_url, GURL new_url) { |
| + BrowserThread::PostTask(BrowserThread::IO, |
| + FROM_HERE, |
| + base::Bind(&GoogleURLChangeNotifier::OnChange, |
| + change_notifier_.get(), |
| + new_url.spec())); |
| } |
| void GoogleURLObserver::RenderProcessHostDestroyed( |