OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "services/ui/display/screen_manager_stub_internal.h" | 5 #include "services/ui/display/screen_manager_stub_internal.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/location.h" | 10 #include "base/location.h" |
11 #include "base/memory/ptr_util.h" | 11 #include "base/memory/ptr_util.h" |
12 #include "base/threading/thread_task_runner_handle.h" | 12 #include "base/threading/thread_task_runner_handle.h" |
13 #include "services/service_manager/public/cpp/interface_registry.h" | 13 #include "services/service_manager/public/cpp/interface_registry.h" |
14 #include "ui/display/display.h" | 14 #include "services/ui/display/viewport_metrics.h" |
| 15 #include "ui/gfx/geometry/dip_util.h" |
15 #include "ui/gfx/geometry/rect.h" | 16 #include "ui/gfx/geometry/rect.h" |
16 #include "ui/gfx/geometry/size.h" | 17 #include "ui/gfx/geometry/size.h" |
17 | 18 |
18 namespace display { | 19 namespace display { |
19 namespace { | 20 namespace { |
20 | 21 |
21 // Build a ViewportMetric for a 1024x768 display. | 22 constexpr gfx::Size kDisplayPixelSize(1024, 768); |
22 ViewportMetrics DefaultViewportMetrics() { | |
23 ViewportMetrics metrics; | |
24 | 23 |
25 metrics.device_scale_factor = 1.0f; | 24 // Build a 1024x768 pixel display. |
| 25 Display DefaultDisplay() { |
| 26 float device_scale_factor = 1.f; |
26 if (Display::HasForceDeviceScaleFactor()) | 27 if (Display::HasForceDeviceScaleFactor()) |
27 metrics.device_scale_factor = Display::GetForcedDeviceScaleFactor(); | 28 device_scale_factor = Display::GetForcedDeviceScaleFactor(); |
28 | 29 |
29 metrics.pixel_size = gfx::Size(1024, 768); | 30 gfx::Size scaled_size = |
30 gfx::Size scaled_size = gfx::ScaleToRoundedSize( | 31 gfx::ConvertSizeToDIP(device_scale_factor, kDisplayPixelSize); |
31 metrics.pixel_size, 1.0f / metrics.device_scale_factor); | |
32 | 32 |
33 metrics.bounds = gfx::Rect(scaled_size); | 33 Display display(1); |
34 metrics.work_area = gfx::Rect(scaled_size); | 34 display.set_bounds(gfx::Rect(scaled_size)); |
| 35 display.set_work_area(display.bounds()); |
| 36 display.set_device_scale_factor(device_scale_factor); |
35 | 37 |
36 return metrics; | 38 return display; |
37 } | 39 } |
38 | 40 |
39 } // namespace | 41 } // namespace |
40 | 42 |
41 // static | 43 // static |
42 std::unique_ptr<ScreenManager> ScreenManager::Create() { | 44 std::unique_ptr<ScreenManager> ScreenManager::Create() { |
43 return base::MakeUnique<ScreenManagerStubInternal>(); | 45 return base::MakeUnique<ScreenManagerStubInternal>(); |
44 } | 46 } |
45 | 47 |
46 ScreenManagerStubInternal::ScreenManagerStubInternal() | 48 ScreenManagerStubInternal::ScreenManagerStubInternal() |
47 : weak_ptr_factory_(this) {} | 49 : weak_ptr_factory_(this) {} |
48 | 50 |
49 ScreenManagerStubInternal::~ScreenManagerStubInternal() {} | 51 ScreenManagerStubInternal::~ScreenManagerStubInternal() {} |
50 | 52 |
51 void ScreenManagerStubInternal::FixedSizeScreenConfiguration() { | 53 void ScreenManagerStubInternal::FixedSizeScreenConfiguration() { |
52 delegate_->OnDisplayAdded(display_id_, display_metrics_); | 54 ViewportMetrics metrics; |
| 55 metrics.bounds_in_pixels = gfx::Rect(kDisplayPixelSize); |
| 56 metrics.device_scale_factor = display_.device_scale_factor(); |
| 57 metrics.ui_scale_factor = 1.f; |
| 58 |
| 59 delegate_->OnDisplayAdded(display_, metrics); |
53 } | 60 } |
54 | 61 |
55 void ScreenManagerStubInternal::AddInterfaces( | 62 void ScreenManagerStubInternal::AddInterfaces( |
56 service_manager::InterfaceRegistry* registry) {} | 63 service_manager::InterfaceRegistry* registry) {} |
57 | 64 |
58 void ScreenManagerStubInternal::Init(ScreenManagerDelegate* delegate) { | 65 void ScreenManagerStubInternal::Init(ScreenManagerDelegate* delegate) { |
59 DCHECK(delegate); | 66 DCHECK(delegate); |
60 delegate_ = delegate; | 67 delegate_ = delegate; |
61 display_metrics_ = DefaultViewportMetrics(); | 68 display_ = DefaultDisplay(); |
62 base::ThreadTaskRunnerHandle::Get()->PostTask( | 69 base::ThreadTaskRunnerHandle::Get()->PostTask( |
63 FROM_HERE, | 70 FROM_HERE, |
64 base::Bind(&ScreenManagerStubInternal::FixedSizeScreenConfiguration, | 71 base::Bind(&ScreenManagerStubInternal::FixedSizeScreenConfiguration, |
65 weak_ptr_factory_.GetWeakPtr())); | 72 weak_ptr_factory_.GetWeakPtr())); |
66 } | 73 } |
67 | 74 |
68 void ScreenManagerStubInternal::RequestCloseDisplay(int64_t display_id) { | 75 void ScreenManagerStubInternal::RequestCloseDisplay(int64_t display_id) { |
69 if (display_id == display_id_) { | 76 if (display_id == display_.id()) { |
70 base::ThreadTaskRunnerHandle::Get()->PostTask( | 77 base::ThreadTaskRunnerHandle::Get()->PostTask( |
71 FROM_HERE, base::Bind(&ScreenManagerDelegate::OnDisplayRemoved, | 78 FROM_HERE, base::Bind(&ScreenManagerDelegate::OnDisplayRemoved, |
72 base::Unretained(delegate_), display_id)); | 79 base::Unretained(delegate_), display_id)); |
73 } | 80 } |
74 } | 81 } |
75 | 82 |
76 } // namespace display | 83 } // namespace display |
OLD | NEW |