summaryrefslogtreecommitdiffstats
path: root/components/ui/zoom
diff options
context:
space:
mode:
Diffstat (limited to 'components/ui/zoom')
-rw-r--r--components/ui/zoom/BUILD.gn1
-rw-r--r--components/ui/zoom/zoom_event_manager.cc16
-rw-r--r--components/ui/zoom/zoom_event_manager.h14
-rw-r--r--components/ui/zoom/zoom_event_manager_observer.h23
4 files changed, 54 insertions, 0 deletions
diff --git a/components/ui/zoom/BUILD.gn b/components/ui/zoom/BUILD.gn
index a3958b8..8774b0d 100644
--- a/components/ui/zoom/BUILD.gn
+++ b/components/ui/zoom/BUILD.gn
@@ -12,6 +12,7 @@ static_library("ui_zoom") {
"zoom_controller.h",
"zoom_event_manager.cc",
"zoom_event_manager.h",
+ "zoom_event_manager_observer.h",
"zoom_observer.h",
]
diff --git a/components/ui/zoom/zoom_event_manager.cc b/components/ui/zoom/zoom_event_manager.cc
index 7290627..f841123 100644
--- a/components/ui/zoom/zoom_event_manager.cc
+++ b/components/ui/zoom/zoom_event_manager.cc
@@ -4,6 +4,7 @@
#include "components/ui/zoom/zoom_event_manager.h"
+#include "components/ui/zoom/zoom_event_manager_observer.h"
#include "content/public/browser/browser_context.h"
namespace {
@@ -37,4 +38,19 @@ ZoomEventManager::AddZoomLevelChangedCallback(
return zoom_level_changed_callbacks_.Add(callback);
}
+void ZoomEventManager::OnDefaultZoomLevelChanged() {
+ FOR_EACH_OBSERVER(ZoomEventManagerObserver, observers_,
+ OnDefaultZoomLevelChanged());
+}
+
+void ZoomEventManager::AddZoomEventManagerObserver(
+ ZoomEventManagerObserver* observer) {
+ observers_.AddObserver(observer);
+}
+
+void ZoomEventManager::RemoveZoomEventManagerObserver(
+ ZoomEventManagerObserver* observer) {
+ observers_.RemoveObserver(observer);
+}
+
} // namespace ui_zoom
diff --git a/components/ui/zoom/zoom_event_manager.h b/components/ui/zoom/zoom_event_manager.h
index 3f0fcf0..72d335d 100644
--- a/components/ui/zoom/zoom_event_manager.h
+++ b/components/ui/zoom/zoom_event_manager.h
@@ -7,6 +7,7 @@
#include "base/callback_list.h"
#include "base/memory/weak_ptr.h"
+#include "base/observer_list.h"
#include "base/supports_user_data.h"
#include "content/public/browser/host_zoom_map.h"
@@ -16,6 +17,8 @@ class BrowserContext;
namespace ui_zoom {
+class ZoomEventManagerObserver;
+
// This class serves as a target for event notifications from all ZoomController
// objects. Classes that need to know about browser-specific zoom events (e.g.
// manual-mode zoom) should subscribe here.
@@ -34,9 +37,19 @@ class ZoomEventManager : public base::SupportsUserData::Data {
void OnZoomLevelChanged(const content::HostZoomMap::ZoomLevelChange& change);
// Add and remove zoom level changed callbacks.
+ // TODO(wjmaclean): Convert this callback mechanism to use
+ // ZoomEventManagerObserver instead.
scoped_ptr<content::HostZoomMap::Subscription> AddZoomLevelChangedCallback(
const content::HostZoomMap::ZoomLevelChangedCallback& callback);
+ // Called by ZoomLevelDelegates when changes are made to the default zoom
+ // level for their associated HostZoomMap.
+ void OnDefaultZoomLevelChanged();
+
+ // Add and remove observers.
+ void AddZoomEventManagerObserver(ZoomEventManagerObserver* observer);
+ void RemoveZoomEventManagerObserver(ZoomEventManagerObserver* observer);
+
// Get a weak ptr to be used by clients who may themselves be UserData for
// the context, since the order of destruction is undefined between the client
// and this class.
@@ -47,6 +60,7 @@ class ZoomEventManager : public base::SupportsUserData::Data {
private:
base::CallbackList<void(const content::HostZoomMap::ZoomLevelChange&)>
zoom_level_changed_callbacks_;
+ ObserverList<ZoomEventManagerObserver> observers_;
base::WeakPtrFactory<ZoomEventManager> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(ZoomEventManager);
diff --git a/components/ui/zoom/zoom_event_manager_observer.h b/components/ui/zoom/zoom_event_manager_observer.h
new file mode 100644
index 0000000..f3afedc
--- /dev/null
+++ b/components/ui/zoom/zoom_event_manager_observer.h
@@ -0,0 +1,23 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_UI_ZOOM_ZOOM_EVENT_MANAGER_OBSERVER_H_
+#define COMPONENTS_UI_ZOOM_ZOOM_EVENT_MANAGER_OBSERVER_H_
+
+namespace ui_zoom {
+
+class ZoomEventManagerObserver {
+ public:
+ // TODO(wjmaclean): convert existing ZoomLevelChangedCallbacks to be
+ // observers.
+ virtual void OnZoomLevelChanged() {}
+ virtual void OnDefaultZoomLevelChanged() {}
+
+ protected:
+ virtual ~ZoomEventManagerObserver() {}
+};
+
+} // namespace ui_zoom
+
+#endif // COMPONENTS_UI_ZOOM_ZOOM_EVENT_MANAGER_OBSERVER_H_