summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-26 19:57:52 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-26 19:57:52 +0000
commitb03794d3a1bb536655207d73a78f115e3722893d (patch)
tree5d068db8f7e9bf9668c5c9efb145ed7737637238 /chrome/renderer
parent0b48014c5105ebe720a6eb50e0cb764d3b4aa8f9 (diff)
downloadchromium_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.cc18
-rw-r--r--chrome/renderer/webplugin_delegate_pepper.cc7
-rw-r--r--chrome/renderer/webplugin_delegate_pepper.h1
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);