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

Side by Side Diff: content/renderer/render_view_impl.cc

Issue 1804023002: Fix page zoom to be frame-centric for out-of-process frames. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Don't use WeakPtr for PostTask on UI thread. Created 4 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/render_view_impl.h" 5 #include "content/renderer/render_view_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 1317 matching lines...) Expand 10 before | Expand all | Expand 10 after
1328 IPC_MESSAGE_HANDLER(InputMsg_ScrollFocusedEditableNodeIntoRect, 1328 IPC_MESSAGE_HANDLER(InputMsg_ScrollFocusedEditableNodeIntoRect,
1329 OnScrollFocusedEditableNodeIntoRect) 1329 OnScrollFocusedEditableNodeIntoRect)
1330 IPC_MESSAGE_HANDLER(InputMsg_SetEditCommandsForNextKeyEvent, 1330 IPC_MESSAGE_HANDLER(InputMsg_SetEditCommandsForNextKeyEvent,
1331 OnSetEditCommandsForNextKeyEvent) 1331 OnSetEditCommandsForNextKeyEvent)
1332 IPC_MESSAGE_HANDLER(ViewMsg_CopyImageAt, OnCopyImageAt) 1332 IPC_MESSAGE_HANDLER(ViewMsg_CopyImageAt, OnCopyImageAt)
1333 IPC_MESSAGE_HANDLER(ViewMsg_SaveImageAt, OnSaveImageAt) 1333 IPC_MESSAGE_HANDLER(ViewMsg_SaveImageAt, OnSaveImageAt)
1334 IPC_MESSAGE_HANDLER(ViewMsg_SetPageScale, OnSetPageScale) 1334 IPC_MESSAGE_HANDLER(ViewMsg_SetPageScale, OnSetPageScale)
1335 IPC_MESSAGE_HANDLER(ViewMsg_Zoom, OnZoom) 1335 IPC_MESSAGE_HANDLER(ViewMsg_Zoom, OnZoom)
1336 IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevelForLoadingURL, 1336 IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevelForLoadingURL,
1337 OnSetZoomLevelForLoadingURL) 1337 OnSetZoomLevelForLoadingURL)
1338 IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevelForView,
1339 OnSetZoomLevelForView)
1340 IPC_MESSAGE_HANDLER(ViewMsg_SetPageEncoding, OnSetPageEncoding) 1338 IPC_MESSAGE_HANDLER(ViewMsg_SetPageEncoding, OnSetPageEncoding)
1341 IPC_MESSAGE_HANDLER(ViewMsg_ResetPageEncodingToDefault, 1339 IPC_MESSAGE_HANDLER(ViewMsg_ResetPageEncodingToDefault,
1342 OnResetPageEncodingToDefault) 1340 OnResetPageEncodingToDefault)
1343 IPC_MESSAGE_HANDLER(DragMsg_TargetDragEnter, OnDragTargetDragEnter) 1341 IPC_MESSAGE_HANDLER(DragMsg_TargetDragEnter, OnDragTargetDragEnter)
1344 IPC_MESSAGE_HANDLER(DragMsg_TargetDragOver, OnDragTargetDragOver) 1342 IPC_MESSAGE_HANDLER(DragMsg_TargetDragOver, OnDragTargetDragOver)
1345 IPC_MESSAGE_HANDLER(DragMsg_TargetDragLeave, OnDragTargetDragLeave) 1343 IPC_MESSAGE_HANDLER(DragMsg_TargetDragLeave, OnDragTargetDragLeave)
1346 IPC_MESSAGE_HANDLER(DragMsg_TargetDrop, OnDragTargetDrop) 1344 IPC_MESSAGE_HANDLER(DragMsg_TargetDrop, OnDragTargetDrop)
1347 IPC_MESSAGE_HANDLER(DragMsg_SourceEnded, OnDragSourceEnded) 1345 IPC_MESSAGE_HANDLER(DragMsg_SourceEnded, OnDragSourceEnded)
1348 IPC_MESSAGE_HANDLER(DragMsg_SourceSystemDragEnded, 1346 IPC_MESSAGE_HANDLER(DragMsg_SourceSystemDragEnded,
1349 OnDragSourceSystemDragEnded) 1347 OnDragSourceSystemDragEnded)
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
1723 } 1721 }
1724 } 1722 }
1725 1723
1726 void RenderViewImpl::AttachWebFrameWidget(blink::WebFrameWidget* frame_widget) { 1724 void RenderViewImpl::AttachWebFrameWidget(blink::WebFrameWidget* frame_widget) {
1727 // The previous WebFrameWidget must already be detached by CloseForFrame(). 1725 // The previous WebFrameWidget must already be detached by CloseForFrame().
1728 DCHECK(!frame_widget_); 1726 DCHECK(!frame_widget_);
1729 frame_widget_ = frame_widget; 1727 frame_widget_ = frame_widget;
1730 } 1728 }
1731 1729
1732 void RenderViewImpl::SetZoomLevel(double zoom_level) { 1730 void RenderViewImpl::SetZoomLevel(double zoom_level) {
1733 webview()->setZoomLevel(zoom_level); 1731 // This function may get called multiple times if our page has multiple
1732 // frames, so we early out on subsequent calls so as to only send one
1733 // notification.
1734 if (zoom_level == webview()->zoomLevel())
1735 return;
1736
1734 FOR_EACH_OBSERVER(RenderViewObserver, observers_, OnZoomLevelChanged()); 1737 FOR_EACH_OBSERVER(RenderViewObserver, observers_, OnZoomLevelChanged());
1735 } 1738 }
1736 1739
1737 void RenderViewImpl::didCancelCompositionOnSelectionChange() { 1740 void RenderViewImpl::didCancelCompositionOnSelectionChange() {
1738 Send(new InputHostMsg_ImeCancelComposition(GetRoutingID())); 1741 Send(new InputHostMsg_ImeCancelComposition(GetRoutingID()));
1739 } 1742 }
1740 1743
1741 bool RenderViewImpl::handleCurrentKeyboardEvent() { 1744 bool RenderViewImpl::handleCurrentKeyboardEvent() {
1742 if (edit_commands_.empty()) 1745 if (edit_commands_.empty())
1743 return false; 1746 return false;
(...skipping 591 matching lines...) Expand 10 before | Expand all | Expand 10 after
2335 void RenderViewImpl::OnSetZoomLevelForLoadingURL(const GURL& url, 2338 void RenderViewImpl::OnSetZoomLevelForLoadingURL(const GURL& url,
2336 double zoom_level) { 2339 double zoom_level) {
2337 #if !defined(OS_ANDROID) 2340 #if !defined(OS_ANDROID)
2338 // On Android, page zoom isn't used, and in case of WebView, text zoom is used 2341 // On Android, page zoom isn't used, and in case of WebView, text zoom is used
2339 // for legacy WebView text scaling emulation. Thus, the code that resets 2342 // for legacy WebView text scaling emulation. Thus, the code that resets
2340 // the zoom level from this map will be effectively resetting text zoom level. 2343 // the zoom level from this map will be effectively resetting text zoom level.
2341 host_zoom_levels_[url] = zoom_level; 2344 host_zoom_levels_[url] = zoom_level;
2342 #endif 2345 #endif
2343 } 2346 }
2344 2347
2345 void RenderViewImpl::OnSetZoomLevelForView(bool uses_temporary_zoom_level,
2346 double level) {
2347 uses_temporary_zoom_level_ = uses_temporary_zoom_level;
2348
2349 webview()->hidePopups();
2350 SetZoomLevel(level);
2351 }
2352
2353 void RenderViewImpl::OnSetPageEncoding(const std::string& encoding_name) { 2348 void RenderViewImpl::OnSetPageEncoding(const std::string& encoding_name) {
2354 webview()->setPageEncoding(WebString::fromUTF8(encoding_name)); 2349 webview()->setPageEncoding(WebString::fromUTF8(encoding_name));
2355 } 2350 }
2356 2351
2357 void RenderViewImpl::OnResetPageEncodingToDefault() { 2352 void RenderViewImpl::OnResetPageEncodingToDefault() {
2358 WebString no_encoding; 2353 WebString no_encoding;
2359 webview()->setPageEncoding(no_encoding); 2354 webview()->setPageEncoding(no_encoding);
2360 } 2355 }
2361 2356
2362 void RenderViewImpl::OnAllowBindings(int enabled_bindings_flags) { 2357 void RenderViewImpl::OnAllowBindings(int enabled_bindings_flags) {
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
2530 didUpdateLayout(); 2525 didUpdateLayout();
2531 } 2526 }
2532 2527
2533 void RenderViewImpl::OnDisableScrollbarsForSmallWindows( 2528 void RenderViewImpl::OnDisableScrollbarsForSmallWindows(
2534 const gfx::Size& disable_scrollbar_size_limit) { 2529 const gfx::Size& disable_scrollbar_size_limit) {
2535 disable_scrollbars_size_limit_ = disable_scrollbar_size_limit; 2530 disable_scrollbars_size_limit_ = disable_scrollbar_size_limit;
2536 } 2531 }
2537 2532
2538 void RenderViewImpl::OnSetRendererPrefs( 2533 void RenderViewImpl::OnSetRendererPrefs(
2539 const RendererPreferences& renderer_prefs) { 2534 const RendererPreferences& renderer_prefs) {
2540 double old_zoom_level = renderer_preferences_.default_zoom_level;
2541 std::string old_accept_languages = renderer_preferences_.accept_languages; 2535 std::string old_accept_languages = renderer_preferences_.accept_languages;
2542 2536
2543 renderer_preferences_ = renderer_prefs; 2537 renderer_preferences_ = renderer_prefs;
2544 2538
2545 UpdateFontRenderingFromRendererPrefs(); 2539 UpdateFontRenderingFromRendererPrefs();
2546 UpdateThemePrefs(); 2540 UpdateThemePrefs();
2547 2541
2548 #if defined(USE_DEFAULT_RENDER_THEME) 2542 #if defined(USE_DEFAULT_RENDER_THEME)
2549 if (renderer_prefs.use_custom_colors) { 2543 if (renderer_prefs.use_custom_colors) {
2550 blink::setFocusRingColor(renderer_prefs.focus_ring_color); 2544 blink::setFocusRingColor(renderer_prefs.focus_ring_color);
2551 blink::setCaretBlinkInterval(renderer_prefs.caret_blink_interval); 2545 blink::setCaretBlinkInterval(renderer_prefs.caret_blink_interval);
2552 2546
2553 if (webview()) { 2547 if (webview()) {
2554 webview()->setSelectionColors( 2548 webview()->setSelectionColors(
2555 renderer_prefs.active_selection_bg_color, 2549 renderer_prefs.active_selection_bg_color,
2556 renderer_prefs.active_selection_fg_color, 2550 renderer_prefs.active_selection_fg_color,
2557 renderer_prefs.inactive_selection_bg_color, 2551 renderer_prefs.inactive_selection_bg_color,
2558 renderer_prefs.inactive_selection_fg_color); 2552 renderer_prefs.inactive_selection_fg_color);
2559 webview()->themeChanged(); 2553 webview()->themeChanged();
2560 } 2554 }
2561 } 2555 }
2562 #endif // defined(USE_DEFAULT_RENDER_THEME) 2556 #endif // defined(USE_DEFAULT_RENDER_THEME)
2563 2557
2564 // If the zoom level for this page matches the old zoom default, and this
2565 // is not a plugin, update the zoom level to match the new default.
2566 if (webview() && webview()->mainFrame()->isWebLocalFrame() &&
2567 !webview()->mainFrame()->document().isPluginDocument() &&
2568 !ZoomValuesEqual(old_zoom_level,
2569 renderer_preferences_.default_zoom_level) &&
2570 ZoomValuesEqual(webview()->zoomLevel(), old_zoom_level)) {
2571 SetZoomLevel(renderer_preferences_.default_zoom_level);
2572 zoomLevelChanged();
2573 }
2574
2575 if (webview() && 2558 if (webview() &&
2576 old_accept_languages != renderer_preferences_.accept_languages) { 2559 old_accept_languages != renderer_preferences_.accept_languages) {
2577 webview()->acceptLanguagesChanged(); 2560 webview()->acceptLanguagesChanged();
2578 } 2561 }
2579 } 2562 }
2580 2563
2581 void RenderViewImpl::OnMediaPlayerActionAt(const gfx::Point& location, 2564 void RenderViewImpl::OnMediaPlayerActionAt(const gfx::Point& location,
2582 const WebMediaPlayerAction& action) { 2565 const WebMediaPlayerAction& action) {
2583 if (webview()) 2566 if (webview())
2584 webview()->performMediaPlayerAction(action, location); 2567 webview()->performMediaPlayerAction(action, location);
(...skipping 854 matching lines...) Expand 10 before | Expand all | Expand 10 after
3439 if (IsUseZoomForDSFEnabled()) { 3422 if (IsUseZoomForDSFEnabled()) {
3440 webview()->setZoomFactorForDeviceScaleFactor(device_scale_factor_); 3423 webview()->setZoomFactorForDeviceScaleFactor(device_scale_factor_);
3441 } else { 3424 } else {
3442 webview()->setDeviceScaleFactor(device_scale_factor_); 3425 webview()->setDeviceScaleFactor(device_scale_factor_);
3443 } 3426 }
3444 webview()->settings()->setPreferCompositingToLCDTextEnabled( 3427 webview()->settings()->setPreferCompositingToLCDTextEnabled(
3445 PreferCompositingToLCDText(compositor_deps_, device_scale_factor_)); 3428 PreferCompositingToLCDText(compositor_deps_, device_scale_factor_));
3446 } 3429 }
3447 3430
3448 } // namespace content 3431 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698