diff --git a/content/browser/compositor/mus_browser_compositor_output_surface.cc b/content/browser/compositor/mus_browser_compositor_output_surface.cc index dc72fd0059d193..e7421805379a57 100644 --- a/content/browser/compositor/mus_browser_compositor_output_surface.cc +++ b/content/browser/compositor/mus_browser_compositor_output_surface.cc @@ -17,7 +17,7 @@ #include "services/ui/public/cpp/gpu/context_provider_command_buffer.h" #include "ui/aura/mus/window_port_mus.h" #include "ui/aura/window.h" -#include "ui/display/screen.h" +#include "ui/base/layout.h" #include "ui/gfx/geometry/dip_util.h" namespace content { @@ -50,9 +50,8 @@ cc::BeginFrameSource* MusBrowserCompositorOutputSurface::GetBeginFrameSource() { void MusBrowserCompositorOutputSurface::SwapBuffers( cc::OutputSurfaceFrame frame) { cc::CompositorFrame ui_frame; - ui_frame.metadata.device_scale_factor = display::Screen::GetScreen() - ->GetDisplayNearestWindow(window_) - .device_scale_factor(); + ui_frame.metadata.device_scale_factor = + ui::GetScaleFactorForNativeView(window_); ui_frame.metadata.latency_info = std::move(frame.latency_info); // Reset latency_info to known empty state after moving contents. frame.latency_info.clear(); diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc index ec25bde835e3f5..0404809aee8513 100644 --- a/content/browser/renderer_host/render_widget_host_view_android.cc +++ b/content/browser/renderer_host/render_widget_host_view_android.cc @@ -663,10 +663,9 @@ gfx::Size RenderWidgetHostViewAndroid::GetPhysicalBackingSize() const { if (!content_view_core_) { if (default_bounds_.IsEmpty()) return gfx::Size(); - return gfx::Size(default_bounds_.right() - * ui::GetScaleFactorForNativeView(GetNativeView()), - default_bounds_.bottom() - * ui::GetScaleFactorForNativeView(GetNativeView())); + float scale_factor = view_.GetDipScale(); + return gfx::Size(default_bounds_.right() * scale_factor, + default_bounds_.bottom() * scale_factor); } return content_view_core_->GetPhysicalBackingSize(); @@ -1300,8 +1299,7 @@ RenderWidgetHostViewAndroid::CreateDrawable() { content_view_core_->GetContext(); return std::unique_ptr( new CompositedTouchHandleDrawable( - content_view_core_->GetViewAndroid()->GetLayer(), - ui::GetScaleFactorForNativeView(GetNativeView()), + content_view_core_->GetViewAndroid()->GetLayer(), view_.GetDipScale(), // Use the activity context where possible (instead of the application // context) to ensure proper handle theming. activityContext.is_null() ? base::android::GetApplicationContext() @@ -1376,7 +1374,7 @@ void RenderWidgetHostViewAndroid::OnFrameMetadataUpdated( frame_metadata.top_controls_height * frame_metadata.top_controls_shown_ratio)); - float dip_scale = ui::GetScaleFactorForNativeView(GetNativeView()); + float dip_scale = view_.GetDipScale(); float top_controls_pix = frame_metadata.top_controls_height * dip_scale; float top_shown_pix = top_controls_pix * frame_metadata.top_controls_shown_ratio; @@ -2135,8 +2133,7 @@ void RenderWidgetHostViewAndroid::CreateOverscrollControllerIfPossible() { return; overscroll_controller_ = base::MakeUnique( - overscroll_refresh_handler, compositor, - ui::GetScaleFactorForNativeView(GetNativeView())); + overscroll_refresh_handler, compositor, view_.GetDipScale()); } } // namespace content diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc index 1000c12f3f4f68..b4dc9e9c7a5bf0 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc @@ -82,7 +82,6 @@ #include "ui/base/ui_base_types.h" #include "ui/compositor/compositor_vsync_manager.h" #include "ui/compositor/dip_util.h" -#include "ui/display/display.h" #include "ui/display/screen.h" #include "ui/events/blink/blink_event_util.h" #include "ui/events/blink/web_input_event.h" @@ -439,9 +438,7 @@ void RenderWidgetHostViewAura::InitAsChild( if (parent_view) parent_view->AddChild(GetNativeView()); - const display::Display display = - display::Screen::GetScreen()->GetDisplayNearestWindow(window_); - device_scale_factor_ = display.device_scale_factor(); + device_scale_factor_ = ui::GetScaleFactorForNativeView(window_); } void RenderWidgetHostViewAura::InitAsPopup( @@ -490,9 +487,7 @@ void RenderWidgetHostViewAura::InitAsPopup( event_filter_for_popup_exit_.reset(new EventFilterForPopupExit(this)); - const display::Display display = - display::Screen::GetScreen()->GetDisplayNearestWindow(window_); - device_scale_factor_ = display.device_scale_factor(); + device_scale_factor_ = ui::GetScaleFactorForNativeView(window_); } void RenderWidgetHostViewAura::InitAsFullscreen( @@ -517,9 +512,7 @@ void RenderWidgetHostViewAura::InitAsFullscreen( Show(); Focus(); - const display::Display display = - display::Screen::GetScreen()->GetDisplayNearestWindow(window_); - device_scale_factor_ = display.device_scale_factor(); + device_scale_factor_ = ui::GetScaleFactorForNativeView(window_); } RenderWidgetHost* RenderWidgetHostViewAura::GetRenderWidgetHost() const { diff --git a/content/browser/renderer_host/render_widget_host_view_base.cc b/content/browser/renderer_host/render_widget_host_view_base.cc index 029e72dcf3d3ce..b3ee8539780b06 100644 --- a/content/browser/renderer_host/render_widget_host_view_base.cc +++ b/content/browser/renderer_host/render_widget_host_view_base.cc @@ -17,7 +17,7 @@ #include "content/browser/renderer_host/text_input_manager.h" #include "content/common/content_switches_internal.h" #include "media/base/video_frame.h" -#include "ui/display/display.h" +#include "ui/base/layout.h" #include "ui/display/screen.h" #include "ui/gfx/geometry/point_conversions.h" #include "ui/gfx/geometry/size_conversions.h" @@ -104,10 +104,9 @@ bool RenderWidgetHostViewBase::GetBackgroundOpaque() { } gfx::Size RenderWidgetHostViewBase::GetPhysicalBackingSize() const { - display::Display display = - display::Screen::GetScreen()->GetDisplayNearestWindow(GetNativeView()); - return gfx::ScaleToCeiledSize(GetRequestedRendererSize(), - display.device_scale_factor()); + return gfx::ScaleToCeiledSize( + GetRequestedRendererSize(), + ui::GetScaleFactorForNativeView(GetNativeView())); } bool RenderWidgetHostViewBase::DoBrowserControlsShrinkBlinkSize() const { diff --git a/content/browser/renderer_host/render_widget_host_view_mac.h b/content/browser/renderer_host/render_widget_host_view_mac.h index 16f5f375dac464..9a93bb3048cdb6 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac.h +++ b/content/browser/renderer_host/render_widget_host_view_mac.h @@ -431,9 +431,6 @@ class CONTENT_EXPORT RenderWidgetHostViewMac int window_number() const; - // The scale factor for the screen that the view is currently on. - float ViewScaleFactor() const; - // Update properties, such as the scale factor for the backing store // and for any CALayers, and the screen color profile. void UpdateBackingStoreProperties(); diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm index 9ce93d256d4f1c..bac8af0952d3be 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm @@ -75,7 +75,6 @@ #include "ui/base/cocoa/cocoa_base_utils.h" #import "ui/base/cocoa/fullscreen_window_manager.h" #import "ui/base/cocoa/underlay_opengl_hosting_window.h" -#include "ui/base/layout.h" #include "ui/compositor/compositor.h" #include "ui/compositor/layer.h" #include "ui/display/display.h" @@ -689,10 +688,6 @@ new BrowserCompositorMac(this, this, render_widget_host_->is_hidden(), return [window windowNumber]; } -float RenderWidgetHostViewMac::ViewScaleFactor() const { - return ui::GetScaleFactorForNativeView(cocoa_view_); -} - void RenderWidgetHostViewMac::UpdateDisplayLink() { static bool is_vsync_disabled = base::CommandLine::ForCurrentProcess()->HasSwitch( @@ -1523,9 +1518,7 @@ new BrowserCompositorMac(this, this, render_widget_host_->is_hidden(), gfx::Point* transformed_point) { // The surface hittest happens in device pixels, so we need to convert the // |point| from DIPs to pixels before hittesting. - float scale_factor = display::Screen::GetScreen() - ->GetDisplayNearestWindow(cocoa_view_) - .device_scale_factor(); + float scale_factor = ui::GetScaleFactorForNativeView(cocoa_view_); gfx::Point point_in_pixels = gfx::ConvertPointToPixel(scale_factor, point); cc::SurfaceId id = browser_compositor_->GetDelegatedFrameHost()->SurfaceIdAtPoint( @@ -1580,9 +1573,7 @@ new BrowserCompositorMac(this, this, render_widget_host_->is_hidden(), gfx::Point* transformed_point) { // Transformations use physical pixels rather than DIP, so conversion // is necessary. - float scale_factor = display::Screen::GetScreen() - ->GetDisplayNearestWindow(cocoa_view_) - .device_scale_factor(); + float scale_factor = ui::GetScaleFactorForNativeView(cocoa_view_); gfx::Point point_in_pixels = gfx::ConvertPointToPixel(scale_factor, point); if (!browser_compositor_->GetDelegatedFrameHost() ->TransformPointToLocalCoordSpace(point_in_pixels, original_surface, diff --git a/ui/aura/mus/window_tree_client.cc b/ui/aura/mus/window_tree_client.cc index 82f54f0d6d4d97..bc00034df1b57c 100644 --- a/ui/aura/mus/window_tree_client.cc +++ b/ui/aura/mus/window_tree_client.cc @@ -43,8 +43,8 @@ #include "ui/aura/window.h" #include "ui/aura/window_delegate.h" #include "ui/aura/window_tracker.h" +#include "ui/base/layout.h" #include "ui/base/ui_base_types.h" -#include "ui/display/display.h" #include "ui/display/screen.h" #include "ui/events/event.h" #include "ui/gfx/geometry/dip_util.h" @@ -140,9 +140,7 @@ void SetWindowTypeFromProperties( // Helper function to get the device_scale_factor() of the display::Display // nearest to |window|. float ScaleFactorForDisplay(Window* window) { - return display::Screen::GetScreen() - ->GetDisplayNearestWindow(window) - .device_scale_factor(); + return ui::GetScaleFactorForNativeView(window); } void ConvertEventLocationToDip(int64_t display_id, ui::LocatedEvent* event) { diff --git a/ui/aura/window_tree_host.cc b/ui/aura/window_tree_host.cc index e624728fb926b8..cf223aeda64a6b 100644 --- a/ui/aura/window_tree_host.cc +++ b/ui/aura/window_tree_host.cc @@ -16,6 +16,7 @@ #include "ui/aura/window_tree_host_observer.h" #include "ui/base/ime/input_method.h" #include "ui/base/ime/input_method_factory.h" +#include "ui/base/layout.h" #include "ui/base/view_prop.h" #include "ui/compositor/dip_util.h" #include "ui/compositor/layer.h" @@ -35,10 +36,7 @@ const char kWindowTreeHostForAcceleratedWidget[] = "__AURA_WINDOW_TREE_HOST_ACCELERATED_WIDGET__"; float GetDeviceScaleFactorFromDisplay(Window* window) { - display::Display display = - display::Screen::GetScreen()->GetDisplayNearestWindow(window); - DCHECK(display.is_valid()); - return display.device_scale_factor(); + return ui::GetScaleFactorForNativeView(window); } //////////////////////////////////////////////////////////////////////////////// diff --git a/ui/aura/window_tree_host_platform.cc b/ui/aura/window_tree_host_platform.cc index 54e820eb11a17b..f824afd1140558 100644 --- a/ui/aura/window_tree_host_platform.cc +++ b/ui/aura/window_tree_host_platform.cc @@ -10,9 +10,8 @@ #include "build/build_config.h" #include "ui/aura/window_event_dispatcher.h" #include "ui/aura/window_port.h" +#include "ui/base/layout.h" #include "ui/compositor/compositor.h" -#include "ui/display/display.h" -#include "ui/display/screen.h" #include "ui/events/event.h" #if defined(OS_ANDROID) @@ -134,9 +133,7 @@ void WindowTreeHostPlatform::OnCursorVisibilityChangedNative(bool show) { void WindowTreeHostPlatform::OnBoundsChanged(const gfx::Rect& new_bounds) { float current_scale = compositor()->device_scale_factor(); - float new_scale = display::Screen::GetScreen() - ->GetDisplayNearestWindow(window()) - .device_scale_factor(); + float new_scale = ui::GetScaleFactorForNativeView(window()); gfx::Rect old_bounds = bounds_; bounds_ = new_bounds; if (bounds_.origin() != old_bounds.origin()) { diff --git a/ui/aura/window_tree_host_x11.cc b/ui/aura/window_tree_host_x11.cc index 2efa102bb60751..b5a095fc8c9410 100644 --- a/ui/aura/window_tree_host_x11.cc +++ b/ui/aura/window_tree_host_x11.cc @@ -31,6 +31,7 @@ #include "ui/aura/window.h" #include "ui/aura/window_event_dispatcher.h" #include "ui/base/cursor/cursor.h" +#include "ui/base/layout.h" #include "ui/base/platform_window_defaults.h" #include "ui/base/ui_base_switches.h" #include "ui/base/view_prop.h" @@ -403,9 +404,7 @@ void WindowTreeHostX11::SetBoundsInPixels(const gfx::Rect& bounds) { // Even if the host window's size doesn't change, aura's root window // size, which is in DIP, changes when the scale changes. float current_scale = compositor()->device_scale_factor(); - float new_scale = display::Screen::GetScreen() - ->GetDisplayNearestWindow(window()) - .device_scale_factor(); + float new_scale = ui::GetScaleFactorForNativeView(window()); bool origin_changed = bounds_.origin() != bounds.origin(); bool size_changed = bounds_.size() != bounds.size(); XWindowChanges changes = {0}; diff --git a/ui/base/layout.cc b/ui/base/layout.cc index 06595c34914e93..bbefce002633e2 100644 --- a/ui/base/layout.cc +++ b/ui/base/layout.cc @@ -106,9 +106,10 @@ ScopedSetSupportedScaleFactors::~ScopedSetSupportedScaleFactors() { #if !defined(OS_MACOSX) float GetScaleFactorForNativeView(gfx::NativeView view) { - return display::Screen::GetScreen() - ->GetDisplayNearestWindow(view) - .device_scale_factor(); + display::Display display = + display::Screen::GetScreen()->GetDisplayNearestWindow(view); + DCHECK(display.is_valid()); + return display.device_scale_factor(); } #endif // !defined(OS_MACOSX) diff --git a/ui/base/layout_mac.mm b/ui/base/layout_mac.mm index 27e12e1fa095c4..574a662a6889f9 100644 --- a/ui/base/layout_mac.mm +++ b/ui/base/layout_mac.mm @@ -4,9 +4,10 @@ #include "ui/base/layout.h" -#include +#import #include "base/mac/sdk_forward_declarations.h" +#include "ui/display/display.h" namespace { @@ -28,6 +29,8 @@ float GetScaleFactorScaleForNativeView(gfx::NativeView view) { namespace ui { float GetScaleFactorForNativeView(gfx::NativeView view) { + if (display::Display::HasForceDeviceScaleFactor()) + return display::Display::GetForcedDeviceScaleFactor(); return GetScaleFactorScaleForNativeView(view); } diff --git a/ui/snapshot/DEPS b/ui/snapshot/DEPS index 750af983278e21..e7164444691829 100644 --- a/ui/snapshot/DEPS +++ b/ui/snapshot/DEPS @@ -8,6 +8,7 @@ include_rules = [ "+ui/android/view_android.h", "+ui/android/window_android.h", "+ui/android/window_android_compositor.h", + "+ui/base/layout.h", "+ui/compositor", "+ui/display", "+ui/gfx", diff --git a/ui/snapshot/snapshot_android.cc b/ui/snapshot/snapshot_android.cc index 901dfa7742f7c5..9b69012c6a9b47 100644 --- a/ui/snapshot/snapshot_android.cc +++ b/ui/snapshot/snapshot_android.cc @@ -14,8 +14,7 @@ #include "ui/android/view_android.h" #include "ui/android/window_android.h" #include "ui/android/window_android_compositor.h" -#include "ui/display/display.h" -#include "ui/display/screen.h" +#include "ui/base/layout.h" #include "ui/gfx/geometry/point_conversions.h" #include "ui/gfx/geometry/rect_conversions.h" #include "ui/snapshot/snapshot_async.h" @@ -43,9 +42,7 @@ static void MakeAsyncCopyRequest( std::unique_ptr request = cc::CopyOutputRequest::CreateBitmapRequest(callback); - const display::Display& display = - display::Screen::GetScreen()->GetDisplayNearestWindow(window); - float scale = display.device_scale_factor(); + float scale = ui::GetScaleFactorForNativeView(window); request->set_area(gfx::ScaleToEnclosingRect(source_rect, scale)); window->GetCompositor()->RequestCopyOfOutputOnRootLayer(std::move(request)); } diff --git a/ui/views/cocoa/bridged_native_widget.mm b/ui/views/cocoa/bridged_native_widget.mm index 9907347c10abe2..b79029c300d7f3 100644 --- a/ui/views/cocoa/bridged_native_widget.mm +++ b/ui/views/cocoa/bridged_native_widget.mm @@ -19,16 +19,15 @@ #include "ui/base/hit_test.h" #include "ui/base/ime/input_method.h" #include "ui/base/ime/input_method_factory.h" -#include "ui/display/display.h" -#include "ui/display/screen.h" +#include "ui/base/layout.h" #include "ui/gfx/geometry/dip_util.h" #import "ui/gfx/mac/coordinate_conversion.h" #import "ui/gfx/mac/nswindow_frame_controls.h" #import "ui/native_theme/native_theme_mac.h" #import "ui/views/cocoa/bridged_content_view.h" -#import "ui/views/cocoa/drag_drop_client_mac.h" #import "ui/views/cocoa/cocoa_mouse_capture.h" #import "ui/views/cocoa/cocoa_window_move_loop.h" +#import "ui/views/cocoa/drag_drop_client_mac.h" #include "ui/views/cocoa/tooltip_manager_mac.h" #import "ui/views/cocoa/views_nswindow_delegate.h" #import "ui/views/cocoa/widget_owner_nswindow_adapter.h" @@ -111,10 +110,7 @@ - (void)setCurrentProgress:(NSAnimationProgress)progress { int kWindowPropertiesKey; float GetDeviceScaleFactorFromView(NSView* view) { - display::Display display = - display::Screen::GetScreen()->GetDisplayNearestWindow(view); - DCHECK(display.is_valid()); - return display.device_scale_factor(); + return ui::GetScaleFactorForNativeView(view); } // Returns true if bounds passed to window in SetBounds should be treated as diff --git a/ui/views/drag_utils.cc b/ui/views/drag_utils.cc index dc068c54fd8a8b..9c7251fc91f234 100644 --- a/ui/views/drag_utils.cc +++ b/ui/views/drag_utils.cc @@ -4,8 +4,7 @@ #include "ui/views/drag_utils.h" -#include "ui/display/display.h" -#include "ui/display/screen.h" +#include "ui/base/layout.h" #include "ui/gfx/canvas.h" #include "ui/gfx/geometry/size.h" #include "ui/views/widget/widget.h" @@ -16,9 +15,7 @@ float ScaleFactorForDragFromWidget(Widget* widget) { float device_scale = 1.0f; if (widget && widget->GetNativeView()) { gfx::NativeView view = widget->GetNativeView(); - display::Display display = - display::Screen::GetScreen()->GetDisplayNearestWindow(view); - device_scale = display.device_scale_factor(); + device_scale = ui::GetScaleFactorForNativeView(view); } return device_scale; } diff --git a/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.cc b/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.cc index dd0c1947c461fe..a1118cfeb31a64 100644 --- a/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.cc +++ b/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.cc @@ -24,6 +24,7 @@ #include "ui/base/dragdrop/drop_target_event.h" #include "ui/base/dragdrop/os_exchange_data.h" #include "ui/base/dragdrop/os_exchange_data_provider_aurax11.h" +#include "ui/base/layout.h" #include "ui/base/x/selection_utils.h" #include "ui/base/x/x11_util.h" #include "ui/base/x/x11_window_event_manager.h" @@ -893,11 +894,10 @@ void DesktopDragDropClientAuraX11::OnMouseMovement( int flags, base::TimeTicks event_time) { if (drag_widget_.get()) { - display::Display display = - display::Screen::GetScreen()->GetDisplayNearestWindow( - drag_widget_->GetNativeWindow()); - gfx::Point scaled_point = gfx::ScaleToRoundedPoint( - screen_point, 1.f / display.device_scale_factor()); + float scale_factor = + ui::GetScaleFactorForNativeView(drag_widget_->GetNativeWindow()); + gfx::Point scaled_point = + gfx::ScaleToRoundedPoint(screen_point, 1.f / scale_factor); drag_widget_->SetBounds( gfx::Rect(scaled_point - drag_widget_offset_, drag_image_size_)); drag_widget_->StackAtTop(); diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc index 513db167c3cb7e..95f47b90e9cc1c 100644 --- a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc +++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc @@ -30,10 +30,10 @@ #include "ui/base/dragdrop/os_exchange_data_provider_aurax11.h" #include "ui/base/hit_test.h" #include "ui/base/ime/input_method.h" +#include "ui/base/layout.h" #include "ui/base/x/x11_util.h" #include "ui/base/x/x11_util_internal.h" #include "ui/base/x/x11_window_event_manager.h" -#include "ui/display/display.h" #include "ui/display/screen.h" #include "ui/events/devices/x11/device_data_manager_x11.h" #include "ui/events/devices/x11/device_list_cache_x11.h" @@ -1816,12 +1816,8 @@ void DesktopWindowTreeHostX11::ConvertEventToDifferentHost( ui::LocatedEvent* located_event, DesktopWindowTreeHostX11* host) { DCHECK_NE(this, host); - const display::Display display_src = - display::Screen::GetScreen()->GetDisplayNearestWindow(window()); - const display::Display display_dest = - display::Screen::GetScreen()->GetDisplayNearestWindow(host->window()); - DCHECK_EQ(display_src.device_scale_factor(), - display_dest.device_scale_factor()); + DCHECK_EQ(ui::GetScaleFactorForNativeView(window()), + ui::GetScaleFactorForNativeView(host->window())); gfx::Vector2d offset = GetLocationOnScreenInPixels() - host->GetLocationOnScreenInPixels(); gfx::PointF location_in_pixel_in_host =