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

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

Issue 225093019: Zoom Extension API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 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 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();
}

Powered by Google App Engine
This is Rietveld 408576698