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

Side by Side Diff: components/mus/ws/window_tree_apptest.cc

Issue 1465803003: mus: Let clients set the cursor of their window. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix WindowTreeAppTest.SetCursor. Created 5 years 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 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 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 const std::string& name, 250 const std::string& name,
251 const std::vector<uint8_t>* data) { 251 const std::vector<uint8_t>* data) {
252 Array<uint8_t> mojo_data; 252 Array<uint8_t> mojo_data;
253 if (data) 253 if (data)
254 mojo_data = Array<uint8_t>::From(*data); 254 mojo_data = Array<uint8_t>::From(*data);
255 const uint32_t change_id = GetAndAdvanceChangeId(); 255 const uint32_t change_id = GetAndAdvanceChangeId();
256 tree()->SetWindowProperty(change_id, window_id, name, mojo_data.Pass()); 256 tree()->SetWindowProperty(change_id, window_id, name, mojo_data.Pass());
257 return WaitForChangeCompleted(change_id); 257 return WaitForChangeCompleted(change_id);
258 } 258 }
259 259
260 bool SetPredefinedCursor(Id window_id, mojom::Cursor cursor) {
261 const uint32_t change_id = GetAndAdvanceChangeId();
262 tree()->SetPredefinedCursor(change_id, window_id, cursor);
263 return WaitForChangeCompleted(change_id);
264 }
265
260 private: 266 private:
261 // Used when running a nested MessageLoop. 267 // Used when running a nested MessageLoop.
262 struct WaitState { 268 struct WaitState {
263 WaitState() : change_count(0) {} 269 WaitState() : change_count(0) {}
264 270
265 // Number of changes waiting for. 271 // Number of changes waiting for.
266 size_t change_count; 272 size_t change_count;
267 base::RunLoop run_loop; 273 base::RunLoop run_loop;
268 }; 274 };
269 275
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 // Don't log input events as none of the tests care about them and they 352 // Don't log input events as none of the tests care about them and they
347 // may come in at random points. 353 // may come in at random points.
348 } 354 }
349 void OnWindowSharedPropertyChanged(uint32_t window, 355 void OnWindowSharedPropertyChanged(uint32_t window,
350 const String& name, 356 const String& name,
351 Array<uint8_t> new_data) override { 357 Array<uint8_t> new_data) override {
352 tracker_.OnWindowSharedPropertyChanged(window, name, new_data.Pass()); 358 tracker_.OnWindowSharedPropertyChanged(window, name, new_data.Pass());
353 } 359 }
354 // TODO(sky): add testing coverage. 360 // TODO(sky): add testing coverage.
355 void OnWindowFocused(uint32_t focused_window_id) override {} 361 void OnWindowFocused(uint32_t focused_window_id) override {}
362 void OnWindowSetPredefinedCursor(uint32 window_id,
363 mojom::Cursor cursor_id) override {
364 tracker_.OnWindowSetPredefinedCursor(window_id, cursor_id);
365 }
356 void OnChangeCompleted(uint32_t change_id, bool success) override { 366 void OnChangeCompleted(uint32_t change_id, bool success) override {
357 if (waiting_change_id_ == change_id && change_completed_run_loop_) { 367 if (waiting_change_id_ == change_id && change_completed_run_loop_) {
358 on_change_completed_result_ = success; 368 on_change_completed_result_ = success;
359 change_completed_run_loop_->Quit(); 369 change_completed_run_loop_->Quit();
360 } 370 }
361 } 371 }
362 void WmSetBounds(uint32_t change_id, 372 void WmSetBounds(uint32_t change_id,
363 Id window_id, 373 Id window_id,
364 mojo::RectPtr bounds) override {} 374 mojo::RectPtr bounds) override {}
365 void WmSetProperty(uint32_t change_id, 375 void WmSetProperty(uint32_t change_id,
(...skipping 1042 matching lines...) Expand 10 before | Expand all | Expand 10 after
1408 ASSERT_EQ(2u, windows.size()); 1418 ASSERT_EQ(2u, windows.size());
1409 EXPECT_EQ(WindowParentToString(window_1_1, root_window_id()) + 1419 EXPECT_EQ(WindowParentToString(window_1_1, root_window_id()) +
1410 " visible=true drawn=true", 1420 " visible=true drawn=true",
1411 windows[0].ToString2()); 1421 windows[0].ToString2());
1412 EXPECT_EQ(WindowParentToString(window_1_2, window_1_1) + 1422 EXPECT_EQ(WindowParentToString(window_1_2, window_1_1) +
1413 " visible=true drawn=true", 1423 " visible=true drawn=true",
1414 windows[1].ToString2()); 1424 windows[1].ToString2());
1415 } 1425 }
1416 } 1426 }
1417 1427
1428 // Test that we hear the cursor change in other connections.
1429 TEST_F(WindowTreeAppTest, SetCursor) {
1430 // Get a second connection to listen in.
1431 ASSERT_NO_FATAL_FAILURE(EstablishSecondConnection(true));
1432 Id window_1_1 = BuildWindowId(connection_id_1(), 1);
1433 changes2()->clear();
1434
1435 ASSERT_TRUE(ws_client1()->SetPredefinedCursor(window_1_1,
1436 mojom::Cursor::CURSOR_IBEAM));
1437 ws_client2_->WaitForChangeCount(1u);
1438
1439 EXPECT_EQ("CursorChanged id=" + IdToString(window_1_1) + " cursor_id=4",
1440 SingleChangeToDescription(*changes2()));
1441 }
1442
1418 // Assertions for SetWindowVisibility sending notifications. 1443 // Assertions for SetWindowVisibility sending notifications.
1419 TEST_F(WindowTreeAppTest, SetWindowVisibilityNotifications) { 1444 TEST_F(WindowTreeAppTest, SetWindowVisibilityNotifications) {
1420 // Create 1,1 and 1,2. 1,2 is made a child of 1,1 and 1,1 a child of the root. 1445 // Create 1,1 and 1,2. 1,2 is made a child of 1,1 and 1,1 a child of the root.
1421 Id window_1_1 = ws_client1()->NewWindow(1); 1446 Id window_1_1 = ws_client1()->NewWindow(1);
1422 ASSERT_TRUE(window_1_1); 1447 ASSERT_TRUE(window_1_1);
1423 ASSERT_TRUE(SetWindowVisibility(ws1(), window_1_1, true)); 1448 ASSERT_TRUE(SetWindowVisibility(ws1(), window_1_1, true));
1424 Id window_1_2 = ws_client1()->NewWindow(2); 1449 Id window_1_2 = ws_client1()->NewWindow(2);
1425 ASSERT_TRUE(window_1_2); 1450 ASSERT_TRUE(window_1_2);
1426 ASSERT_TRUE(SetWindowVisibility(ws1(), window_1_2, true)); 1451 ASSERT_TRUE(SetWindowVisibility(ws1(), window_1_2, true));
1427 ASSERT_TRUE(AddWindow(ws1(), root_window_id(), window_1_1)); 1452 ASSERT_TRUE(AddWindow(ws1(), root_window_id(), window_1_1));
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after
1759 // originating connection. 1784 // originating connection.
1760 1785
1761 // TODO(sky): make sure coverage of what was 1786 // TODO(sky): make sure coverage of what was
1762 // WindowManagerTest.SecondEmbedRoot_InitService and 1787 // WindowManagerTest.SecondEmbedRoot_InitService and
1763 // WindowManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window 1788 // WindowManagerTest.MultipleEmbedRootsBeforeWTHReady gets added to window
1764 // manager 1789 // manager
1765 // tests. 1790 // tests.
1766 1791
1767 } // namespace ws 1792 } // namespace ws
1768 } // namespace mus 1793 } // namespace mus
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698