Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index 1218cb618dfc6964dd450fd4c2f544e594c7c667..3bfdca0685b6cc72f617c1cbc5c78d914024d6c4 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -1432,6 +1432,9 @@ 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_SetZoomLevelFromWebContents, |
alexmos
2016/04/05 18:00:54
"FromWebContents" sounded a bit weird in the name.
wjmaclean
2016/04/05 20:22:00
Sure, I'm OK with that.
Done.
|
+ OnSetZoomLevelFromWebContents) |
#if defined(OS_ANDROID) |
IPC_MESSAGE_HANDLER(InputMsg_ActivateNearestFindResult, |
OnActivateNearestFindResult) |
@@ -5103,6 +5106,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::OnSetZoomLevelFromWebContents(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, |