Chromium Code Reviews| Index: content/renderer/render_view_impl.cc |
| diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc |
| index cc597bd1005feb03373f86ae3d7fa3b5266b330f..61af2e1ebcf6cfd9ce902920f5a97a948a630db2 100644 |
| --- a/content/renderer/render_view_impl.cc |
| +++ b/content/renderer/render_view_impl.cc |
| @@ -1241,6 +1241,8 @@ bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) { |
| OnUpdateWindowScreenRect) |
| IPC_MESSAGE_HANDLER(PageMsg_SetZoomLevel, OnSetZoomLevel) |
| IPC_MESSAGE_HANDLER(PageMsg_SetDeviceScaleFactor, OnSetDeviceScaleFactor); |
| + IPC_MESSAGE_HANDLER(PageMsg_SetPageScaleFactor, |
| + OnSetPageScaleFactorForSubframes); |
| IPC_MESSAGE_HANDLER(PageMsg_WasHidden, OnPageWasHidden) |
| IPC_MESSAGE_HANDLER(PageMsg_WasShown, OnPageWasShown) |
| IPC_MESSAGE_HANDLER(PageMsg_SetHistoryOffsetAndLength, |
| @@ -2376,6 +2378,24 @@ void RenderViewImpl::OnDeviceScaleFactorChanged() { |
| AutoResizeCompositor(); |
| } |
| +void RenderViewImpl::OnSetPageScaleFactorForSubframes(double page_scale) { |
| + if (webview() && webview()->mainFrame() && |
| + !webview()->mainFrame()->isWebLocalFrame()) { |
|
kenrb
2017/01/24 17:13:27
It's cleaner to test the inverted conditions, and
wjmaclean
2017/01/24 18:24:26
Done.
|
| + // TODO(wjmaclean): Find a better way to identify the local roots in the |
| + // frame tree. Still, this is likely better than sending a separate IPC for |
| + // every frame in a renderer. |
|
kenrb
2017/01/24 17:13:27
That is technically true, but an alternative is to
wjmaclean
2017/01/24 18:24:26
Ok, I didn't know about that ... I'll look into th
kenrb
2017/01/24 18:47:30
Yes. Hypothetically it could go on RenderFrameImpl
|
| + for (WebFrame* frame = webview()->mainFrame(); frame; |
| + frame = frame->traverseNext()) { |
| + if (frame->isWebLocalFrame() && !frame->parent()->isWebLocalFrame()) { |
| + RenderFrameImpl* rfi = RenderFrameImpl::FromWebFrame(frame); |
| + RenderWidgetCompositor* widget_compositor = |
| + rfi->GetRenderWidget()->compositor(); |
| + widget_compositor->SetPageScaleFactorForSubframe(page_scale); |
| + } |
| + } |
| + } |
| +} |
| + |
| void RenderViewImpl::SetScreenMetricsEmulationParameters( |
| bool enabled, |
| const blink::WebDeviceEmulationParams& params) { |