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

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

Issue 1459463004: mus: Allow the WM to specify the windows that can have active children. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 5 years, 1 month 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 <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "components/mus/common/types.h" 9 #include "components/mus/common/types.h"
10 #include "components/mus/common/util.h" 10 #include "components/mus/common/util.h"
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 EXPECT_TRUE(connection1->NewWindow(child1)); 382 EXPECT_TRUE(connection1->NewWindow(child1));
383 EXPECT_TRUE(connection1->AddWindow(embed_window_id, child1)); 383 EXPECT_TRUE(connection1->AddWindow(embed_window_id, child1));
384 ServerWindow* v1 = connection1->GetWindow(child1); 384 ServerWindow* v1 = connection1->GetWindow(child1);
385 v1->SetVisible(true); 385 v1->SetVisible(true);
386 v1->SetBounds(gfx::Rect(20, 20, 20, 20)); 386 v1->SetBounds(gfx::Rect(20, 20, 20, 20));
387 387
388 TestWindowTreeClient* connection1_client = last_window_tree_client(); 388 TestWindowTreeClient* connection1_client = last_window_tree_client();
389 connection1_client->tracker()->changes()->clear(); 389 connection1_client->tracker()->changes()->clear();
390 wm_client()->tracker()->changes()->clear(); 390 wm_client()->tracker()->changes()->clear();
391 391
392 // Focus should not go to |child1| yet, since the parent still doesn't allow
393 // active children.
392 display_manager_delegate()->OnEvent(CreatePointerDownEvent(21, 22)); 394 display_manager_delegate()->OnEvent(CreatePointerDownEvent(21, 22));
395 EXPECT_EQ(nullptr, connection1->GetHost()->GetFocusedWindow());
396 display_manager_delegate()->OnEvent(CreatePointerUpEvent(21, 22));
397 connection1_client->tracker()->changes()->clear();
398 wm_client()->tracker()->changes()->clear();
399
400 connection1->GetHost()->SetActivationParent(
401 WindowIdToTransportId(embed_window_id), true);
402
393 // Focus should go to child1. This result in notifying both the window 403 // Focus should go to child1. This result in notifying both the window
394 // manager and client connection being notified. 404 // manager and client connection being notified.
405 display_manager_delegate()->OnEvent(CreatePointerDownEvent(21, 22));
395 EXPECT_EQ(v1, connection1->GetHost()->GetFocusedWindow()); 406 EXPECT_EQ(v1, connection1->GetHost()->GetFocusedWindow());
396 ASSERT_GE(wm_client()->tracker()->changes()->size(), 1u); 407 ASSERT_GE(wm_client()->tracker()->changes()->size(), 1u);
397 EXPECT_EQ("Focused id=2,1", 408 EXPECT_EQ("Focused id=2,1",
398 ChangesToDescription1(*wm_client()->tracker()->changes())[0]); 409 ChangesToDescription1(*wm_client()->tracker()->changes())[0]);
399 ASSERT_GE(connection1_client->tracker()->changes()->size(), 1u); 410 ASSERT_GE(connection1_client->tracker()->changes()->size(), 1u);
400 EXPECT_EQ( 411 EXPECT_EQ(
401 "Focused id=2,1", 412 "Focused id=2,1",
402 ChangesToDescription1(*connection1_client->tracker()->changes())[0]); 413 ChangesToDescription1(*connection1_client->tracker()->changes())[0]);
403 414
404 display_manager_delegate()->OnEvent(CreatePointerUpEvent(21, 22)); 415 display_manager_delegate()->OnEvent(CreatePointerUpEvent(21, 22));
405 wm_client()->tracker()->changes()->clear(); 416 wm_client()->tracker()->changes()->clear();
406 connection1_client->tracker()->changes()->clear(); 417 connection1_client->tracker()->changes()->clear();
407 418
408 // Press outside of the embedded window. Focus should go to the root. Notice 419 // Press outside of the embedded window. Focus should go to the root. Notice
409 // the client1 doesn't see who has focus as the focused window (root) isn't 420 // the client1 doesn't see who has focus as the focused window (root) isn't
410 // visible to it. 421 // visible to it.
411 display_manager_delegate()->OnEvent(CreatePointerDownEvent(61, 22)); 422 display_manager_delegate()->OnEvent(CreatePointerDownEvent(61, 22));
412 EXPECT_EQ(host_connection()->window_tree_host()->root_window(), 423 EXPECT_EQ(nullptr, host_connection()->window_tree_host()->GetFocusedWindow());
413 host_connection()->window_tree_host()->GetFocusedWindow());
414 ASSERT_GE(wm_client()->tracker()->changes()->size(), 1u); 424 ASSERT_GE(wm_client()->tracker()->changes()->size(), 1u);
415 EXPECT_EQ("Focused id=0,2", 425 EXPECT_EQ("Focused id=null",
416 ChangesToDescription1(*wm_client()->tracker()->changes())[0]); 426 ChangesToDescription1(*wm_client()->tracker()->changes())[0]);
417 ASSERT_GE(connection1_client->tracker()->changes()->size(), 1u); 427 ASSERT_GE(connection1_client->tracker()->changes()->size(), 1u);
418 EXPECT_EQ( 428 EXPECT_EQ(
419 "Focused id=null", 429 "Focused id=null",
420 ChangesToDescription1(*connection1_client->tracker()->changes())[0]); 430 ChangesToDescription1(*connection1_client->tracker()->changes())[0]);
421 431
422 display_manager_delegate()->OnEvent(CreatePointerUpEvent(21, 22)); 432 display_manager_delegate()->OnEvent(CreatePointerUpEvent(21, 22));
423 wm_client()->tracker()->changes()->clear(); 433 wm_client()->tracker()->changes()->clear();
424 connection1_client->tracker()->changes()->clear(); 434 connection1_client->tracker()->changes()->clear();
425 435
426 // Press in the same location. Should not get a focus change event (only input 436 // Press in the same location. Should not get a focus change event (only input
427 // event). 437 // event).
428 display_manager_delegate()->OnEvent(CreatePointerDownEvent(61, 22)); 438 display_manager_delegate()->OnEvent(CreatePointerDownEvent(61, 22));
429 EXPECT_EQ(host_connection()->window_tree_host()->root_window(), 439 EXPECT_EQ(nullptr, host_connection()->window_tree_host()->GetFocusedWindow());
430 host_connection()->window_tree_host()->GetFocusedWindow()); 440 ASSERT_EQ(wm_client()->tracker()->changes()->size(), 1u)
431 ASSERT_EQ(wm_client()->tracker()->changes()->size(), 1u); 441 << SingleChangeToDescription(*wm_client()->tracker()->changes());
432 EXPECT_EQ("InputEvent window=0,2 event_action=4", 442 EXPECT_EQ("InputEvent window=0,2 event_action=4",
433 ChangesToDescription1(*wm_client()->tracker()->changes())[0]); 443 ChangesToDescription1(*wm_client()->tracker()->changes())[0]);
434 EXPECT_TRUE(connection1_client->tracker()->changes()->empty()); 444 EXPECT_TRUE(connection1_client->tracker()->changes()->empty());
435 } 445 }
436 446
437 TEST_F(WindowTreeTest, BasicInputEventTarget) { 447 TEST_F(WindowTreeTest, BasicInputEventTarget) {
438 const WindowId embed_window_id(wm_connection()->id(), 1); 448 const WindowId embed_window_id(wm_connection()->id(), 1);
439 EXPECT_TRUE(wm_connection()->NewWindow(embed_window_id)); 449 EXPECT_TRUE(wm_connection()->NewWindow(embed_window_id));
440 EXPECT_TRUE(wm_connection()->SetWindowVisibility(embed_window_id, true)); 450 EXPECT_TRUE(wm_connection()->SetWindowVisibility(embed_window_id, true));
441 EXPECT_TRUE( 451 EXPECT_TRUE(
(...skipping 14 matching lines...) Expand all
456 ASSERT_TRUE(connection1 != nullptr); 466 ASSERT_TRUE(connection1 != nullptr);
457 ASSERT_NE(connection1, wm_connection()); 467 ASSERT_NE(connection1, wm_connection());
458 468
459 connection_manager() 469 connection_manager()
460 ->GetWindow(embed_window_id) 470 ->GetWindow(embed_window_id)
461 ->SetBounds(gfx::Rect(0, 0, 50, 50)); 471 ->SetBounds(gfx::Rect(0, 0, 50, 50));
462 472
463 const WindowId child1(connection1->id(), 1); 473 const WindowId child1(connection1->id(), 1);
464 EXPECT_TRUE(connection1->NewWindow(child1)); 474 EXPECT_TRUE(connection1->NewWindow(child1));
465 EXPECT_TRUE(connection1->AddWindow(embed_window_id, child1)); 475 EXPECT_TRUE(connection1->AddWindow(embed_window_id, child1));
476 connection1->GetHost()->SetActivationParent(
477 WindowIdToTransportId(embed_window_id), true);
478
466 ServerWindow* v1 = connection1->GetWindow(child1); 479 ServerWindow* v1 = connection1->GetWindow(child1);
467 v1->SetVisible(true); 480 v1->SetVisible(true);
468 v1->SetBounds(gfx::Rect(20, 20, 20, 20)); 481 v1->SetBounds(gfx::Rect(20, 20, 20, 20));
469 482
470 TestWindowTreeClient* embed_connection = last_window_tree_client(); 483 TestWindowTreeClient* embed_connection = last_window_tree_client();
471 embed_connection->tracker()->changes()->clear(); 484 embed_connection->tracker()->changes()->clear();
472 wm_client()->tracker()->changes()->clear(); 485 wm_client()->tracker()->changes()->clear();
473 486
474 // Send an event to |v1|. |embed_connection| should get the event, not 487 // Send an event to |v1|. |embed_connection| should get the event, not
475 // |wm_client|, since |v1| lives inside an embedded window. 488 // |wm_client|, since |v1| lives inside an embedded window.
476 display_manager_delegate()->OnEvent(CreatePointerDownEvent(21, 22)); 489 display_manager_delegate()->OnEvent(CreatePointerDownEvent(21, 22));
477 ASSERT_EQ(1u, wm_client()->tracker()->changes()->size()); 490 ASSERT_EQ(1u, wm_client()->tracker()->changes()->size());
478 EXPECT_EQ("Focused id=2,1", 491 EXPECT_EQ("Focused id=2,1",
479 ChangesToDescription1(*wm_client()->tracker()->changes())[0]); 492 ChangesToDescription1(*wm_client()->tracker()->changes())[0]);
480 ASSERT_EQ(2u, embed_connection->tracker()->changes()->size()); 493 ASSERT_EQ(2u, embed_connection->tracker()->changes()->size());
481 EXPECT_EQ("Focused id=2,1", 494 EXPECT_EQ("Focused id=2,1",
482 ChangesToDescription1(*embed_connection->tracker()->changes())[0]); 495 ChangesToDescription1(*embed_connection->tracker()->changes())[0]);
483 EXPECT_EQ("InputEvent window=2,1 event_action=4", 496 EXPECT_EQ("InputEvent window=2,1 event_action=4",
484 ChangesToDescription1(*embed_connection->tracker()->changes())[1]); 497 ChangesToDescription1(*embed_connection->tracker()->changes())[1]);
485 } 498 }
486 499
487 } // namespace ws 500 } // namespace ws
488 501
489 } // namespace mus 502 } // namespace mus
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698