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

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: Address alexmos@ comments 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 613 matching lines...) Expand 10 before | Expand all | Expand 10 after
624 history_list_offset_(-1), 624 history_list_offset_(-1),
625 history_list_length_(0), 625 history_list_length_(0),
626 frames_in_progress_(0), 626 frames_in_progress_(0),
627 target_url_status_(TARGET_NONE), 627 target_url_status_(TARGET_NONE),
628 uses_temporary_zoom_level_(false), 628 uses_temporary_zoom_level_(false),
629 #if defined(OS_ANDROID) 629 #if defined(OS_ANDROID)
630 top_controls_constraints_(TOP_CONTROLS_STATE_BOTH), 630 top_controls_constraints_(TOP_CONTROLS_STATE_BOTH),
631 #endif 631 #endif
632 has_focus_(false), 632 has_focus_(false),
633 has_scrolled_focused_editable_node_into_rect_(false), 633 has_scrolled_focused_editable_node_into_rect_(false),
634 page_zoom_level_(params.page_zoom_level),
634 main_render_frame_(nullptr), 635 main_render_frame_(nullptr),
635 frame_widget_(nullptr), 636 frame_widget_(nullptr),
636 speech_recognition_dispatcher_(NULL), 637 speech_recognition_dispatcher_(NULL),
637 mouse_lock_dispatcher_(NULL), 638 mouse_lock_dispatcher_(NULL),
638 #if defined(OS_ANDROID) 639 #if defined(OS_ANDROID)
639 expected_content_intent_id_(0), 640 expected_content_intent_id_(0),
640 #endif 641 #endif
641 #if defined(ENABLE_PLUGINS) 642 #if defined(ENABLE_PLUGINS)
642 focused_pepper_plugin_(NULL), 643 focused_pepper_plugin_(NULL),
643 pepper_last_mouse_event_target_(NULL), 644 pepper_last_mouse_event_target_(NULL),
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
795 GetContentClient()->renderer()->RenderViewCreated(this); 796 GetContentClient()->renderer()->RenderViewCreated(this);
796 797
797 // Ensure that sandbox flags are inherited from an opener in a different 798 // Ensure that sandbox flags are inherited from an opener in a different
798 // process. In that case, the browser process will set any inherited sandbox 799 // process. In that case, the browser process will set any inherited sandbox
799 // flags in |replicated_frame_state|, so apply them here. 800 // flags in |replicated_frame_state|, so apply them here.
800 if (opener_frame && !was_created_by_renderer && 801 if (opener_frame && !was_created_by_renderer &&
801 webview()->mainFrame()->isWebLocalFrame()) { 802 webview()->mainFrame()->isWebLocalFrame()) {
802 webview()->mainFrame()->toWebLocalFrame()->forceSandboxFlags( 803 webview()->mainFrame()->toWebLocalFrame()->forceSandboxFlags(
803 params.replicated_frame_state.sandbox_flags); 804 params.replicated_frame_state.sandbox_flags);
804 } 805 }
806
807 page_zoom_level_ = params.page_zoom_level;
805 } 808 }
806 809
807 RenderViewImpl::~RenderViewImpl() { 810 RenderViewImpl::~RenderViewImpl() {
808 DCHECK(!frame_widget_); 811 DCHECK(!frame_widget_);
809 812
810 for (BitmapMap::iterator it = disambiguation_bitmaps_.begin(); 813 for (BitmapMap::iterator it = disambiguation_bitmaps_.begin();
811 it != disambiguation_bitmaps_.end(); 814 it != disambiguation_bitmaps_.end();
812 ++it) 815 ++it)
813 delete it->second; 816 delete it->second;
814 817
(...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after
1330 IPC_MESSAGE_HANDLER(InputMsg_ScrollFocusedEditableNodeIntoRect, 1333 IPC_MESSAGE_HANDLER(InputMsg_ScrollFocusedEditableNodeIntoRect,
1331 OnScrollFocusedEditableNodeIntoRect) 1334 OnScrollFocusedEditableNodeIntoRect)
1332 IPC_MESSAGE_HANDLER(InputMsg_SetEditCommandsForNextKeyEvent, 1335 IPC_MESSAGE_HANDLER(InputMsg_SetEditCommandsForNextKeyEvent,
1333 OnSetEditCommandsForNextKeyEvent) 1336 OnSetEditCommandsForNextKeyEvent)
1334 IPC_MESSAGE_HANDLER(ViewMsg_CopyImageAt, OnCopyImageAt) 1337 IPC_MESSAGE_HANDLER(ViewMsg_CopyImageAt, OnCopyImageAt)
1335 IPC_MESSAGE_HANDLER(ViewMsg_SaveImageAt, OnSaveImageAt) 1338 IPC_MESSAGE_HANDLER(ViewMsg_SaveImageAt, OnSaveImageAt)
1336 IPC_MESSAGE_HANDLER(ViewMsg_SetPageScale, OnSetPageScale) 1339 IPC_MESSAGE_HANDLER(ViewMsg_SetPageScale, OnSetPageScale)
1337 IPC_MESSAGE_HANDLER(ViewMsg_Zoom, OnZoom) 1340 IPC_MESSAGE_HANDLER(ViewMsg_Zoom, OnZoom)
1338 IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevelForLoadingURL, 1341 IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevelForLoadingURL,
1339 OnSetZoomLevelForLoadingURL) 1342 OnSetZoomLevelForLoadingURL)
1340 IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevelForView,
1341 OnSetZoomLevelForView)
1342 IPC_MESSAGE_HANDLER(ViewMsg_SetPageEncoding, OnSetPageEncoding) 1343 IPC_MESSAGE_HANDLER(ViewMsg_SetPageEncoding, OnSetPageEncoding)
1343 IPC_MESSAGE_HANDLER(ViewMsg_ResetPageEncodingToDefault, 1344 IPC_MESSAGE_HANDLER(ViewMsg_ResetPageEncodingToDefault,
1344 OnResetPageEncodingToDefault) 1345 OnResetPageEncodingToDefault)
1345 IPC_MESSAGE_HANDLER(DragMsg_TargetDragEnter, OnDragTargetDragEnter) 1346 IPC_MESSAGE_HANDLER(DragMsg_TargetDragEnter, OnDragTargetDragEnter)
1346 IPC_MESSAGE_HANDLER(DragMsg_TargetDragOver, OnDragTargetDragOver) 1347 IPC_MESSAGE_HANDLER(DragMsg_TargetDragOver, OnDragTargetDragOver)
1347 IPC_MESSAGE_HANDLER(DragMsg_TargetDragLeave, OnDragTargetDragLeave) 1348 IPC_MESSAGE_HANDLER(DragMsg_TargetDragLeave, OnDragTargetDragLeave)
1348 IPC_MESSAGE_HANDLER(DragMsg_TargetDrop, OnDragTargetDrop) 1349 IPC_MESSAGE_HANDLER(DragMsg_TargetDrop, OnDragTargetDrop)
1349 IPC_MESSAGE_HANDLER(DragMsg_SourceEnded, OnDragSourceEnded) 1350 IPC_MESSAGE_HANDLER(DragMsg_SourceEnded, OnDragSourceEnded)
1350 IPC_MESSAGE_HANDLER(DragMsg_SourceSystemDragEnded, 1351 IPC_MESSAGE_HANDLER(DragMsg_SourceSystemDragEnded,
1351 OnDragSourceSystemDragEnded) 1352 OnDragSourceSystemDragEnded)
(...skipping 22 matching lines...) Expand all
1374 IPC_MESSAGE_HANDLER(ViewMsg_PluginActionAt, OnPluginActionAt) 1375 IPC_MESSAGE_HANDLER(ViewMsg_PluginActionAt, OnPluginActionAt)
1375 IPC_MESSAGE_HANDLER(ViewMsg_SetActive, OnSetActive) 1376 IPC_MESSAGE_HANDLER(ViewMsg_SetActive, OnSetActive)
1376 IPC_MESSAGE_HANDLER(ViewMsg_ShowContextMenu, OnShowContextMenu) 1377 IPC_MESSAGE_HANDLER(ViewMsg_ShowContextMenu, OnShowContextMenu)
1377 // TODO(viettrungluu): Move to a separate message filter. 1378 // TODO(viettrungluu): Move to a separate message filter.
1378 IPC_MESSAGE_HANDLER(ViewMsg_SetHistoryOffsetAndLength, 1379 IPC_MESSAGE_HANDLER(ViewMsg_SetHistoryOffsetAndLength,
1379 OnSetHistoryOffsetAndLength) 1380 OnSetHistoryOffsetAndLength)
1380 IPC_MESSAGE_HANDLER(ViewMsg_ReleaseDisambiguationPopupBitmap, 1381 IPC_MESSAGE_HANDLER(ViewMsg_ReleaseDisambiguationPopupBitmap,
1381 OnReleaseDisambiguationPopupBitmap) 1382 OnReleaseDisambiguationPopupBitmap)
1382 IPC_MESSAGE_HANDLER(ViewMsg_ForceRedraw, OnForceRedraw) 1383 IPC_MESSAGE_HANDLER(ViewMsg_ForceRedraw, OnForceRedraw)
1383 IPC_MESSAGE_HANDLER(ViewMsg_SelectWordAroundCaret, OnSelectWordAroundCaret) 1384 IPC_MESSAGE_HANDLER(ViewMsg_SelectWordAroundCaret, OnSelectWordAroundCaret)
1385
1386 // Page messages.
1384 IPC_MESSAGE_HANDLER(PageMsg_UpdateWindowScreenRect, 1387 IPC_MESSAGE_HANDLER(PageMsg_UpdateWindowScreenRect,
1385 OnUpdateWindowScreenRect) 1388 OnUpdateWindowScreenRect)
1389 IPC_MESSAGE_HANDLER(PageMsg_SetZoomLevel, OnSetZoomLevelForView)
1386 #if defined(OS_ANDROID) 1390 #if defined(OS_ANDROID)
1387 IPC_MESSAGE_HANDLER(ViewMsg_UpdateTopControlsState, 1391 IPC_MESSAGE_HANDLER(ViewMsg_UpdateTopControlsState,
1388 OnUpdateTopControlsState) 1392 OnUpdateTopControlsState)
1389 IPC_MESSAGE_HANDLER(ViewMsg_ExtractSmartClipData, OnExtractSmartClipData) 1393 IPC_MESSAGE_HANDLER(ViewMsg_ExtractSmartClipData, OnExtractSmartClipData)
1390 #elif defined(OS_MACOSX) 1394 #elif defined(OS_MACOSX)
1391 IPC_MESSAGE_HANDLER(ViewMsg_GetRenderedText, 1395 IPC_MESSAGE_HANDLER(ViewMsg_GetRenderedText,
1392 OnGetRenderedText) 1396 OnGetRenderedText)
1393 IPC_MESSAGE_HANDLER(ViewMsg_PluginImeCompositionCompleted, 1397 IPC_MESSAGE_HANDLER(ViewMsg_PluginImeCompositionCompleted,
1394 OnPluginImeCompositionCompleted) 1398 OnPluginImeCompositionCompleted)
1395 IPC_MESSAGE_HANDLER(ViewMsg_Close, OnClose) 1399 IPC_MESSAGE_HANDLER(ViewMsg_Close, OnClose)
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
1652 view_params.swapped_out = false; 1656 view_params.swapped_out = false;
1653 // WebCore will take care of setting the correct name. 1657 // WebCore will take care of setting the correct name.
1654 view_params.replicated_frame_state = FrameReplicationState(); 1658 view_params.replicated_frame_state = FrameReplicationState();
1655 view_params.hidden = (params.disposition == NEW_BACKGROUND_TAB); 1659 view_params.hidden = (params.disposition == NEW_BACKGROUND_TAB);
1656 view_params.never_visible = never_visible; 1660 view_params.never_visible = never_visible;
1657 view_params.next_page_id = 1; 1661 view_params.next_page_id = 1;
1658 view_params.initial_size = initial_size; 1662 view_params.initial_size = initial_size;
1659 view_params.enable_auto_resize = false; 1663 view_params.enable_auto_resize = false;
1660 view_params.min_size = gfx::Size(); 1664 view_params.min_size = gfx::Size();
1661 view_params.max_size = gfx::Size(); 1665 view_params.max_size = gfx::Size();
1666 view_params.page_zoom_level = page_zoom_level_;
1662 1667
1663 RenderViewImpl* view = 1668 RenderViewImpl* view =
1664 RenderViewImpl::Create(compositor_deps_, view_params, true); 1669 RenderViewImpl::Create(compositor_deps_, view_params, true);
1665 view->opened_by_user_gesture_ = params.user_gesture; 1670 view->opened_by_user_gesture_ = params.user_gesture;
1666 1671
1667 return view->webview(); 1672 return view->webview();
1668 } 1673 }
1669 1674
1670 WebWidget* RenderViewImpl::createPopupMenu(blink::WebPopupType popup_type) { 1675 WebWidget* RenderViewImpl::createPopupMenu(blink::WebPopupType popup_type) {
1671 RenderWidget* widget = RenderWidget::Create(GetRoutingID(), compositor_deps_, 1676 RenderWidget* widget = RenderWidget::Create(GetRoutingID(), compositor_deps_,
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1725 } 1730 }
1726 } 1731 }
1727 1732
1728 void RenderViewImpl::AttachWebFrameWidget(blink::WebFrameWidget* frame_widget) { 1733 void RenderViewImpl::AttachWebFrameWidget(blink::WebFrameWidget* frame_widget) {
1729 // The previous WebFrameWidget must already be detached by CloseForFrame(). 1734 // The previous WebFrameWidget must already be detached by CloseForFrame().
1730 DCHECK(!frame_widget_); 1735 DCHECK(!frame_widget_);
1731 frame_widget_ = frame_widget; 1736 frame_widget_ = frame_widget;
1732 } 1737 }
1733 1738
1734 void RenderViewImpl::SetZoomLevel(double zoom_level) { 1739 void RenderViewImpl::SetZoomLevel(double zoom_level) {
1740 // If we change the zoom level for the view, make sure any subsequent subframe
1741 // loads reflect the current zoom level.
1742 page_zoom_level_ = zoom_level;
1743
1735 webview()->setZoomLevel(zoom_level); 1744 webview()->setZoomLevel(zoom_level);
1736 FOR_EACH_OBSERVER(RenderViewObserver, observers_, OnZoomLevelChanged()); 1745 FOR_EACH_OBSERVER(RenderViewObserver, observers_, OnZoomLevelChanged());
1737 } 1746 }
1738 1747
1739 void RenderViewImpl::didCancelCompositionOnSelectionChange() { 1748 void RenderViewImpl::didCancelCompositionOnSelectionChange() {
1740 Send(new InputHostMsg_ImeCancelComposition(GetRoutingID())); 1749 Send(new InputHostMsg_ImeCancelComposition(GetRoutingID()));
1741 } 1750 }
1742 1751
1743 bool RenderViewImpl::handleCurrentKeyboardEvent() { 1752 bool RenderViewImpl::handleCurrentKeyboardEvent() {
1744 if (edit_commands_.empty()) 1753 if (edit_commands_.empty())
(...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after
2337 void RenderViewImpl::OnSetZoomLevelForLoadingURL(const GURL& url, 2346 void RenderViewImpl::OnSetZoomLevelForLoadingURL(const GURL& url,
2338 double zoom_level) { 2347 double zoom_level) {
2339 #if !defined(OS_ANDROID) 2348 #if !defined(OS_ANDROID)
2340 // On Android, page zoom isn't used, and in case of WebView, text zoom is used 2349 // On Android, page zoom isn't used, and in case of WebView, text zoom is used
2341 // for legacy WebView text scaling emulation. Thus, the code that resets 2350 // for legacy WebView text scaling emulation. Thus, the code that resets
2342 // the zoom level from this map will be effectively resetting text zoom level. 2351 // the zoom level from this map will be effectively resetting text zoom level.
2343 host_zoom_levels_[url] = zoom_level; 2352 host_zoom_levels_[url] = zoom_level;
2344 #endif 2353 #endif
2345 } 2354 }
2346 2355
2347 void RenderViewImpl::OnSetZoomLevelForView(bool uses_temporary_zoom_level, 2356 void RenderViewImpl::OnSetZoomLevelForView(
2348 double level) { 2357 PageMsg_SetZoomLevel_Command command,
2349 uses_temporary_zoom_level_ = uses_temporary_zoom_level; 2358 double zoom_level) {
2350 2359 switch (command) {
2360 case PageMsg_SetZoomLevel_Command::ZOOM_CLEAR_TEMPORARY:
2361 uses_temporary_zoom_level_ = false;
2362 break;
2363 case PageMsg_SetZoomLevel_Command::ZOOM_SET_TEMPORARY:
2364 uses_temporary_zoom_level_ = true;
2365 break;
2366 default: // PageMsg_SetZoomLevel_Command::ZOOM_USE_CURRENT_TEMPORARY_MODE
2367 // Don't override a temporary zoom level without an explicit SET.
2368 if (uses_temporary_zoom_level_)
2369 return;
2370 }
2351 webview()->hidePopups(); 2371 webview()->hidePopups();
2352 SetZoomLevel(level); 2372 SetZoomLevel(zoom_level);
2353 } 2373 }
2354 2374
2355 void RenderViewImpl::OnSetPageEncoding(const std::string& encoding_name) { 2375 void RenderViewImpl::OnSetPageEncoding(const std::string& encoding_name) {
2356 webview()->setPageEncoding(WebString::fromUTF8(encoding_name)); 2376 webview()->setPageEncoding(WebString::fromUTF8(encoding_name));
2357 } 2377 }
2358 2378
2359 void RenderViewImpl::OnResetPageEncodingToDefault() { 2379 void RenderViewImpl::OnResetPageEncodingToDefault() {
2360 WebString no_encoding; 2380 WebString no_encoding;
2361 webview()->setPageEncoding(no_encoding); 2381 webview()->setPageEncoding(no_encoding);
2362 } 2382 }
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
2532 didUpdateLayout(); 2552 didUpdateLayout();
2533 } 2553 }
2534 2554
2535 void RenderViewImpl::OnDisableScrollbarsForSmallWindows( 2555 void RenderViewImpl::OnDisableScrollbarsForSmallWindows(
2536 const gfx::Size& disable_scrollbar_size_limit) { 2556 const gfx::Size& disable_scrollbar_size_limit) {
2537 disable_scrollbars_size_limit_ = disable_scrollbar_size_limit; 2557 disable_scrollbars_size_limit_ = disable_scrollbar_size_limit;
2538 } 2558 }
2539 2559
2540 void RenderViewImpl::OnSetRendererPrefs( 2560 void RenderViewImpl::OnSetRendererPrefs(
2541 const RendererPreferences& renderer_prefs) { 2561 const RendererPreferences& renderer_prefs) {
2542 double old_zoom_level = renderer_preferences_.default_zoom_level;
2543 std::string old_accept_languages = renderer_preferences_.accept_languages; 2562 std::string old_accept_languages = renderer_preferences_.accept_languages;
2544 2563
2545 renderer_preferences_ = renderer_prefs; 2564 renderer_preferences_ = renderer_prefs;
2546 2565
2547 UpdateFontRenderingFromRendererPrefs(); 2566 UpdateFontRenderingFromRendererPrefs();
2548 UpdateThemePrefs(); 2567 UpdateThemePrefs();
2549 2568
2550 #if defined(USE_DEFAULT_RENDER_THEME) 2569 #if defined(USE_DEFAULT_RENDER_THEME)
2551 if (renderer_prefs.use_custom_colors) { 2570 if (renderer_prefs.use_custom_colors) {
2552 blink::setFocusRingColor(renderer_prefs.focus_ring_color); 2571 blink::setFocusRingColor(renderer_prefs.focus_ring_color);
2553 blink::setCaretBlinkInterval(renderer_prefs.caret_blink_interval); 2572 blink::setCaretBlinkInterval(renderer_prefs.caret_blink_interval);
2554 2573
2555 if (webview()) { 2574 if (webview()) {
2556 webview()->setSelectionColors( 2575 webview()->setSelectionColors(
2557 renderer_prefs.active_selection_bg_color, 2576 renderer_prefs.active_selection_bg_color,
2558 renderer_prefs.active_selection_fg_color, 2577 renderer_prefs.active_selection_fg_color,
2559 renderer_prefs.inactive_selection_bg_color, 2578 renderer_prefs.inactive_selection_bg_color,
2560 renderer_prefs.inactive_selection_fg_color); 2579 renderer_prefs.inactive_selection_fg_color);
2561 webview()->themeChanged(); 2580 webview()->themeChanged();
2562 } 2581 }
2563 } 2582 }
2564 #endif // defined(USE_DEFAULT_RENDER_THEME) 2583 #endif // defined(USE_DEFAULT_RENDER_THEME)
2565 2584
2566 // If the zoom level for this page matches the old zoom default, and this
2567 // is not a plugin, update the zoom level to match the new default.
2568 if (webview() && webview()->mainFrame()->isWebLocalFrame() &&
2569 !webview()->mainFrame()->document().isPluginDocument() &&
2570 !ZoomValuesEqual(old_zoom_level,
2571 renderer_preferences_.default_zoom_level) &&
2572 ZoomValuesEqual(webview()->zoomLevel(), old_zoom_level)) {
2573 SetZoomLevel(renderer_preferences_.default_zoom_level);
2574 zoomLevelChanged();
2575 }
2576
2577 if (webview() && 2585 if (webview() &&
2578 old_accept_languages != renderer_preferences_.accept_languages) { 2586 old_accept_languages != renderer_preferences_.accept_languages) {
2579 webview()->acceptLanguagesChanged(); 2587 webview()->acceptLanguagesChanged();
2580 } 2588 }
2581 } 2589 }
2582 2590
2583 void RenderViewImpl::OnMediaPlayerActionAt(const gfx::Point& location, 2591 void RenderViewImpl::OnMediaPlayerActionAt(const gfx::Point& location,
2584 const WebMediaPlayerAction& action) { 2592 const WebMediaPlayerAction& action) {
2585 if (webview()) 2593 if (webview())
2586 webview()->performMediaPlayerAction(action, location); 2594 webview()->performMediaPlayerAction(action, location);
(...skipping 854 matching lines...) Expand 10 before | Expand all | Expand 10 after
3441 if (IsUseZoomForDSFEnabled()) { 3449 if (IsUseZoomForDSFEnabled()) {
3442 webview()->setZoomFactorForDeviceScaleFactor(device_scale_factor_); 3450 webview()->setZoomFactorForDeviceScaleFactor(device_scale_factor_);
3443 } else { 3451 } else {
3444 webview()->setDeviceScaleFactor(device_scale_factor_); 3452 webview()->setDeviceScaleFactor(device_scale_factor_);
3445 } 3453 }
3446 webview()->settings()->setPreferCompositingToLCDTextEnabled( 3454 webview()->settings()->setPreferCompositingToLCDTextEnabled(
3447 PreferCompositingToLCDText(compositor_deps_, device_scale_factor_)); 3455 PreferCompositingToLCDText(compositor_deps_, device_scale_factor_));
3448 } 3456 }
3449 3457
3450 } // namespace content 3458 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698