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(); |