OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/message_loop/message_loop.h" | 6 #include "base/message_loop/message_loop.h" |
7 #include "base/run_loop.h" | 7 #include "base/run_loop.h" |
8 #include "base/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
9 #include "components/mus/public/interfaces/window_tree.mojom.h" | 9 #include "components/mus/public/interfaces/window_tree.mojom.h" |
10 #include "components/mus/public/interfaces/window_tree_host.mojom.h" | 10 #include "components/mus/public/interfaces/window_tree_host.mojom.h" |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 const std::string& name, | 241 const std::string& name, |
242 const std::vector<uint8_t>* data) { | 242 const std::vector<uint8_t>* data) { |
243 Array<uint8_t> mojo_data; | 243 Array<uint8_t> mojo_data; |
244 if (data) | 244 if (data) |
245 mojo_data = Array<uint8_t>::From(*data); | 245 mojo_data = Array<uint8_t>::From(*data); |
246 const uint32_t change_id = GetAndAdvanceChangeId(); | 246 const uint32_t change_id = GetAndAdvanceChangeId(); |
247 tree()->SetWindowProperty(change_id, window_id, name, mojo_data.Pass()); | 247 tree()->SetWindowProperty(change_id, window_id, name, mojo_data.Pass()); |
248 return WaitForChangeCompleted(change_id); | 248 return WaitForChangeCompleted(change_id); |
249 } | 249 } |
250 | 250 |
| 251 bool SetPredefinedCursor(Id window_id, mojom::Cursor cursor) { |
| 252 const uint32_t change_id = GetAndAdvanceChangeId(); |
| 253 tree()->SetPredefinedCursor(change_id, window_id, cursor); |
| 254 return WaitForChangeCompleted(change_id); |
| 255 } |
| 256 |
251 bool SetWindowVisibility(Id window_id, bool visible) { | 257 bool SetWindowVisibility(Id window_id, bool visible) { |
252 const uint32_t change_id = GetAndAdvanceChangeId(); | 258 const uint32_t change_id = GetAndAdvanceChangeId(); |
253 tree()->SetWindowVisibility(change_id, window_id, visible); | 259 tree()->SetWindowVisibility(change_id, window_id, visible); |
254 return WaitForChangeCompleted(change_id); | 260 return WaitForChangeCompleted(change_id); |
255 } | 261 } |
256 | 262 |
257 private: | 263 private: |
258 // Used when running a nested MessageLoop. | 264 // Used when running a nested MessageLoop. |
259 struct WaitState { | 265 struct WaitState { |
260 WaitState() : change_count(0) {} | 266 WaitState() : change_count(0) {} |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
343 // Don't log input events as none of the tests care about them and they | 349 // Don't log input events as none of the tests care about them and they |
344 // may come in at random points. | 350 // may come in at random points. |
345 } | 351 } |
346 void OnWindowSharedPropertyChanged(uint32_t window, | 352 void OnWindowSharedPropertyChanged(uint32_t window, |
347 const String& name, | 353 const String& name, |
348 Array<uint8_t> new_data) override { | 354 Array<uint8_t> new_data) override { |
349 tracker_.OnWindowSharedPropertyChanged(window, name, new_data.Pass()); | 355 tracker_.OnWindowSharedPropertyChanged(window, name, new_data.Pass()); |
350 } | 356 } |
351 // TODO(sky): add testing coverage. | 357 // TODO(sky): add testing coverage. |
352 void OnWindowFocused(uint32_t focused_window_id) override {} | 358 void OnWindowFocused(uint32_t focused_window_id) override {} |
| 359 void OnWindowPredefinedCursorChanged(uint32 window_id, |
| 360 mojom::Cursor cursor_id) override { |
| 361 tracker_.OnWindowPredefinedCursorChanged(window_id, cursor_id); |
| 362 } |
353 void OnChangeCompleted(uint32_t change_id, bool success) override { | 363 void OnChangeCompleted(uint32_t change_id, bool success) override { |
354 if (waiting_change_id_ == change_id && change_completed_run_loop_) { | 364 if (waiting_change_id_ == change_id && change_completed_run_loop_) { |
355 on_change_completed_result_ = success; | 365 on_change_completed_result_ = success; |
356 change_completed_run_loop_->Quit(); | 366 change_completed_run_loop_->Quit(); |
357 } | 367 } |
358 } | 368 } |
359 void WmSetBounds(uint32_t change_id, | 369 void WmSetBounds(uint32_t change_id, |
360 Id window_id, | 370 Id window_id, |
361 mojo::RectPtr bounds) override {} | 371 mojo::RectPtr bounds) override {} |
362 void WmSetProperty(uint32_t change_id, | 372 void WmSetProperty(uint32_t change_id, |
(...skipping 1042 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1405 ASSERT_EQ(2u, windows.size()); | 1415 ASSERT_EQ(2u, windows.size()); |
1406 EXPECT_EQ(WindowParentToString(window_1_1, root_window_id()) + | 1416 EXPECT_EQ(WindowParentToString(window_1_1, root_window_id()) + |
1407 " visible=true drawn=true", | 1417 " visible=true drawn=true", |
1408 windows[0].ToString2()); | 1418 windows[0].ToString2()); |
1409 EXPECT_EQ(WindowParentToString(window_1_2, window_1_1) + | 1419 EXPECT_EQ(WindowParentToString(window_1_2, window_1_1) + |
1410 " visible=true drawn=true", | 1420 " visible=true drawn=true", |
1411 windows[1].ToString2()); | 1421 windows[1].ToString2()); |
1412 } | 1422 } |
1413 } | 1423 } |
1414 | 1424 |
| 1425 // Test that we hear the cursor change in other connections. |
| 1426 TEST_F(WindowTreeAppTest, SetCursor) { |
| 1427 // Get a second connection to listen in. |
| 1428 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true)); |
| 1429 Id window_1_1 = BuildWindowId(connection_id_1(), 1); |
| 1430 changes2()->clear(); |
| 1431 |
| 1432 ASSERT_TRUE(ws_client1()->SetPredefinedCursor(window_1_1, |
| 1433 mojom::Cursor::CURSOR_IBEAM)); |
| 1434 ws_client2_->WaitForChangeCount(1u); |
| 1435 |
| 1436 EXPECT_EQ("CursorChanged id=" + IdToString(window_1_1) + " cursor_id=4", |
| 1437 SingleChangeToDescription(*changes2())); |
| 1438 } |
| 1439 |
1415 // Assertions for SetWindowVisibility sending notifications. | 1440 // Assertions for SetWindowVisibility sending notifications. |
1416 TEST_F(WindowTreeAppTest, SetWindowVisibilityNotifications) { | 1441 TEST_F(WindowTreeAppTest, SetWindowVisibilityNotifications) { |
1417 // Create 1,1 and 1,2. 1,2 is made a child of 1,1 and 1,1 a child of the root. | 1442 // Create 1,1 and 1,2. 1,2 is made a child of 1,1 and 1,1 a child of the root. |
1418 Id window_1_1 = ws_client1()->NewWindow(1); | 1443 Id window_1_1 = ws_client1()->NewWindow(1); |
1419 ASSERT_TRUE(window_1_1); | 1444 ASSERT_TRUE(window_1_1); |
1420 ASSERT_TRUE(ws_client1()->SetWindowVisibility(window_1_1, true)); | 1445 ASSERT_TRUE(ws_client1()->SetWindowVisibility(window_1_1, true)); |
1421 Id window_1_2 = ws_client1()->NewWindow(2); | 1446 Id window_1_2 = ws_client1()->NewWindow(2); |
1422 ASSERT_TRUE(window_1_2); | 1447 ASSERT_TRUE(window_1_2); |
1423 ASSERT_TRUE(ws_client1()->SetWindowVisibility(window_1_2, true)); | 1448 ASSERT_TRUE(ws_client1()->SetWindowVisibility(window_1_2, true)); |
1424 ASSERT_TRUE(AddWindow(ws1(), root_window_id(), window_1_1)); | 1449 ASSERT_TRUE(AddWindow(ws1(), root_window_id(), window_1_1)); |
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1756 // originating connection. | 1781 // originating connection. |
1757 | 1782 |
1758 // TODO(sky): make sure coverage of what was | 1783 // TODO(sky): make sure coverage of what was |
1759 // WindowManagerTest.SecondEmbedRoot_InitService and | 1784 // WindowManagerTest.SecondEmbedRoot_InitService and |
1760 // WindowManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window | 1785 // WindowManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window |
1761 // manager | 1786 // manager |
1762 // tests. | 1787 // tests. |
1763 | 1788 |
1764 } // namespace ws | 1789 } // namespace ws |
1765 } // namespace mus | 1790 } // namespace mus |
OLD | NEW |