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

Unified Diff: chrome/browser/extensions/api/tabs/tabs_event_router.cc

Issue 301733006: Zoom Extension API (chrome) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix javascript test function signature. Created 6 years, 5 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/extensions/api/tabs/tabs_event_router.cc
diff --git a/chrome/browser/extensions/api/tabs/tabs_event_router.cc b/chrome/browser/extensions/api/tabs/tabs_event_router.cc
index 4e93b4060ddfa55a858668828c5b4f6b45987495..1656c938404633d785283cb9de7321eefa6b4edf 100644
--- a/chrome/browser/extensions/api/tabs/tabs_event_router.cc
+++ b/chrome/browser/extensions/api/tabs/tabs_event_router.cc
@@ -148,6 +148,8 @@ void TabsEventRouter::RegisterForTabNotifications(WebContents* contents) {
registrar_.Add(this, chrome::NOTIFICATION_FAVICON_UPDATED,
content::Source<WebContents>(contents));
+
+ ZoomController::FromWebContents(contents)->AddObserver(this);
}
void TabsEventRouter::UnregisterForTabNotifications(WebContents* contents) {
@@ -157,6 +159,8 @@ void TabsEventRouter::UnregisterForTabNotifications(WebContents* contents) {
content::Source<WebContents>(contents));
registrar_.Remove(this, chrome::NOTIFICATION_FAVICON_UPDATED,
content::Source<WebContents>(contents));
+
+ ZoomController::FromWebContents(contents)->RemoveObserver(this);
}
void TabsEventRouter::OnBrowserRemoved(Browser* browser) {
@@ -552,4 +556,30 @@ void TabsEventRouter::TabPinnedStateChanged(WebContents* contents, int index) {
}
}
+void TabsEventRouter::OnZoomChanged(
+ const ZoomController::ZoomChangedEventData& data) {
+ DCHECK(data.web_contents);
+ int tab_id = ExtensionTabUtil::GetTabId(data.web_contents);
+ if (tab_id < 0)
+ return;
+
+ // Prepare the zoom change information.
+ api::tabs::OnZoomChange::ZoomChangeInfo zoom_change_info;
+ zoom_change_info.tab_id = tab_id;
+ zoom_change_info.old_zoom_factor =
+ content::ZoomLevelToZoomFactor(data.old_zoom_level);
+ zoom_change_info.new_zoom_factor =
+ content::ZoomLevelToZoomFactor(data.new_zoom_level);
+ ZoomModeToZoomSettings(data.zoom_mode,
+ &zoom_change_info.zoom_settings);
+
+ // Dispatch the |onZoomChange| event.
+ Profile* profile = Profile::FromBrowserContext(
+ data.web_contents->GetBrowserContext());
+ DispatchEvent(profile,
+ tabs::OnZoomChange::kEventName,
+ api::tabs::OnZoomChange::Create(zoom_change_info),
+ EventRouter::USER_GESTURE_UNKNOWN);
+}
+
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698