Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1507)

Unified Diff: content/renderer/render_view_impl.cc

Issue 2652643004: Make PageScaleFactor work for oopif subframes.
Patch Set: Fix patch gardening error: GesturePinch routing tests. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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) {

Powered by Google App Engine
This is Rietveld 408576698