Plumb default zoom level change events to zoom icon in location bar.

At present, a change in the default zoom level does not immediately
update the zoom icon in the location bar. E.g. if we change the zoom
level of chrome://settings to 90% (causing the zoom icon to display a
'-' symbol), then change the default zoom level to be 75%, the icon
should switch to show '+'.

This CL adds an event subscription to the ZoomEventManager in order
to receive notifications about default zoom level changes.

BUG=451349

Review URL: https://codereview.chromium.org/897513003

Cr-Commit-Position: refs/heads/master@{#314568}
diff --git a/components/ui/zoom/zoom_event_manager.cc b/components/ui/zoom/zoom_event_manager.cc
index 72906271..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 @@
   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