Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index e4ee832d5c05e5166cda0e4ad55d8d380f48d924..a0cce56aa3fa90469d29b2433f1967f0b6713e84 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -1443,6 +1443,8 @@ bool RenderFrameImpl::OnMessageReceived(const IPC::Message& msg) { |
IPC_MESSAGE_HANDLER(FrameMsg_Find, OnFind) |
IPC_MESSAGE_HANDLER(FrameMsg_StopFinding, OnStopFinding) |
IPC_MESSAGE_HANDLER(FrameMsg_EnableViewSourceMode, OnEnableViewSourceMode) |
+ IPC_MESSAGE_HANDLER(FrameMsg_SetTemporaryZoomLevel, OnSetTemporaryZoomLevel) |
+ IPC_MESSAGE_HANDLER(FrameMsg_SetPageZoomLevel, OnSetPageZoomLevel) |
#if defined(OS_ANDROID) |
IPC_MESSAGE_HANDLER(InputMsg_ActivateNearestFindResult, |
OnActivateNearestFindResult) |
@@ -5123,6 +5125,37 @@ void RenderFrameImpl::OnEnableViewSourceMode() { |
frame_->enableViewSourceMode(true); |
} |
+void RenderFrameImpl::OnSetTemporaryZoomLevel(double zoom_level, |
+ bool is_temporary) { |
+ // Store the temporary status on render_view_ so it is immediately available |
+ // to all frames using the same render_view_. |
+ render_view_->set_uses_temporary_zoom_level(is_temporary); |
+ |
+ WebView* webview = render_view_->GetWebView(); |
+ webview->hidePopups(); |
+ webview->setZoomLevelForFrame(frame_, zoom_level); |
+} |
+ |
+void RenderFrameImpl::OnSetPageZoomLevel(double zoom_level) { |
+ WebView* webview = render_view_->GetWebView(); |
+ |
+ if (render_view_->uses_temporary_zoom_level()) |
+ return; |
+ |
+ // We don't apply if our RenderView is hosting a full-page plugin, since the |
+ // plugin doesn't use the same zoom settings. |
+ if (webview->mainFrame()->isWebLocalFrame() && |
+ webview->mainFrame()->document().isPluginDocument()) { |
+ return; |
+ } |
+ |
+ // Force sending notification to observers. |
+ render_view_->SetZoomLevel(zoom_level); |
+ |
+ webview->hidePopups(); |
+ webview->setZoomLevelForFrame(frame_, zoom_level); |
+} |
+ |
#if defined(OS_ANDROID) |
void RenderFrameImpl::OnActivateNearestFindResult(int request_id, |
float x, |