| Index: content/renderer/render_view_impl.cc
|
| diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
|
| index 5d5bad3aa54069a3aa3ec1d401a5e6e35ccf61fd..b79693b037642854273da19bf3421f958cbec5c1 100644
|
| --- a/content/renderer/render_view_impl.cc
|
| +++ b/content/renderer/render_view_impl.cc
|
| @@ -631,6 +631,7 @@ RenderViewImpl::RenderViewImpl(CompositorDependencies* compositor_deps,
|
| top_controls_height_(0.f),
|
| 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),
|
| @@ -801,6 +802,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() {
|
| @@ -1303,8 +1306,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)
|
| @@ -1345,8 +1346,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)
|
| @@ -1601,6 +1605,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);
|
| @@ -1674,6 +1679,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());
|
| }
|
| @@ -2381,6 +2390,11 @@ void RenderViewImpl::OnZoom(PageZoom zoom) {
|
|
|
| void RenderViewImpl::OnSetZoomLevelForLoadingURL(const GURL& url,
|
| double zoom_level) {
|
| + // TODO(wjmaclean): We should see if this restriction is really necessary,
|
| + // since it isn't enforced in other parts of the page zoom system (e.g.
|
| + // when a users changes the zoom of a currently displayed page). Android
|
| + // has no UI for this, so in theory the following code would normally just use
|
| + // the default zoom anyways.
|
| #if !defined(OS_ANDROID)
|
| // On Android, page zoom isn't used, and in case of WebView, text zoom is used
|
| // for legacy WebView text scaling emulation. Thus, the code that resets
|
| @@ -2389,12 +2403,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) {
|
| @@ -2584,7 +2612,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;
|
| @@ -2608,17 +2635,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();
|
|
|