Index: chrome/browser/ui/zoom/zoom_controller.cc |
diff --git a/chrome/browser/ui/zoom/zoom_controller.cc b/chrome/browser/ui/zoom/zoom_controller.cc |
index d17864f3c4758e4551f5ac10a607211109dee2a2..4b9c041b49d58a97d254504e8daf0ce69cabea79 100644 |
--- a/chrome/browser/ui/zoom/zoom_controller.cc |
+++ b/chrome/browser/ui/zoom/zoom_controller.cc |
@@ -24,7 +24,10 @@ DEFINE_WEB_CONTENTS_USER_DATA_KEY(ZoomController); |
ZoomController::ZoomController(content::WebContents* web_contents) |
: content::WebContentsObserver(web_contents), |
zoom_percent_(100), |
- observer_(NULL) { |
+ observer_(NULL), |
+ browser_context_(web_contents->GetBrowserContext()), |
+ zoom_callback_(base::Bind(&ZoomController::OnZoomLevelChanged, |
+ base::Unretained(this))) { |
Profile* profile = |
Profile::FromBrowserContext(web_contents->GetBrowserContext()); |
default_zoom_level_.Init(prefs::kDefaultZoomLevel, profile->GetPrefs(), |
@@ -32,15 +35,18 @@ ZoomController::ZoomController(content::WebContents* web_contents) |
base::Unretained(this), |
std::string())); |
- content::HostZoomMap* zoom_map = |
- content::HostZoomMap::GetForBrowserContext(profile); |
- registrar_.Add(this, content::NOTIFICATION_ZOOM_LEVEL_CHANGED, |
- content::Source<content::HostZoomMap>(zoom_map)); |
+ content::HostZoomMap::GetForBrowserContext( |
+ browser_context_)->AddZoomLevelChangedCallback( |
+ zoom_callback_); |
UpdateState(std::string()); |
} |
-ZoomController::~ZoomController() {} |
+ZoomController::~ZoomController() { |
+ content::HostZoomMap::GetForBrowserContext( |
+ browser_context_)->RemoveZoomLevelChangedCallback( |
+ zoom_callback_); |
+} |
bool ZoomController::IsAtDefaultZoom() const { |
return content::ZoomValuesEqual(web_contents()->GetZoomLevel(), |
@@ -61,11 +67,8 @@ void ZoomController::DidNavigateMainFrame( |
UpdateState(std::string()); |
} |
-void ZoomController::Observe(int type, |
- const content::NotificationSource& source, |
- const content::NotificationDetails& details) { |
- DCHECK_EQ(content::NOTIFICATION_ZOOM_LEVEL_CHANGED, type); |
- UpdateState(*content::Details<std::string>(details).ptr()); |
+void ZoomController::OnZoomLevelChanged(const std::string& host) { |
+ UpdateState(host); |
} |
void ZoomController::UpdateState(const std::string& host) { |