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..beb0d3a07d9c4b017e86feb5dd5fbadb3cc47f00 100644 |
--- a/chrome/browser/extensions/api/tabs/tabs_event_router.cc |
+++ b/chrome/browser/extensions/api/tabs/tabs_event_router.cc |
@@ -552,4 +552,33 @@ void TabsEventRouter::TabPinnedStateChanged(WebContents* contents, int index) { |
} |
} |
+void TabsEventRouter::OnZoomChangeInitiated( |
+ content::WebContents* web_contents, |
+ double old_zoom_level, |
+ double new_zoom_level, |
+ ZoomController::ZoomMode zoom_mode) { |
+ DCHECK(web_contents); |
+ int tab_id = ExtensionTabUtil::GetTabId(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(old_zoom_level); |
+ zoom_change_info.new_zoom_factor = |
+ content::ZoomLevelToZoomFactor(new_zoom_level); |
+ ZoomModeToZoomSettings(zoom_mode, |
+ &zoom_change_info.zoom_settings); |
+ |
+ // Dispatch the |onZoomChange| event. |
+ Profile* profile = Profile::FromBrowserContext( |
+ web_contents->GetBrowserContext()); |
+ DispatchEvent(profile, |
+ tabs::OnZoomChange::kEventName, |
+ api::tabs::OnZoomChange::Create(zoom_change_info), |
+ EventRouter::USER_GESTURE_UNKNOWN); |
+} |
+ |
} // namespace extensions |