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 164f77f1edd3b7df7a5279097b36a4144bc92290..4ed4d634d385b5835ea93e74c78777096789c824 100644 |
| --- a/content/renderer/render_view_impl.cc |
| +++ b/content/renderer/render_view_impl.cc |
| @@ -50,7 +50,6 @@ |
| #include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h" |
| #include "content/common/input/input_event_utils.h" |
| #include "content/common/input_messages.h" |
| -#include "content/common/page_messages.h" |
| #include "content/common/pepper_messages.h" |
| #include "content/common/site_isolation_policy.h" |
| #include "content/common/ssl_status_serialization.h" |
| @@ -631,6 +630,7 @@ RenderViewImpl::RenderViewImpl(CompositorDependencies* compositor_deps, |
| #endif |
| has_focus_(false), |
| has_scrolled_focused_editable_node_into_rect_(false), |
| + preferred_subframe_zoom_level_(params.preferred_subframe_zoom_level), |
| main_render_frame_(nullptr), |
| frame_widget_(nullptr), |
| speech_recognition_dispatcher_(NULL), |
| @@ -802,6 +802,8 @@ void RenderViewImpl::Initialize(const ViewMsg_New_Params& params, |
| webview()->mainFrame()->toWebLocalFrame()->forceSandboxFlags( |
| params.replicated_frame_state.sandbox_flags); |
| } |
| + |
| + preferred_subframe_zoom_level_ = params.preferred_subframe_zoom_level; |
| } |
| RenderViewImpl::~RenderViewImpl() { |
| @@ -1337,8 +1339,6 @@ bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) { |
| IPC_MESSAGE_HANDLER(ViewMsg_Zoom, OnZoom) |
| IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevelForLoadingURL, |
| OnSetZoomLevelForLoadingURL) |
| - IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevelForView, |
| - OnSetZoomLevelForView) |
| IPC_MESSAGE_HANDLER(ViewMsg_SetPageEncoding, OnSetPageEncoding) |
| IPC_MESSAGE_HANDLER(ViewMsg_ResetPageEncodingToDefault, |
| OnResetPageEncodingToDefault) |
| @@ -1381,8 +1381,11 @@ bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) { |
| OnReleaseDisambiguationPopupBitmap) |
| IPC_MESSAGE_HANDLER(ViewMsg_ForceRedraw, OnForceRedraw) |
| IPC_MESSAGE_HANDLER(ViewMsg_SelectWordAroundCaret, OnSelectWordAroundCaret) |
| + |
| + // Page messages. |
| IPC_MESSAGE_HANDLER(PageMsg_UpdateWindowScreenRect, |
| OnUpdateWindowScreenRect) |
| + IPC_MESSAGE_HANDLER(PageMsg_SetZoomLevel, OnSetZoomLevelForView) |
|
alexmos
2016/04/07 23:48:08
nit: might be better if the function name matched
ncarter (slow)
2016/04/11 22:17:03
Agree with this.
wjmaclean
2016/04/13 18:47:47
Done.
|
| #if defined(OS_ANDROID) |
| IPC_MESSAGE_HANDLER(ViewMsg_UpdateTopControlsState, |
| OnUpdateTopControlsState) |
| @@ -1659,6 +1662,7 @@ WebView* RenderViewImpl::createView(WebLocalFrame* creator, |
| view_params.enable_auto_resize = false; |
| view_params.min_size = gfx::Size(); |
| view_params.max_size = gfx::Size(); |
| + view_params.preferred_subframe_zoom_level = preferred_subframe_zoom_level_; |
| RenderViewImpl* view = |
| RenderViewImpl::Create(compositor_deps_, view_params, true); |
| @@ -1732,6 +1736,10 @@ void RenderViewImpl::AttachWebFrameWidget(blink::WebFrameWidget* frame_widget) { |
| } |
| void RenderViewImpl::SetZoomLevel(double zoom_level) { |
| + // If we change the zoom level for the view, make sure any subsequent subframe |
| + // loads reflect the current zoom level. |
| + preferred_subframe_zoom_level_ = zoom_level; |
| + |
| webview()->setZoomLevel(zoom_level); |
| FOR_EACH_OBSERVER(RenderViewObserver, observers_, OnZoomLevelChanged()); |
| } |
| @@ -2344,12 +2352,23 @@ void RenderViewImpl::OnSetZoomLevelForLoadingURL(const GURL& url, |
| #endif |
| } |
| -void RenderViewImpl::OnSetZoomLevelForView(bool uses_temporary_zoom_level, |
| - double level) { |
| - uses_temporary_zoom_level_ = uses_temporary_zoom_level; |
| - |
| +void RenderViewImpl::OnSetZoomLevelForView( |
| + PageMsg_SetZoomLevel_Command command, |
| + double zoom_level) { |
| + switch (command) { |
| + case ZOOM_CLEAR_TEMPORARY: |
| + uses_temporary_zoom_level_ = false; |
| + break; |
| + case ZOOM_SET_TEMPORARY: |
| + uses_temporary_zoom_level_ = true; |
| + break; |
| + default: // ZOOM_USE_CURRENT_TEMPORARY_MODE |
|
alexmos
2016/04/07 23:48:08
why not just an explicit case for ZOOM_USE_CURRENT
alexmos
2016/04/11 23:19:10
Still curious about this. :)
wjmaclean
2016/04/13 18:47:47
I guess I just figured less code generated, but no
wjmaclean
2016/04/13 18:47:47
I didn't see this comment the first time.
|
| + // Don't override a temporary zoom level without an explicit SET. |
| + if (uses_temporary_zoom_level_) |
| + return; |
| + } |
| webview()->hidePopups(); |
| - SetZoomLevel(level); |
| + SetZoomLevel(zoom_level); |
| } |
| void RenderViewImpl::OnSetPageEncoding(const std::string& encoding_name) { |
| @@ -2539,7 +2558,6 @@ void RenderViewImpl::OnDisableScrollbarsForSmallWindows( |
| void RenderViewImpl::OnSetRendererPrefs( |
| const RendererPreferences& renderer_prefs) { |
| - double old_zoom_level = renderer_preferences_.default_zoom_level; |
| std::string old_accept_languages = renderer_preferences_.accept_languages; |
| renderer_preferences_ = renderer_prefs; |
| @@ -2563,17 +2581,6 @@ void RenderViewImpl::OnSetRendererPrefs( |
| } |
| #endif // defined(USE_DEFAULT_RENDER_THEME) |
| - // If the zoom level for this page matches the old zoom default, and this |
| - // is not a plugin, update the zoom level to match the new default. |
| - if (webview() && webview()->mainFrame()->isWebLocalFrame() && |
| - !webview()->mainFrame()->document().isPluginDocument() && |
| - !ZoomValuesEqual(old_zoom_level, |
| - renderer_preferences_.default_zoom_level) && |
| - ZoomValuesEqual(webview()->zoomLevel(), old_zoom_level)) { |
| - SetZoomLevel(renderer_preferences_.default_zoom_level); |
| - zoomLevelChanged(); |
| - } |
| - |
| if (webview() && |
| old_accept_languages != renderer_preferences_.accept_languages) { |
| webview()->acceptLanguagesChanged(); |