Chromium Code Reviews| 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 edf2fb31aef8055e3fd6dae9e0625f268a2687da..21c033c8e4021874aa97d8ed73b96499a4f6003f 100644 |
| --- a/chrome/browser/extensions/api/tabs/tabs_event_router.cc |
| +++ b/chrome/browser/extensions/api/tabs/tabs_event_router.cc |
| @@ -149,6 +149,9 @@ void TabsEventRouter::RegisterForTabNotifications(WebContents* contents) { |
| registrar_.Add(this, chrome::NOTIFICATION_FAVICON_UPDATED, |
| content::Source<WebContents>(contents)); |
| + |
| + registrar_.Add(this, content::NOTIFICATION_WEB_CONTENTS_ZOOM_CHANGE, |
| + content::Source<WebContents>(contents)); |
| } |
| void TabsEventRouter::UnregisterForTabNotifications(WebContents* contents) { |
| @@ -158,6 +161,8 @@ void TabsEventRouter::UnregisterForTabNotifications(WebContents* contents) { |
| content::Source<WebContents>(contents)); |
| registrar_.Remove(this, chrome::NOTIFICATION_FAVICON_UPDATED, |
| content::Source<WebContents>(contents)); |
| + registrar_.Remove(this, content::NOTIFICATION_WEB_CONTENTS_ZOOM_CHANGE, |
| + content::Source<WebContents>(contents)); |
| } |
| void TabsEventRouter::OnBrowserRemoved(Browser* browser) { |
| @@ -473,6 +478,27 @@ void TabsEventRouter::DispatchTabUpdatedEvent( |
| ExtensionSystem::Get(profile)->event_router()->BroadcastEvent(event.Pass()); |
| } |
| +void TabsEventRouter::DispatchTabZoomChangeEvent( |
| + WebContents* contents, |
| + double old_zoom_factor, |
| + double new_zoom_factor, |
| + base::DictionaryValue* zoom_settings) { |
| + DCHECK(contents); |
| + scoped_ptr<base::ListValue> args(new base::ListValue); |
| + int tab_id = ExtensionTabUtil::GetTabId(contents); |
| + if (tab_id >= 0) { |
|
Fady Samuel
2014/04/07 20:01:14
Early exist preferred.
if (tab_id < 0)
return;
paulmeyer
2014/04/07 20:56:10
Done.
|
| + args->AppendInteger(tab_id); |
| + args->AppendDouble(old_zoom_factor); |
| + args->AppendDouble(new_zoom_factor); |
| + args->Append(zoom_settings); |
| + |
| + Profile* profile = Profile::FromBrowserContext( |
| + contents->GetBrowserContext()); |
| + DispatchEvent(profile, tabs::OnZoomChange::kEventName, args.Pass(), |
| + EventRouter::USER_GESTURE_UNKNOWN); |
| + } |
| +} |
| + |
| TabsEventRouter::TabEntry* TabsEventRouter::GetTabEntry( |
| const WebContents* contents) { |
| int tab_id = ExtensionTabUtil::GetTabId(contents); |
| @@ -502,6 +528,17 @@ void TabsEventRouter::Observe(int type, |
| bool icon_url_changed = *content::Details<bool>(details).ptr(); |
| if (icon_url_changed) |
| FaviconUrlUpdated(content::Source<WebContents>(source).ptr()); |
| + } else if (type == content::NOTIFICATION_WEB_CONTENTS_ZOOM_CHANGE) { |
| + content::ZoomChangeDetails zoom_change_details = |
| + *content::Details<content::ZoomChangeDetails>(details).ptr(); |
| + double old_zoom_factor = |
| + content::ZoomLevelToZoomFactor(zoom_change_details.old_zoom_level); |
| + double new_zoom_factor = |
| + content::ZoomLevelToZoomFactor(zoom_change_details.new_zoom_level); |
| + base::DictionaryValue* zoom_settings = new base::DictionaryValue(); |
| + ZoomModeToZoomSettings(zoom_change_details.zoom_mode, zoom_settings); |
| + DispatchTabZoomChangeEvent(content::Source<WebContents>(source).ptr(), |
| + old_zoom_factor, new_zoom_factor, zoom_settings); |
| } else { |
| NOTREACHED(); |
| } |