Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1161)

Unified Diff: chrome/browser/ui/zoom/zoom_controller.cc

Issue 12039058: content: convert zoom notifications to observer usage (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: callbacks Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 24b33baad649d27d4287532503a79d6d1ad08c83..30271498e29e1e56d36e43c13fa188addf0d37fd 100644
--- a/chrome/browser/ui/zoom/zoom_controller.cc
+++ b/chrome/browser/ui/zoom/zoom_controller.cc
@@ -32,15 +32,23 @@ 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(
+ web_contents->GetBrowserContext())->AddZoomLevelChangedCallback(
+ base::Bind(&ZoomController::OnZoomLevelChanged,
+ base::Unretained(this)));
UpdateState(std::string());
}
-ZoomController::~ZoomController() {}
+ZoomController::~ZoomController() {
+ if (!web_contents())
+ return;
+
+ content::HostZoomMap::GetForBrowserContext(
+ web_contents()->GetBrowserContext())->RemoveZoomLevelChangedCallback(
+ base::Bind(&ZoomController::OnZoomLevelChanged,
+ base::Unretained(this)));
jam 2013/01/30 17:50:44 this doesn't work because the new callback you cre
+}
bool ZoomController::IsAtDefaultZoom() const {
if (!web_contents())
@@ -59,6 +67,10 @@ int ZoomController::GetResourceForZoomLevel() const {
return zoom > default_zoom_level_.GetValue() ? IDR_ZOOM_PLUS : IDR_ZOOM_MINUS;
}
+void ZoomController::OnZoomLevelChanged(const std::string& host) {
+ UpdateState(host);
+}
+
void ZoomController::DidNavigateMainFrame(
const content::LoadCommittedDetails& details,
const content::FrameNavigateParams& params) {
@@ -67,13 +79,6 @@ 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::UpdateState(const std::string& host) {
// TODO(dbeam): I'm not totally sure why this is happening, and there's been a
// bit of effort to understand with no tangible results yet. It's possible

Powered by Google App Engine
This is Rietveld 408576698