OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/public/cpp/tests/test_window_tree.h" | 5 #include "ui/aura/test/mus/test_window_tree.h" |
6 | 6 |
7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
8 | 8 |
9 namespace ui { | 9 namespace aura { |
10 | 10 |
11 TestWindowTree::TestWindowTree() | 11 TestWindowTree::TestWindowTree() {} |
12 : got_change_(false), change_id_(0), window_id_(0u) {} | |
13 | 12 |
14 TestWindowTree::~TestWindowTree() {} | 13 TestWindowTree::~TestWindowTree() {} |
15 | 14 |
16 bool TestWindowTree::GetAndClearChangeId(uint32_t* change_id) { | |
17 if (!got_change_) | |
18 return false; | |
19 | |
20 if (change_id) | |
21 *change_id = change_id_; | |
22 got_change_ = false; | |
23 return true; | |
24 } | |
25 | |
26 bool TestWindowTree::WasEventAcked(uint32_t event_id) const { | 15 bool TestWindowTree::WasEventAcked(uint32_t event_id) const { |
27 return acked_events_.count(event_id); | 16 return acked_events_.count(event_id); |
28 } | 17 } |
29 | 18 |
| 19 mojo::Array<uint8_t> TestWindowTree::GetLastPropertyValue() { |
| 20 return std::move(last_property_value_); |
| 21 } |
| 22 |
| 23 mojo::Map<mojo::String, mojo::Array<uint8_t>> |
| 24 TestWindowTree::GetLastNewWindowProperties() { |
| 25 return std::move(last_new_window_properties_); |
| 26 } |
| 27 |
| 28 void TestWindowTree::AckAllChanges() { |
| 29 while (!changes_.empty()) { |
| 30 client_->OnChangeCompleted(changes_[0].id, true); |
| 31 changes_.erase(changes_.begin()); |
| 32 } |
| 33 } |
| 34 |
| 35 bool TestWindowTree::AckSingleChangeOfType(WindowTreeChangeType type, |
| 36 bool result) { |
| 37 auto match = changes_.end(); |
| 38 for (auto iter = changes_.begin(); iter != changes_.end(); ++iter) { |
| 39 if (iter->type == type) { |
| 40 if (match == changes_.end()) |
| 41 match = iter; |
| 42 else |
| 43 return false; |
| 44 } |
| 45 } |
| 46 if (match == changes_.end()) |
| 47 return false; |
| 48 const uint32_t change_id = match->id; |
| 49 changes_.erase(match); |
| 50 client_->OnChangeCompleted(change_id, result); |
| 51 return true; |
| 52 } |
| 53 |
| 54 bool TestWindowTree::AckFirstChangeOfType(WindowTreeChangeType type, |
| 55 bool result) { |
| 56 uint32_t change_id; |
| 57 if (!GetAndRemoveFirstChangeOfType(type, &change_id)) |
| 58 return false; |
| 59 client_->OnChangeCompleted(change_id, result); |
| 60 return true; |
| 61 } |
| 62 |
| 63 void TestWindowTree::AckAllChangesOfType(WindowTreeChangeType type, |
| 64 bool result) { |
| 65 for (size_t i = 0; i < changes_.size();) { |
| 66 if (changes_[i].type != type) { |
| 67 ++i; |
| 68 continue; |
| 69 } |
| 70 const uint32_t change_id = changes_[i].id; |
| 71 changes_.erase(changes_.begin() + i); |
| 72 client_->OnChangeCompleted(change_id, result); |
| 73 } |
| 74 } |
| 75 |
| 76 bool TestWindowTree::GetAndRemoveFirstChangeOfType(WindowTreeChangeType type, |
| 77 uint32_t* change_id) { |
| 78 for (auto iter = changes_.begin(); iter != changes_.end(); ++iter) { |
| 79 if (iter->type != type) |
| 80 continue; |
| 81 *change_id = iter->id; |
| 82 changes_.erase(iter); |
| 83 return true; |
| 84 } |
| 85 return false; |
| 86 } |
| 87 |
| 88 void TestWindowTree::OnChangeReceived(uint32_t change_id, |
| 89 WindowTreeChangeType type) { |
| 90 changes_.push_back({type, change_id}); |
| 91 } |
| 92 |
30 void TestWindowTree::NewWindow( | 93 void TestWindowTree::NewWindow( |
31 uint32_t change_id, | 94 uint32_t change_id, |
32 uint32_t window_id, | 95 uint32_t window_id, |
33 mojo::Map<mojo::String, mojo::Array<uint8_t>> properties) {} | 96 mojo::Map<mojo::String, mojo::Array<uint8_t>> properties) { |
| 97 last_new_window_properties_ = std::move(properties); |
| 98 OnChangeReceived(change_id, WindowTreeChangeType::NEW_WINDOW); |
| 99 } |
34 | 100 |
35 void TestWindowTree::NewTopLevelWindow( | 101 void TestWindowTree::NewTopLevelWindow( |
36 uint32_t change_id, | 102 uint32_t change_id, |
37 uint32_t window_id, | 103 uint32_t window_id, |
38 mojo::Map<mojo::String, mojo::Array<uint8_t>> properties) { | 104 mojo::Map<mojo::String, mojo::Array<uint8_t>> properties) { |
39 got_change_ = true; | 105 last_new_window_properties_ = std::move(properties); |
40 change_id_ = change_id; | |
41 window_id_ = window_id; | 106 window_id_ = window_id; |
| 107 OnChangeReceived(change_id, WindowTreeChangeType::NEW_TOP_LEVEL); |
42 } | 108 } |
43 | 109 |
44 void TestWindowTree::DeleteWindow(uint32_t change_id, uint32_t window_id) {} | 110 void TestWindowTree::DeleteWindow(uint32_t change_id, uint32_t window_id) { |
| 111 OnChangeReceived(change_id); |
| 112 } |
45 | 113 |
46 void TestWindowTree::SetWindowBounds(uint32_t change_id, | 114 void TestWindowTree::SetWindowBounds(uint32_t change_id, |
47 uint32_t window_id, | 115 uint32_t window_id, |
48 const gfx::Rect& bounds) { | 116 const gfx::Rect& bounds) { |
49 got_change_ = true; | 117 OnChangeReceived(change_id, WindowTreeChangeType::BOUNDS); |
50 change_id_ = change_id; | |
51 } | 118 } |
52 | 119 |
53 void TestWindowTree::SetClientArea( | 120 void TestWindowTree::SetClientArea( |
54 uint32_t window_id, | 121 uint32_t window_id, |
55 const gfx::Insets& insets, | 122 const gfx::Insets& insets, |
56 mojo::Array<gfx::Rect> additional_client_areas) {} | 123 mojo::Array<gfx::Rect> additional_client_areas) {} |
57 | 124 |
58 void TestWindowTree::SetHitTestMask(uint32_t window_id, | 125 void TestWindowTree::SetHitTestMask(uint32_t window_id, |
59 const base::Optional<gfx::Rect>& mask) {} | 126 const base::Optional<gfx::Rect>& mask) {} |
60 | 127 |
61 void TestWindowTree::SetCanAcceptDrops(uint32_t window_id, bool accepts_drops) { | 128 void TestWindowTree::SetCanAcceptDrops(uint32_t window_id, bool accepts_drops) { |
62 } | 129 } |
63 | 130 |
64 void TestWindowTree::SetWindowVisibility(uint32_t change_id, | 131 void TestWindowTree::SetWindowVisibility(uint32_t change_id, |
65 uint32_t window_id, | 132 uint32_t window_id, |
66 bool visible) { | 133 bool visible) { |
67 got_change_ = true; | 134 OnChangeReceived(change_id, WindowTreeChangeType::VISIBLE); |
68 change_id_ = change_id; | |
69 } | 135 } |
70 | 136 |
71 void TestWindowTree::SetWindowProperty(uint32_t change_id, | 137 void TestWindowTree::SetWindowProperty(uint32_t change_id, |
72 uint32_t window_id, | 138 uint32_t window_id, |
73 const mojo::String& name, | 139 const mojo::String& name, |
74 mojo::Array<uint8_t> value) { | 140 mojo::Array<uint8_t> value) { |
75 got_change_ = true; | 141 last_property_value_ = std::move(value); |
76 change_id_ = change_id; | 142 OnChangeReceived(change_id, WindowTreeChangeType::PROPERTY); |
77 } | 143 } |
78 | 144 |
79 void TestWindowTree::SetWindowOpacity(uint32_t change_id, | 145 void TestWindowTree::SetWindowOpacity(uint32_t change_id, |
80 uint32_t window_id, | 146 uint32_t window_id, |
81 float opacity) { | 147 float opacity) { |
82 got_change_ = true; | 148 OnChangeReceived(change_id); |
83 change_id_ = change_id; | |
84 } | 149 } |
85 | 150 |
86 void TestWindowTree::AttachCompositorFrameSink( | 151 void TestWindowTree::AttachCompositorFrameSink( |
87 uint32_t window_id, | 152 uint32_t window_id, |
88 mojom::CompositorFrameSinkType type, | 153 ui::mojom::CompositorFrameSinkType type, |
89 mojo::InterfaceRequest<cc::mojom::MojoCompositorFrameSink> surface, | 154 mojo::InterfaceRequest<cc::mojom::MojoCompositorFrameSink> surface, |
90 cc::mojom::MojoCompositorFrameSinkClientPtr client) {} | 155 cc::mojom::MojoCompositorFrameSinkClientPtr client) {} |
91 | 156 |
| 157 void TestWindowTree::OnWindowSurfaceDetached( |
| 158 uint32_t window_id, |
| 159 const cc::SurfaceSequence& sequence) {} |
| 160 |
92 void TestWindowTree::AddWindow(uint32_t change_id, | 161 void TestWindowTree::AddWindow(uint32_t change_id, |
93 uint32_t parent, | 162 uint32_t parent, |
94 uint32_t child) {} | 163 uint32_t child) { |
| 164 OnChangeReceived(change_id); |
| 165 } |
95 | 166 |
96 void TestWindowTree::RemoveWindowFromParent(uint32_t change_id, | 167 void TestWindowTree::RemoveWindowFromParent(uint32_t change_id, |
97 uint32_t window_id) {} | 168 uint32_t window_id) { |
| 169 OnChangeReceived(change_id); |
| 170 } |
98 | 171 |
99 void TestWindowTree::AddTransientWindow(uint32_t change_id, | 172 void TestWindowTree::AddTransientWindow(uint32_t change_id, |
100 uint32_t window_id, | 173 uint32_t window_id, |
101 uint32_t transient_window_id) {} | 174 uint32_t transient_window_id) { |
| 175 OnChangeReceived(change_id); |
| 176 } |
102 | 177 |
103 void TestWindowTree::RemoveTransientWindowFromParent( | 178 void TestWindowTree::RemoveTransientWindowFromParent( |
104 uint32_t change_id, | 179 uint32_t change_id, |
105 uint32_t transient_window_id) {} | 180 uint32_t transient_window_id) { |
| 181 OnChangeReceived(change_id); |
| 182 } |
106 | 183 |
107 void TestWindowTree::SetModal(uint32_t change_id, uint32_t window_id) { | 184 void TestWindowTree::SetModal(uint32_t change_id, uint32_t window_id) { |
108 got_change_ = true; | 185 OnChangeReceived(change_id); |
109 change_id_ = change_id; | |
110 } | 186 } |
111 | 187 |
112 void TestWindowTree::ReorderWindow(uint32_t change_id, | 188 void TestWindowTree::ReorderWindow(uint32_t change_id, |
113 uint32_t window_id, | 189 uint32_t window_id, |
114 uint32_t relative_window_id, | 190 uint32_t relative_window_id, |
115 mojom::OrderDirection direction) {} | 191 ui::mojom::OrderDirection direction) { |
| 192 OnChangeReceived(change_id); |
| 193 } |
116 | 194 |
117 void TestWindowTree::GetWindowTree(uint32_t window_id, | 195 void TestWindowTree::GetWindowTree(uint32_t window_id, |
118 const GetWindowTreeCallback& callback) {} | 196 const GetWindowTreeCallback& callback) {} |
119 | 197 |
120 void TestWindowTree::SetCapture(uint32_t change_id, uint32_t window_id) { | 198 void TestWindowTree::SetCapture(uint32_t change_id, uint32_t window_id) { |
121 got_change_ = true; | 199 OnChangeReceived(change_id, WindowTreeChangeType::CAPTURE); |
122 change_id_ = change_id; | |
123 } | 200 } |
124 | 201 |
125 void TestWindowTree::ReleaseCapture(uint32_t change_id, uint32_t window_id) { | 202 void TestWindowTree::ReleaseCapture(uint32_t change_id, uint32_t window_id) { |
126 got_change_ = true; | 203 OnChangeReceived(change_id, WindowTreeChangeType::CAPTURE); |
127 change_id_ = change_id; | |
128 } | 204 } |
129 | 205 |
130 void TestWindowTree::StartPointerWatcher(bool want_moves) {} | 206 void TestWindowTree::StartPointerWatcher(bool want_moves) {} |
131 | 207 |
132 void TestWindowTree::StopPointerWatcher() {} | 208 void TestWindowTree::StopPointerWatcher() {} |
133 | 209 |
134 void TestWindowTree::Embed(uint32_t window_id, | 210 void TestWindowTree::Embed(uint32_t window_id, |
135 mojom::WindowTreeClientPtr client, | 211 ui::mojom::WindowTreeClientPtr client, |
136 uint32_t flags, | 212 uint32_t flags, |
137 const EmbedCallback& callback) {} | 213 const EmbedCallback& callback) {} |
138 | 214 |
139 void TestWindowTree::SetFocus(uint32_t change_id, uint32_t window_id) { | 215 void TestWindowTree::SetFocus(uint32_t change_id, uint32_t window_id) { |
140 got_change_ = true; | 216 OnChangeReceived(change_id, WindowTreeChangeType::FOCUS); |
141 change_id_ = change_id; | |
142 } | 217 } |
143 | 218 |
144 void TestWindowTree::SetCanFocus(uint32_t window_id, bool can_focus) {} | 219 void TestWindowTree::SetCanFocus(uint32_t window_id, bool can_focus) {} |
145 | 220 |
146 void TestWindowTree::SetCanAcceptEvents(uint32_t window_id, | 221 void TestWindowTree::SetCanAcceptEvents(uint32_t window_id, |
147 bool can_accept_events) {} | 222 bool can_accept_events) {} |
148 | 223 |
149 void TestWindowTree::SetPredefinedCursor(uint32_t change_id, | 224 void TestWindowTree::SetPredefinedCursor(uint32_t change_id, |
150 uint32_t window_id, | 225 uint32_t window_id, |
151 ui::mojom::Cursor cursor_id) {} | 226 ui::mojom::Cursor cursor_id) { |
| 227 OnChangeReceived(change_id); |
| 228 } |
152 | 229 |
153 void TestWindowTree::SetWindowTextInputState(uint32_t window_id, | 230 void TestWindowTree::SetWindowTextInputState(uint32_t window_id, |
154 mojo::TextInputStatePtr state) {} | 231 mojo::TextInputStatePtr state) {} |
155 | 232 |
156 void TestWindowTree::SetImeVisibility(uint32_t window_id, | 233 void TestWindowTree::SetImeVisibility(uint32_t window_id, |
157 bool visible, | 234 bool visible, |
158 mojo::TextInputStatePtr state) {} | 235 mojo::TextInputStatePtr state) {} |
159 | 236 |
160 void TestWindowTree::OnWindowInputEventAck(uint32_t event_id, | 237 void TestWindowTree::OnWindowInputEventAck(uint32_t event_id, |
161 ui::mojom::EventResult result) { | 238 ui::mojom::EventResult result) { |
162 EXPECT_FALSE(acked_events_.count(event_id)); | 239 EXPECT_FALSE(acked_events_.count(event_id)); |
163 acked_events_.insert(event_id); | 240 acked_events_.insert(event_id); |
164 } | 241 } |
165 | 242 |
166 void TestWindowTree::GetWindowManagerClient( | 243 void TestWindowTree::GetWindowManagerClient( |
167 mojo::AssociatedInterfaceRequest<mojom::WindowManagerClient> internal) {} | 244 mojo::AssociatedInterfaceRequest<ui::mojom::WindowManagerClient> internal) { |
| 245 } |
168 | 246 |
169 void TestWindowTree::GetCursorLocationMemory( | 247 void TestWindowTree::GetCursorLocationMemory( |
170 const GetCursorLocationMemoryCallback& callback) { | 248 const GetCursorLocationMemoryCallback& callback) { |
171 callback.Run(mojo::ScopedSharedBufferHandle()); | 249 callback.Run(mojo::ScopedSharedBufferHandle()); |
172 } | 250 } |
173 | 251 |
174 void TestWindowTree::PerformDragDrop( | 252 void TestWindowTree::PerformDragDrop( |
175 uint32_t change_id, | 253 uint32_t change_id, |
176 uint32_t source_window_id, | 254 uint32_t source_window_id, |
177 mojo::Map<mojo::String, mojo::Array<uint8_t>> drag_data, | 255 mojo::Map<mojo::String, mojo::Array<uint8_t>> drag_data, |
178 uint32_t drag_operation) {} | 256 uint32_t drag_operation) { |
| 257 OnChangeReceived(change_id); |
| 258 } |
179 | 259 |
180 void TestWindowTree::CancelDragDrop(uint32_t window_id) {} | 260 void TestWindowTree::CancelDragDrop(uint32_t window_id) {} |
181 | 261 |
182 void TestWindowTree::PerformWindowMove(uint32_t change_id, | 262 void TestWindowTree::PerformWindowMove(uint32_t change_id, |
183 uint32_t window_id, | 263 uint32_t window_id, |
184 mojom::MoveLoopSource source, | 264 ui::mojom::MoveLoopSource source, |
185 const gfx::Point& cursor_location) {} | 265 const gfx::Point& cursor_location) { |
| 266 OnChangeReceived(change_id); |
| 267 } |
186 | 268 |
187 void TestWindowTree::CancelWindowMove(uint32_t window_id) {} | 269 void TestWindowTree::CancelWindowMove(uint32_t window_id) {} |
188 | 270 |
189 void TestWindowTree::OnWindowSurfaceDetached( | 271 } // namespace aura |
190 uint32_t window_id, | |
191 const cc::SurfaceSequence& sequence) {} | |
192 | |
193 } // namespace ui | |
OLD | NEW |