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

Side by Side Diff: services/ui/display/screen_manager_stub_internal.cc

Issue 2736943003: Start to decouple display::Display from ws::PlatformDisplay. (Closed)
Patch Set: Fix comments. Created 3 years, 9 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 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
OLDNEW
« no previous file with comments | « services/ui/display/screen_manager_stub_internal.h ('k') | services/ui/display/viewport_metrics.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698