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

Side by Side Diff: services/ui/ws/window_tree_unittest.cc

Issue 2125663002: mus: Add watcher for all touch events. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Overload copy assignment operator for Change struct. Created 4 years, 5 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 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 "services/ui/ws/window_tree.h" 5 #include "services/ui/ws/window_tree.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 EXPECT_NO_FATAL_FAILURE(SetupEventTargeting(&client, &tree, &window)); 318 EXPECT_NO_FATAL_FAILURE(SetupEventTargeting(&client, &tree, &window));
319 319
320 // Create an event outside the bounds of the client. 320 // Create an event outside the bounds of the client.
321 ui::PointerEvent pointer_down = CreatePointerDownEvent(5, 5); 321 ui::PointerEvent pointer_down = CreatePointerDownEvent(5, 5);
322 322
323 // Events are not observed before setting an observer. 323 // Events are not observed before setting an observer.
324 DispatchEventAndAckImmediately(pointer_down); 324 DispatchEventAndAckImmediately(pointer_down);
325 ASSERT_EQ(0u, client->tracker()->changes()->size()); 325 ASSERT_EQ(0u, client->tracker()->changes()->size());
326 326
327 // Create an observer for pointer-down events. 327 // Create an observer for pointer-down events.
328 WindowTreeTestApi(tree).SetEventObserver( 328 WindowTreeTestApi(tree).AddEventObserver(
329 CreateEventMatcher(ui::mojom::EventType::POINTER_DOWN), 111u); 329 CreateEventMatcher(ui::mojom::EventType::POINTER_DOWN), 111u);
330 330
331 // Pointer-down events are sent to the client. 331 // Pointer-down events are sent to the client.
332 DispatchEventAndAckImmediately(pointer_down); 332 DispatchEventAndAckImmediately(pointer_down);
333 ASSERT_EQ(1u, client->tracker()->changes()->size()); 333 ASSERT_EQ(1u, client->tracker()->changes()->size());
334 EXPECT_EQ("EventObserved event_action=16 event_observer_id=111", 334 EXPECT_EQ("EventObserved event_action=16 event_observer_id=111",
335 ChangesToDescription1(*client->tracker()->changes())[0]); 335 ChangesToDescription1(*client->tracker()->changes())[0]);
336 client->tracker()->changes()->clear(); 336 client->tracker()->changes()->clear();
337 337
338 // Clearing the observer stops sending events to the client. 338 // Clearing the observer stops sending events to the client.
339 WindowTreeTestApi(tree).SetEventObserver(nullptr, 0u); 339 WindowTreeTestApi(tree).RemoveEventObserver(111u);
340 DispatchEventAndAckImmediately(pointer_down); 340 DispatchEventAndAckImmediately(pointer_down);
341 ASSERT_EQ(0u, client->tracker()->changes()->size()); 341 ASSERT_EQ(0u, client->tracker()->changes()->size());
342 } 342 }
343 343
344 // Tests that a client using an event observer does not receive events that 344 // Tests that a client using an event observer does not receive events that
345 // don't match the EventMatcher spec. 345 // don't match the EventMatcher spec.
346 TEST_F(WindowTreeTest, SetEventObserverNonMatching) { 346 TEST_F(WindowTreeTest, SetEventObserverNonMatching) {
347 // Create an embedded client. 347 // Create an embedded client.
348 TestWindowTreeClient* client = nullptr; 348 TestWindowTreeClient* client = nullptr;
349 WindowTree* tree = nullptr; 349 WindowTree* tree = nullptr;
350 ServerWindow* window = nullptr; 350 ServerWindow* window = nullptr;
351 EXPECT_NO_FATAL_FAILURE(SetupEventTargeting(&client, &tree, &window)); 351 EXPECT_NO_FATAL_FAILURE(SetupEventTargeting(&client, &tree, &window));
352 352
353 // Create an observer for pointer-down events. 353 // Create an observer for pointer-down events.
354 WindowTreeTestApi(tree).SetEventObserver( 354 WindowTreeTestApi(tree).AddEventObserver(
355 CreateEventMatcher(ui::mojom::EventType::POINTER_DOWN), 111u); 355 CreateEventMatcher(ui::mojom::EventType::POINTER_DOWN), 111u);
356 356
357 // Pointer-up events are not sent to the client, since they don't match. 357 // Pointer-up events are not sent to the client, since they don't match.
358 DispatchEventAndAckImmediately(CreatePointerUpEvent(5, 5)); 358 DispatchEventAndAckImmediately(CreatePointerUpEvent(5, 5));
359 ASSERT_EQ(0u, client->tracker()->changes()->size()); 359 ASSERT_EQ(0u, client->tracker()->changes()->size());
360 } 360 }
361 361
362 // Tests that an event that both hits a client window and matches an event 362 // Tests that an event that both hits a client window and matches an event
363 // observer is sent only once to the client. 363 // observer is sent only once to the client.
364 TEST_F(WindowTreeTest, SetEventObserverSendsOnce) { 364 TEST_F(WindowTreeTest, SetEventObserverSendsOnce) {
365 // Create an embedded client. 365 // Create an embedded client.
366 TestWindowTreeClient* client = nullptr; 366 TestWindowTreeClient* client = nullptr;
367 WindowTree* tree = nullptr; 367 WindowTree* tree = nullptr;
368 ServerWindow* window = nullptr; 368 ServerWindow* window = nullptr;
369 EXPECT_NO_FATAL_FAILURE(SetupEventTargeting(&client, &tree, &window)); 369 EXPECT_NO_FATAL_FAILURE(SetupEventTargeting(&client, &tree, &window));
370 370
371 // Create an observer for pointer-up events (which do not cause focus 371 // Create an observer for pointer-up events (which do not cause focus
372 // changes). 372 // changes).
373 WindowTreeTestApi(tree).SetEventObserver( 373 WindowTreeTestApi(tree).AddEventObserver(
374 CreateEventMatcher(ui::mojom::EventType::POINTER_UP), 111u); 374 CreateEventMatcher(ui::mojom::EventType::POINTER_UP), 111u);
375 375
376 // Create an event inside the bounds of the client. 376 // Create an event inside the bounds of the client.
377 ui::PointerEvent pointer_up = CreatePointerUpEvent(25, 25); 377 ui::PointerEvent pointer_up = CreatePointerUpEvent(25, 25);
378 378
379 // The event is dispatched once, with a flag set that it matched the event 379 // The event is dispatched once, with a flag set that it matched the event
380 // observer. 380 // observer.
381 DispatchEventAndAckImmediately(pointer_up); 381 DispatchEventAndAckImmediately(pointer_up);
382 ASSERT_EQ(1u, client->tracker()->changes()->size()); 382 ASSERT_EQ(1u, client->tracker()->changes()->size());
383 EXPECT_EQ("InputEvent window=2,1 event_action=18 event_observer_id=111", 383 EXPECT_EQ("InputEvent window=2,1 event_action=18 event_observer_id=111",
384 SingleChangeToDescription(*client->tracker()->changes())); 384 SingleChangeToDescription(*client->tracker()->changes()));
385 } 385 }
386 386
387 // Tests that events generated by user A are not observed by event observers for 387 // Tests that events generated by user A are not observed by event observers for
388 // user B. 388 // user B.
389 TEST_F(WindowTreeTest, SetEventObserverWrongUser) { 389 TEST_F(WindowTreeTest, SetEventObserverWrongUser) {
390 // Embed a window tree belonging to a different user. 390 // Embed a window tree belonging to a different user.
391 TestWindowTreeBinding* other_binding; 391 TestWindowTreeBinding* other_binding;
392 WindowTree* other_tree = CreateNewTree("other_user", &other_binding); 392 WindowTree* other_tree = CreateNewTree("other_user", &other_binding);
393 other_binding->client()->tracker()->changes()->clear(); 393 other_binding->client()->tracker()->changes()->clear();
394 394
395 // Set event observers on both the wm tree and the other user's tree. 395 // Set event observers on both the wm tree and the other user's tree.
396 WindowTreeTestApi(wm_tree()).SetEventObserver( 396 WindowTreeTestApi(wm_tree()).AddEventObserver(
397 CreateEventMatcher(ui::mojom::EventType::POINTER_UP), 111u); 397 CreateEventMatcher(ui::mojom::EventType::POINTER_UP), 111u);
398 WindowTreeTestApi(other_tree) 398 WindowTreeTestApi(other_tree)
399 .SetEventObserver(CreateEventMatcher(ui::mojom::EventType::POINTER_UP), 399 .AddEventObserver(CreateEventMatcher(ui::mojom::EventType::POINTER_UP),
400 222u); 400 222u);
401 401
402 // An event is observed by the wm tree, but not by the other user's tree. 402 // An event is observed by the wm tree, but not by the other user's tree.
403 DispatchEventAndAckImmediately(CreatePointerUpEvent(5, 5)); 403 DispatchEventAndAckImmediately(CreatePointerUpEvent(5, 5));
404 ASSERT_EQ(1u, wm_client()->tracker()->changes()->size()); 404 ASSERT_EQ(1u, wm_client()->tracker()->changes()->size());
405 EXPECT_EQ("InputEvent window=0,3 event_action=18 event_observer_id=111", 405 EXPECT_EQ("InputEvent window=0,3 event_action=18 event_observer_id=111",
406 SingleChangeToDescription(*wm_client()->tracker()->changes())); 406 SingleChangeToDescription(*wm_client()->tracker()->changes()));
407 ASSERT_EQ(0u, other_binding->client()->tracker()->changes()->size()); 407 ASSERT_EQ(0u, other_binding->client()->tracker()->changes()->size());
408 } 408 }
409 409
410 // Tests that an event observer cannot observe keystrokes. 410 // Tests that an event observer cannot observe keystrokes.
411 TEST_F(WindowTreeTest, SetEventObserverKeyEventsDisallowed) { 411 TEST_F(WindowTreeTest, SetEventObserverKeyEventsDisallowed) {
412 WindowTreeTestApi(wm_tree()).SetEventObserver( 412 WindowTreeTestApi(wm_tree()).AddEventObserver(
413 CreateEventMatcher(ui::mojom::EventType::KEY_PRESSED), 111u); 413 CreateEventMatcher(ui::mojom::EventType::KEY_PRESSED), 111u);
414 ui::KeyEvent key_pressed(ui::ET_KEY_PRESSED, ui::VKEY_A, ui::EF_NONE); 414 ui::KeyEvent key_pressed(ui::ET_KEY_PRESSED, ui::VKEY_A, ui::EF_NONE);
415 DispatchEventAndAckImmediately(key_pressed); 415 DispatchEventAndAckImmediately(key_pressed);
416 EXPECT_EQ(0u, wm_client()->tracker()->changes()->size()); 416 EXPECT_EQ(0u, wm_client()->tracker()->changes()->size());
417 417
418 WindowTreeTestApi(wm_tree()).SetEventObserver( 418 WindowTreeTestApi(wm_tree()).AddEventObserver(
419 CreateEventMatcher(ui::mojom::EventType::KEY_RELEASED), 222u); 419 CreateEventMatcher(ui::mojom::EventType::KEY_RELEASED), 222u);
420 ui::KeyEvent key_released(ui::ET_KEY_RELEASED, ui::VKEY_A, ui::EF_NONE); 420 ui::KeyEvent key_released(ui::ET_KEY_RELEASED, ui::VKEY_A, ui::EF_NONE);
421 DispatchEventAndAckImmediately(key_released); 421 DispatchEventAndAckImmediately(key_released);
422 EXPECT_EQ(0u, wm_client()->tracker()->changes()->size()); 422 EXPECT_EQ(0u, wm_client()->tracker()->changes()->size());
423 } 423 }
424 424
425 TEST_F(WindowTreeTest, CursorChangesWhenMouseOverWindowAndWindowSetsCursor) { 425 TEST_F(WindowTreeTest, CursorChangesWhenMouseOverWindowAndWindowSetsCursor) {
426 TestWindowTreeClient* embed_client = nullptr; 426 TestWindowTreeClient* embed_client = nullptr;
427 WindowTree* tree = nullptr; 427 WindowTree* tree = nullptr;
428 ServerWindow* window = nullptr; 428 ServerWindow* window = nullptr;
(...skipping 812 matching lines...) Expand 10 before | Expand all | Expand 10 after
1241 kChangeId, kInvalidWindowId, mojom::MoveLoopSource::MOUSE, 1241 kChangeId, kInvalidWindowId, mojom::MoveLoopSource::MOUSE,
1242 gfx::Point(0, 0)); 1242 gfx::Point(0, 0));
1243 1243
1244 EXPECT_EQ("ChangeCompleted id=8 sucess=false", 1244 EXPECT_EQ("ChangeCompleted id=8 sucess=false",
1245 SingleChangeToDescription(*embed_client->tracker()->changes())); 1245 SingleChangeToDescription(*embed_client->tracker()->changes()));
1246 } 1246 }
1247 1247
1248 } // namespace test 1248 } // namespace test
1249 } // namespace ws 1249 } // namespace ws
1250 } // namespace ui 1250 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698