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

Side by Side Diff: services/ui/ws/test_utils.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
« no previous file with comments | « services/ui/ws/test_utils.h ('k') | services/ui/ws/window_manager_state.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/ws/test_utils.h" 5 #include "services/ui/ws/test_utils.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "cc/output/copy_output_request.h" 10 #include "cc/output/copy_output_request.h"
11 #include "gpu/ipc/client/gpu_channel_host.h" 11 #include "gpu/ipc/client/gpu_channel_host.h"
12 #include "services/service_manager/public/interfaces/connector.mojom.h" 12 #include "services/service_manager/public/interfaces/connector.mojom.h"
13 #include "services/ui/public/interfaces/cursor.mojom.h" 13 #include "services/ui/public/interfaces/cursor.mojom.h"
14 #include "services/ui/ws/display_binding.h" 14 #include "services/ui/ws/display_binding.h"
15 #include "services/ui/ws/display_manager.h" 15 #include "services/ui/ws/display_manager.h"
16 #include "services/ui/ws/platform_display_init_params.h"
17 #include "services/ui/ws/window_manager_access_policy.h" 16 #include "services/ui/ws/window_manager_access_policy.h"
18 #include "services/ui/ws/window_manager_window_tree_factory.h" 17 #include "services/ui/ws/window_manager_window_tree_factory.h"
19 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
20 #include "ui/gfx/geometry/dip_util.h" 19 #include "ui/gfx/geometry/dip_util.h"
21 20
22 namespace ui { 21 namespace ui {
23 namespace ws { 22 namespace ws {
24 namespace test { 23 namespace test {
25 namespace { 24 namespace {
26 25
27 // ----------------------------------------------------------------------------- 26 // -----------------------------------------------------------------------------
28 // Empty implementation of PlatformDisplay. 27 // Empty implementation of PlatformDisplay.
29 class TestPlatformDisplay : public PlatformDisplay { 28 class TestPlatformDisplay : public PlatformDisplay {
30 public: 29 public:
31 explicit TestPlatformDisplay(const PlatformDisplayInitParams& params, 30 explicit TestPlatformDisplay(const display::ViewportMetrics& metrics,
32 mojom::Cursor* cursor_storage) 31 mojom::Cursor* cursor_storage)
33 : id_(params.display_id), 32 : metrics_(metrics), cursor_storage_(cursor_storage) {}
34 display_metrics_(params.metrics),
35 cursor_storage_(cursor_storage) {
36 display_metrics_.bounds = gfx::Rect(0, 0, 400, 300);
37 display_metrics_.device_scale_factor = 1.f;
38 }
39 ~TestPlatformDisplay() override {} 33 ~TestPlatformDisplay() override {}
40 34
41 // PlatformDisplay: 35 // PlatformDisplay:
42 void Init(PlatformDisplayDelegate* delegate) override { 36 void Init(PlatformDisplayDelegate* delegate) override {
43 delegate->OnAcceleratedWidgetAvailable(); 37 delegate->OnAcceleratedWidgetAvailable();
44 } 38 }
45 int64_t GetId() const override { return id_; }
46 void SetViewportSize(const gfx::Size& size) override {} 39 void SetViewportSize(const gfx::Size& size) override {}
47 void SetTitle(const base::string16& title) override {} 40 void SetTitle(const base::string16& title) override {}
48 void SetCapture() override {} 41 void SetCapture() override {}
49 void ReleaseCapture() override {} 42 void ReleaseCapture() override {}
50 void SetCursorById(mojom::Cursor cursor) override { 43 void SetCursorById(mojom::Cursor cursor) override {
51 *cursor_storage_ = cursor; 44 *cursor_storage_ = cursor;
52 } 45 }
53 void UpdateTextInputState(const ui::TextInputState& state) override {} 46 void UpdateTextInputState(const ui::TextInputState& state) override {}
54 void SetImeVisibility(bool visible) override {} 47 void SetImeVisibility(bool visible) override {}
55 gfx::Rect GetBounds() const override { return display_metrics_.bounds; }
56 bool UpdateViewportMetrics(const display::ViewportMetrics& metrics) override { 48 bool UpdateViewportMetrics(const display::ViewportMetrics& metrics) override {
57 if (display_metrics_ == metrics) 49 if (metrics_ == metrics)
58 return false; 50 return false;
59 display_metrics_ = metrics; 51 metrics_ = metrics;
60 return true; 52 return true;
61 } 53 }
62 const display::ViewportMetrics& GetViewportMetrics() const override {
63 return display_metrics_;
64 }
65 gfx::AcceleratedWidget GetAcceleratedWidget() const override { 54 gfx::AcceleratedWidget GetAcceleratedWidget() const override {
66 return gfx::kNullAcceleratedWidget; 55 return gfx::kNullAcceleratedWidget;
67 } 56 }
68 FrameGenerator* GetFrameGenerator() override { return nullptr; } 57 FrameGenerator* GetFrameGenerator() override { return nullptr; }
69 58
70 private: 59 private:
71 const int64_t id_; 60 display::ViewportMetrics metrics_;
72 display::ViewportMetrics display_metrics_;
73 mojom::Cursor* cursor_storage_; 61 mojom::Cursor* cursor_storage_;
74 62
75 DISALLOW_COPY_AND_ASSIGN(TestPlatformDisplay); 63 DISALLOW_COPY_AND_ASSIGN(TestPlatformDisplay);
76 }; 64 };
77 65
78 ClientWindowId NextUnusedClientWindowId(WindowTree* tree) { 66 ClientWindowId NextUnusedClientWindowId(WindowTree* tree) {
79 ClientWindowId client_id; 67 ClientWindowId client_id;
80 for (ClientSpecificId id = 1;; ++id) { 68 for (ClientSpecificId id = 1;; ++id) {
81 // Used the id of the client in the upper bits to simplify things. 69 // Used the id of the client in the upper bits to simplify things.
82 const ClientWindowId client_id = 70 const ClientWindowId client_id =
83 ClientWindowId(WindowIdToTransportId(WindowId(tree->id(), id))); 71 ClientWindowId(WindowIdToTransportId(WindowId(tree->id(), id)));
84 if (!tree->GetWindowByClientId(client_id)) 72 if (!tree->GetWindowByClientId(client_id))
85 return client_id; 73 return client_id;
86 } 74 }
87 } 75 }
88 76
89 // Creates a Display with |id| and same attributes as |metrics|. 77 display::ViewportMetrics MakeViewportMetrics(const display::Display& display) {
90 display::Display CreateDisplay(int64_t id, 78 gfx::Size pixel_size = gfx::ConvertSizeToPixel(display.device_scale_factor(),
91 const display::ViewportMetrics& metrics) { 79 display.bounds().size());
92 display::Display display(id); 80
93 display.set_bounds(metrics.bounds); 81 display::ViewportMetrics metrics;
94 display.set_work_area(metrics.work_area); 82 metrics.bounds_in_pixels.set_size(pixel_size);
95 display.set_device_scale_factor(metrics.device_scale_factor); 83 metrics.device_scale_factor = display.device_scale_factor();
96 display.set_rotation(metrics.rotation); 84 return metrics;
97 display.set_touch_support(metrics.touch_support);
98 return display;
99 } 85 }
100 86
101 } // namespace 87 } // namespace
102 88
103 // TestScreenManager ------------------------------------------------- 89 // TestScreenManager -------------------------------------------------
104 90
105 TestScreenManager::TestScreenManager() {} 91 TestScreenManager::TestScreenManager() {}
106 92
107 TestScreenManager::~TestScreenManager() { 93 TestScreenManager::~TestScreenManager() {
108 display::Screen::SetScreenInstance(nullptr); 94 display::Screen::SetScreenInstance(nullptr);
109 } 95 }
110 96
111 int64_t TestScreenManager::AddDisplay() { 97 int64_t TestScreenManager::AddDisplay() {
112 return AddDisplay(MakeViewportMetrics(0, 0, 100, 100, 1.0f)); 98 return AddDisplay(
99 display::Display(display::kInvalidDisplayId, gfx::Rect(100, 100)));
113 } 100 }
114 101
115 int64_t TestScreenManager::AddDisplay(const display::ViewportMetrics& metrics) { 102 int64_t TestScreenManager::AddDisplay(const display::Display& input_display) {
116 // Generate a unique display id. 103 // Generate a unique display id.
117 int64_t display_id = display_ids_.empty() ? 1 : *display_ids_.rbegin() + 1; 104 int64_t display_id = display_ids_.empty() ? 1 : *display_ids_.rbegin() + 1;
118 display_ids_.insert(display_id); 105 display_ids_.insert(display_id);
119 106
107 display::Display display = input_display;
108 display.set_id(display_id);
109
120 // First display added will be the primary display. 110 // First display added will be the primary display.
121 display::DisplayList::Type type = display::DisplayList::Type::NOT_PRIMARY; 111 display::DisplayList::Type type = display::DisplayList::Type::NOT_PRIMARY;
122 if (display_ids_.size() == 1) 112 if (display_ids_.size() == 1)
123 type = display::DisplayList::Type::PRIMARY; 113 type = display::DisplayList::Type::PRIMARY;
124 114
125 screen_->display_list().AddDisplay(CreateDisplay(display_id, metrics), type); 115 screen_->display_list().AddDisplay(display, type);
126 delegate_->OnDisplayAdded(display_id, metrics); 116 delegate_->OnDisplayAdded(display, MakeViewportMetrics(display));
127 117
128 if (type == display::DisplayList::Type::PRIMARY) 118 if (type == display::DisplayList::Type::PRIMARY)
129 delegate_->OnPrimaryDisplayChanged(display_id); 119 delegate_->OnPrimaryDisplayChanged(display_id);
130 120
131 return display_id; 121 return display_id;
132 } 122 }
133 123
134 void TestScreenManager::ModifyDisplay(int64_t display_id, 124 void TestScreenManager::ModifyDisplay(const display::Display& display) {
135 const display::ViewportMetrics& metrics) { 125 DCHECK(display_ids_.count(display.id()) == 1);
136 DCHECK(display_ids_.count(display_id) == 1); 126 screen_->display_list().UpdateDisplay(display);
137 screen_->display_list().UpdateDisplay(CreateDisplay(display_id, metrics)); 127 delegate_->OnDisplayModified(display, MakeViewportMetrics(display));
138 delegate_->OnDisplayModified(display_id, metrics);
139 } 128 }
140 129
141 void TestScreenManager::RemoveDisplay(int64_t display_id) { 130 void TestScreenManager::RemoveDisplay(int64_t display_id) {
142 DCHECK(display_ids_.count(display_id) == 1); 131 DCHECK(display_ids_.count(display_id) == 1);
143 screen_->display_list().RemoveDisplay(display_id); 132 screen_->display_list().RemoveDisplay(display_id);
144 delegate_->OnDisplayRemoved(display_id); 133 delegate_->OnDisplayRemoved(display_id);
145 display_ids_.erase(display_id); 134 display_ids_.erase(display_id);
146 } 135 }
147 136
148 void TestScreenManager::Init(display::ScreenManagerDelegate* delegate) { 137 void TestScreenManager::Init(display::ScreenManagerDelegate* delegate) {
149 delegate_ = delegate; 138 delegate_ = delegate;
150 139
151 // Reset everything. 140 // Reset everything.
152 display_ids_.clear(); 141 display_ids_.clear();
153 display::Screen::SetScreenInstance(nullptr); 142 display::Screen::SetScreenInstance(nullptr);
154 screen_ = base::MakeUnique<display::ScreenBase>(); 143 screen_ = base::MakeUnique<display::ScreenBase>();
155 display::Screen::SetScreenInstance(screen_.get()); 144 display::Screen::SetScreenInstance(screen_.get());
156 } 145 }
157 146
158 // TestPlatformDisplayFactory ------------------------------------------------- 147 // TestPlatformDisplayFactory -------------------------------------------------
159 148
160 TestPlatformDisplayFactory::TestPlatformDisplayFactory( 149 TestPlatformDisplayFactory::TestPlatformDisplayFactory(
161 mojom::Cursor* cursor_storage) 150 mojom::Cursor* cursor_storage)
162 : cursor_storage_(cursor_storage) {} 151 : cursor_storage_(cursor_storage) {}
163 152
164 TestPlatformDisplayFactory::~TestPlatformDisplayFactory() {} 153 TestPlatformDisplayFactory::~TestPlatformDisplayFactory() {}
165 154
166 std::unique_ptr<PlatformDisplay> 155 std::unique_ptr<PlatformDisplay>
167 TestPlatformDisplayFactory::CreatePlatformDisplay( 156 TestPlatformDisplayFactory::CreatePlatformDisplay(
168 const PlatformDisplayInitParams& init_params) { 157 ServerWindow* root_window,
169 return base::MakeUnique<TestPlatformDisplay>(init_params, cursor_storage_); 158 const display::ViewportMetrics& metrics) {
159 return base::MakeUnique<TestPlatformDisplay>(metrics, cursor_storage_);
170 } 160 }
171 161
172 // TestFrameGeneratorDelegate ------------------------------------------------- 162 // TestFrameGeneratorDelegate -------------------------------------------------
173 163
174 TestFrameGeneratorDelegate::TestFrameGeneratorDelegate() {} 164 TestFrameGeneratorDelegate::TestFrameGeneratorDelegate() {}
175 165
176 TestFrameGeneratorDelegate::~TestFrameGeneratorDelegate() {} 166 TestFrameGeneratorDelegate::~TestFrameGeneratorDelegate() {}
177 167
178 bool TestFrameGeneratorDelegate::IsInHighContrastMode() { 168 bool TestFrameGeneratorDelegate::IsInHighContrastMode() {
179 return false; 169 return false;
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 WindowServerTestHelper::~WindowServerTestHelper() { 505 WindowServerTestHelper::~WindowServerTestHelper() {
516 // Destroy |window_server_| while the message-loop is still alive. 506 // Destroy |window_server_| while the message-loop is still alive.
517 window_server_.reset(); 507 window_server_.reset();
518 } 508 }
519 509
520 // WindowEventTargetingHelper ------------------------------------------------ 510 // WindowEventTargetingHelper ------------------------------------------------
521 511
522 WindowEventTargetingHelper::WindowEventTargetingHelper() { 512 WindowEventTargetingHelper::WindowEventTargetingHelper() {
523 display_ = new Display(window_server()); 513 display_ = new Display(window_server());
524 display_binding_ = new TestDisplayBinding(window_server()); 514 display_binding_ = new TestDisplayBinding(window_server());
525 display_->Init(PlatformDisplayInitParams(), 515 display_->Init(display::ViewportMetrics(),
526 base::WrapUnique(display_binding_)); 516 base::WrapUnique(display_binding_));
527 wm_client_ = ws_test_helper_.window_server_delegate()->last_client(); 517 wm_client_ = ws_test_helper_.window_server_delegate()->last_client();
528 wm_client_->tracker()->changes()->clear(); 518 wm_client_->tracker()->changes()->clear();
529 } 519 }
530 520
531 WindowEventTargetingHelper::~WindowEventTargetingHelper() {} 521 WindowEventTargetingHelper::~WindowEventTargetingHelper() {}
532 522
533 ServerWindow* WindowEventTargetingHelper::CreatePrimaryTree( 523 ServerWindow* WindowEventTargetingHelper::CreatePrimaryTree(
534 const gfx::Rect& root_window_bounds, 524 const gfx::Rect& root_window_bounds,
535 const gfx::Rect& window_bounds) { 525 const gfx::Rect& window_bounds) {
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 } 585 }
596 586
597 // ---------------------------------------------------------------------------- 587 // ----------------------------------------------------------------------------
598 588
599 void AddWindowManager(WindowServer* window_server, const UserId& user_id) { 589 void AddWindowManager(WindowServer* window_server, const UserId& user_id) {
600 window_server->window_manager_window_tree_factory_set() 590 window_server->window_manager_window_tree_factory_set()
601 ->Add(user_id, nullptr) 591 ->Add(user_id, nullptr)
602 ->CreateWindowTree(nullptr, nullptr); 592 ->CreateWindowTree(nullptr, nullptr);
603 } 593 }
604 594
605 display::ViewportMetrics MakeViewportMetrics(int origin_x, 595 display::Display MakeDisplay(int origin_x,
606 int origin_y, 596 int origin_y,
607 int width_pixels, 597 int width_pixels,
608 int height_pixels, 598 int height_pixels,
609 float scale_factor) { 599 float scale_factor) {
610 display::ViewportMetrics metrics;
611 gfx::Size scaled_size = gfx::ConvertSizeToDIP( 600 gfx::Size scaled_size = gfx::ConvertSizeToDIP(
612 scale_factor, gfx::Size(width_pixels, height_pixels)); 601 scale_factor, gfx::Size(width_pixels, height_pixels));
613 metrics.bounds = gfx::Rect(gfx::Point(origin_x, origin_y), scaled_size); 602 gfx::Rect bounds(gfx::Point(origin_x, origin_y), scaled_size);
614 metrics.work_area = metrics.bounds; 603
615 metrics.pixel_size = gfx::Size(width_pixels, height_pixels); 604 display::Display display;
616 metrics.device_scale_factor = scale_factor; 605 display.set_bounds(bounds);
617 return metrics; 606 display.set_work_area(bounds);
607 display.set_device_scale_factor(scale_factor);
608 return display;
618 } 609 }
619 610
620 ServerWindow* FirstRoot(WindowTree* tree) { 611 ServerWindow* FirstRoot(WindowTree* tree) {
621 return tree->roots().size() == 1u 612 return tree->roots().size() == 1u
622 ? tree->GetWindow((*tree->roots().begin())->id()) 613 ? tree->GetWindow((*tree->roots().begin())->id())
623 : nullptr; 614 : nullptr;
624 } 615 }
625 616
626 ClientWindowId FirstRootId(WindowTree* tree) { 617 ClientWindowId FirstRootId(WindowTree* tree) {
627 ServerWindow* first_root = FirstRoot(tree); 618 ServerWindow* first_root = FirstRoot(tree);
(...skipping 29 matching lines...) Expand all
657 if (!tree->AddWindow(parent_client_id, client_window_id)) 648 if (!tree->AddWindow(parent_client_id, client_window_id))
658 return nullptr; 649 return nullptr;
659 if (client_id) 650 if (client_id)
660 *client_id = client_window_id; 651 *client_id = client_window_id;
661 return tree->GetWindowByClientId(client_window_id); 652 return tree->GetWindowByClientId(client_window_id);
662 } 653 }
663 654
664 } // namespace test 655 } // namespace test
665 } // namespace ws 656 } // namespace ws
666 } // namespace ui 657 } // namespace ui
OLDNEW
« no previous file with comments | « services/ui/ws/test_utils.h ('k') | services/ui/ws/window_manager_state.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698