| Index: content/renderer/render_view_impl.cc
|
| diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
|
| index d25ebf1af784a673069cac16d7994ee0b5f81b97..489f70f4482abb13baa82732f46187c78fd57c6a 100644
|
| --- a/content/renderer/render_view_impl.cc
|
| +++ b/content/renderer/render_view_impl.cc
|
| @@ -629,6 +629,7 @@ RenderViewImpl::RenderViewImpl(CompositorDependencies* compositor_deps,
|
| #endif
|
| has_focus_(false),
|
| has_scrolled_focused_editable_node_into_rect_(false),
|
| + page_zoom_level_(params.page_zoom_level),
|
| main_render_frame_(nullptr),
|
| frame_widget_(nullptr),
|
| speech_recognition_dispatcher_(NULL),
|
| @@ -799,6 +800,8 @@ void RenderViewImpl::Initialize(const ViewMsg_New_Params& params,
|
| webview()->mainFrame()->toWebLocalFrame()->forceSandboxFlags(
|
| params.replicated_frame_state.sandbox_flags);
|
| }
|
| +
|
| + page_zoom_level_ = params.page_zoom_level;
|
| }
|
|
|
| RenderViewImpl::~RenderViewImpl() {
|
| @@ -1300,8 +1303,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)
|
| @@ -1342,8 +1343,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, OnSetZoomLevel)
|
| #if defined(OS_ANDROID)
|
| IPC_MESSAGE_HANDLER(ViewMsg_UpdateTopControlsState,
|
| OnUpdateTopControlsState)
|
| @@ -1598,6 +1602,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.page_zoom_level = page_zoom_level_;
|
|
|
| RenderViewImpl* view =
|
| RenderViewImpl::Create(compositor_deps_, view_params, true);
|
| @@ -1671,6 +1676,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.
|
| + page_zoom_level_ = zoom_level;
|
| +
|
| webview()->setZoomLevel(zoom_level);
|
| FOR_EACH_OBSERVER(RenderViewObserver, observers_, OnZoomLevelChanged());
|
| }
|
| @@ -2283,12 +2292,26 @@ 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::OnSetZoomLevel(
|
| + PageMsg_SetZoomLevel_Command command,
|
| + double zoom_level) {
|
| + switch (command) {
|
| + case PageMsg_SetZoomLevel_Command::CLEAR_TEMPORARY:
|
| + uses_temporary_zoom_level_ = false;
|
| + break;
|
| + case PageMsg_SetZoomLevel_Command::SET_TEMPORARY:
|
| + uses_temporary_zoom_level_ = true;
|
| + break;
|
| + case PageMsg_SetZoomLevel_Command::USE_CURRENT_TEMPORARY_MODE:
|
| + // Don't override a temporary zoom level without an explicit SET.
|
| + if (uses_temporary_zoom_level_)
|
| + return;
|
| + break;
|
| + default:
|
| + NOTIMPLEMENTED();
|
| + }
|
| webview()->hidePopups();
|
| - SetZoomLevel(level);
|
| + SetZoomLevel(zoom_level);
|
| }
|
|
|
| void RenderViewImpl::OnSetPageEncoding(const std::string& encoding_name) {
|
| @@ -2478,7 +2501,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;
|
| @@ -2502,17 +2524,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();
|
|
|