| 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..d9899411a4cd8c06e485220acd5d3cc9549d86ea 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 OnZoomChangedEventData& 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
|
|
|