diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-26 19:57:52 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-26 19:57:52 +0000 |
commit | b03794d3a1bb536655207d73a78f115e3722893d (patch) | |
tree | 5d068db8f7e9bf9668c5c9efb145ed7737637238 /chrome/renderer | |
parent | 0b48014c5105ebe720a6eb50e0cb764d3b4aa8f9 (diff) | |
download | chromium_src-b03794d3a1bb536655207d73a78f115e3722893d.zip chromium_src-b03794d3a1bb536655207d73a78f115e3722893d.tar.gz chromium_src-b03794d3a1bb536655207d73a78f115e3722893d.tar.bz2 |
Add zooming notifications to Pepper. This allows the plugin to respond to full page zooms without hardcoding the shortcuts for each platform/browser and allows the menus to work.
Review URL: http://codereview.chromium.org/1320007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42799 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/render_view.cc | 18 | ||||
-rw-r--r-- | chrome/renderer/webplugin_delegate_pepper.cc | 7 | ||||
-rw-r--r-- | chrome/renderer/webplugin_delegate_pepper.h | 1 |
3 files changed, 26 insertions, 0 deletions
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index f9f875d..7c0882b 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -3453,6 +3453,24 @@ void RenderView::OnZoom(PageZoom::Function function) { if (!webview()) // Not sure if this can happen, but no harm in being safe. return; + // Should we be saving zoom levels for plugins? It's not clear, so for now + // don't. + if (webview()->mainFrame()->document().isPluginDocument()) { + webkit_glue::WebPluginDelegate* delegate = GetDelegateForPluginDocument(); + int zoom; + if (function == PageZoom::RESET) { + zoom = 0; + } else if (function == PageZoom::ZOOM_OUT) { + zoom = -1; + } else if (function == PageZoom::ZOOM_IN) { + zoom = 1; + } else { + NOTREACHED(); + } + delegate->Zoom(zoom); + return; + } + int zoom_level = webview()->zoomLevel(); int new_zoom_level = webview()->setZoomLevel(false, (function == PageZoom::RESET) ? 0 : (zoom_level + function)); diff --git a/chrome/renderer/webplugin_delegate_pepper.cc b/chrome/renderer/webplugin_delegate_pepper.cc index 70ce34e..8f9d49c 100644 --- a/chrome/renderer/webplugin_delegate_pepper.cc +++ b/chrome/renderer/webplugin_delegate_pepper.cc @@ -355,6 +355,13 @@ void WebPluginDelegatePepper::SelectedFindResultChanged(int index) { find_identifier_, index + 1, WebKit::WebRect()); } +void WebPluginDelegatePepper::Zoom(int factor) { + NPPExtensions* extensions = NULL; + instance()->NPP_GetValue(NPPVPepperExtensions, &extensions); + if (extensions && extensions->zoom) + extensions->zoom(instance()->npp(), factor); +} + NPError WebPluginDelegatePepper::Device2DQueryCapability(int32 capability, int32* value) { return NPERR_GENERIC_ERROR; diff --git a/chrome/renderer/webplugin_delegate_pepper.h b/chrome/renderer/webplugin_delegate_pepper.h index 13c1f47..1ffc457 100644 --- a/chrome/renderer/webplugin_delegate_pepper.h +++ b/chrome/renderer/webplugin_delegate_pepper.h @@ -82,6 +82,7 @@ class WebPluginDelegatePepper : public webkit_glue::WebPluginDelegate { virtual void StopFind(); virtual void NumberOfFindResultsChanged(int total, bool final_result); virtual void SelectedFindResultChanged(int index); + virtual void Zoom(int factor); // WebPlugin2DDeviceDelegate implementation. virtual NPError Device2DQueryCapability(int32 capability, int32* value); |