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

Unified Diff: content/renderer/render_view_impl.cc

Issue 2417783005: [Master/Overview CL] Make PageScaleFactor work for oopif subframe.
Patch Set: Created 4 years, 2 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 85968f7103ef00b00c35e06f912f47d222338b4a..f116d53077ee2e402ca6439455c2f120ba432927 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -1358,6 +1358,7 @@ 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, OnSetPageScaleFactor);
IPC_MESSAGE_HANDLER(PageMsg_WasHidden, OnPageWasHidden)
IPC_MESSAGE_HANDLER(PageMsg_WasShown, OnPageWasShown)
IPC_MESSAGE_HANDLER(PageMsg_SetHistoryOffsetAndLength,
@@ -2676,6 +2677,27 @@ void RenderViewImpl::OnDeviceScaleFactorChanged() {
AutoResizeCompositor();
}
+void RenderViewImpl::OnSetPageScaleFactor(double page_scale_delta) {
+ static float scale = 1.f;
+ if (webview() && webview()->mainFrame() &&
+ !webview()->mainFrame()->isWebLocalFrame()) {
+ scale = webview()->clampPageScaleFactorToLimits(page_scale_delta * scale);
+ // TODO(wjmaclean): find something better than walking the frame tree to
+ // find the local roots?
+ for (WebFrame* frame = webview()->mainFrame(); frame;
+ frame = frame->traverseNext(false)) {
+ if (frame->isWebLocalFrame() && !frame->parent()->isWebLocalFrame()) {
+ RenderFrameImpl* rfi = RenderFrameImpl::FromWebFrame(frame);
+ RenderWidgetCompositor* widget_compositor =
+ rfi->GetRenderWidget()->compositor();
+ // TODO(wjmaclean): It would likely be better if we could send deltas,
+ // but for now this works.
+ widget_compositor->setPageScaleFactorAndLimits(scale, 1.f, 4.f);
+ }
+ }
+ }
+}
+
void RenderViewImpl::SetScreenMetricsEmulationParameters(
bool enabled,
const blink::WebDeviceEmulationParams& params) {

Powered by Google App Engine
This is Rietveld 408576698