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

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: tot-merge 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
« no previous file with comments | « components/mus/ws/window_tree_host_impl.cc ('k') | mandoline/ui/desktop_ui/browser_window.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 EXPECT_TRUE(connection1->NewWindow(child1, ServerWindow::Properties())); 383 EXPECT_TRUE(connection1->NewWindow(child1, ServerWindow::Properties()));
384 EXPECT_TRUE(connection1->AddWindow(embed_window_id, child1)); 384 EXPECT_TRUE(connection1->AddWindow(embed_window_id, child1));
385 ServerWindow* v1 = connection1->GetWindow(child1); 385 ServerWindow* v1 = connection1->GetWindow(child1);
386 v1->SetVisible(true); 386 v1->SetVisible(true);
387 v1->SetBounds(gfx::Rect(20, 20, 20, 20)); 387 v1->SetBounds(gfx::Rect(20, 20, 20, 20));
388 388
389 TestWindowTreeClient* connection1_client = last_window_tree_client(); 389 TestWindowTreeClient* connection1_client = last_window_tree_client();
390 connection1_client->tracker()->changes()->clear(); 390 connection1_client->tracker()->changes()->clear();
391 wm_client()->tracker()->changes()->clear(); 391 wm_client()->tracker()->changes()->clear();
392 392
393 // Focus should not go to |child1| yet, since the parent still doesn't allow
394 // active children.
393 display_manager_delegate()->OnEvent(CreatePointerDownEvent(21, 22)); 395 display_manager_delegate()->OnEvent(CreatePointerDownEvent(21, 22));
396 EXPECT_EQ(nullptr, connection1->GetHost()->GetFocusedWindow());
397 display_manager_delegate()->OnEvent(CreatePointerUpEvent(21, 22));
398 connection1_client->tracker()->changes()->clear();
399 wm_client()->tracker()->changes()->clear();
400
401 connection1->GetHost()->AddActivationParent(
402 WindowIdToTransportId(embed_window_id));
403
394 // Focus should go to child1. This result in notifying both the window 404 // Focus should go to child1. This result in notifying both the window
395 // manager and client connection being notified. 405 // manager and client connection being notified.
406 display_manager_delegate()->OnEvent(CreatePointerDownEvent(21, 22));
396 EXPECT_EQ(v1, connection1->GetHost()->GetFocusedWindow()); 407 EXPECT_EQ(v1, connection1->GetHost()->GetFocusedWindow());
397 ASSERT_GE(wm_client()->tracker()->changes()->size(), 1u); 408 ASSERT_GE(wm_client()->tracker()->changes()->size(), 1u);
398 EXPECT_EQ("Focused id=2,1", 409 EXPECT_EQ("Focused id=2,1",
399 ChangesToDescription1(*wm_client()->tracker()->changes())[0]); 410 ChangesToDescription1(*wm_client()->tracker()->changes())[0]);
400 ASSERT_GE(connection1_client->tracker()->changes()->size(), 1u); 411 ASSERT_GE(connection1_client->tracker()->changes()->size(), 1u);
401 EXPECT_EQ( 412 EXPECT_EQ(
402 "Focused id=2,1", 413 "Focused id=2,1",
403 ChangesToDescription1(*connection1_client->tracker()->changes())[0]); 414 ChangesToDescription1(*connection1_client->tracker()->changes())[0]);
404 415
405 display_manager_delegate()->OnEvent(CreatePointerUpEvent(21, 22)); 416 display_manager_delegate()->OnEvent(CreatePointerUpEvent(21, 22));
406 wm_client()->tracker()->changes()->clear(); 417 wm_client()->tracker()->changes()->clear();
407 connection1_client->tracker()->changes()->clear(); 418 connection1_client->tracker()->changes()->clear();
408 419
409 // Press outside of the embedded window. Focus should go to the root. Notice 420 // Press outside of the embedded window. Note that root cannot be focused
410 // the client1 doesn't see who has focus as the focused window (root) isn't 421 // (because it cannot be activated). So the focus would not move in this case.
411 // visible to it.
412 display_manager_delegate()->OnEvent(CreatePointerDownEvent(61, 22)); 422 display_manager_delegate()->OnEvent(CreatePointerDownEvent(61, 22));
413 EXPECT_EQ(host_connection()->window_tree_host()->root_window(), 423 EXPECT_EQ(v1, host_connection()->window_tree_host()->GetFocusedWindow());
414 host_connection()->window_tree_host()->GetFocusedWindow());
415 ASSERT_GE(wm_client()->tracker()->changes()->size(), 1u);
416 EXPECT_EQ("Focused id=0,2",
417 ChangesToDescription1(*wm_client()->tracker()->changes())[0]);
418 ASSERT_GE(connection1_client->tracker()->changes()->size(), 1u);
419 EXPECT_EQ(
420 "Focused id=null",
421 ChangesToDescription1(*connection1_client->tracker()->changes())[0]);
422 424
423 display_manager_delegate()->OnEvent(CreatePointerUpEvent(21, 22)); 425 display_manager_delegate()->OnEvent(CreatePointerUpEvent(21, 22));
424 wm_client()->tracker()->changes()->clear(); 426 wm_client()->tracker()->changes()->clear();
425 connection1_client->tracker()->changes()->clear(); 427 connection1_client->tracker()->changes()->clear();
426 428
427 // Press in the same location. Should not get a focus change event (only input 429 // Press in the same location. Should not get a focus change event (only input
428 // event). 430 // event).
429 display_manager_delegate()->OnEvent(CreatePointerDownEvent(61, 22)); 431 display_manager_delegate()->OnEvent(CreatePointerDownEvent(61, 22));
430 EXPECT_EQ(host_connection()->window_tree_host()->root_window(), 432 EXPECT_EQ(v1, host_connection()->window_tree_host()->GetFocusedWindow());
431 host_connection()->window_tree_host()->GetFocusedWindow()); 433 ASSERT_EQ(wm_client()->tracker()->changes()->size(), 1u)
432 ASSERT_EQ(wm_client()->tracker()->changes()->size(), 1u); 434 << SingleChangeToDescription(*wm_client()->tracker()->changes());
433 EXPECT_EQ("InputEvent window=0,2 event_action=4", 435 EXPECT_EQ("InputEvent window=0,2 event_action=4",
434 ChangesToDescription1(*wm_client()->tracker()->changes())[0]); 436 ChangesToDescription1(*wm_client()->tracker()->changes())[0]);
435 EXPECT_TRUE(connection1_client->tracker()->changes()->empty()); 437 EXPECT_TRUE(connection1_client->tracker()->changes()->empty());
436 } 438 }
437 439
438 TEST_F(WindowTreeTest, BasicInputEventTarget) { 440 TEST_F(WindowTreeTest, BasicInputEventTarget) {
439 const WindowId embed_window_id(wm_connection()->id(), 1); 441 const WindowId embed_window_id(wm_connection()->id(), 1);
440 EXPECT_TRUE( 442 EXPECT_TRUE(
441 wm_connection()->NewWindow(embed_window_id, ServerWindow::Properties())); 443 wm_connection()->NewWindow(embed_window_id, ServerWindow::Properties()));
442 EXPECT_TRUE(wm_connection()->SetWindowVisibility(embed_window_id, true)); 444 EXPECT_TRUE(wm_connection()->SetWindowVisibility(embed_window_id, true));
(...skipping 15 matching lines...) Expand all
458 ASSERT_TRUE(connection1 != nullptr); 460 ASSERT_TRUE(connection1 != nullptr);
459 ASSERT_NE(connection1, wm_connection()); 461 ASSERT_NE(connection1, wm_connection());
460 462
461 connection_manager() 463 connection_manager()
462 ->GetWindow(embed_window_id) 464 ->GetWindow(embed_window_id)
463 ->SetBounds(gfx::Rect(0, 0, 50, 50)); 465 ->SetBounds(gfx::Rect(0, 0, 50, 50));
464 466
465 const WindowId child1(connection1->id(), 1); 467 const WindowId child1(connection1->id(), 1);
466 EXPECT_TRUE(connection1->NewWindow(child1, ServerWindow::Properties())); 468 EXPECT_TRUE(connection1->NewWindow(child1, ServerWindow::Properties()));
467 EXPECT_TRUE(connection1->AddWindow(embed_window_id, child1)); 469 EXPECT_TRUE(connection1->AddWindow(embed_window_id, child1));
470 connection1->GetHost()->AddActivationParent(
471 WindowIdToTransportId(embed_window_id));
472
468 ServerWindow* v1 = connection1->GetWindow(child1); 473 ServerWindow* v1 = connection1->GetWindow(child1);
469 v1->SetVisible(true); 474 v1->SetVisible(true);
470 v1->SetBounds(gfx::Rect(20, 20, 20, 20)); 475 v1->SetBounds(gfx::Rect(20, 20, 20, 20));
471 476
472 TestWindowTreeClient* embed_connection = last_window_tree_client(); 477 TestWindowTreeClient* embed_connection = last_window_tree_client();
473 embed_connection->tracker()->changes()->clear(); 478 embed_connection->tracker()->changes()->clear();
474 wm_client()->tracker()->changes()->clear(); 479 wm_client()->tracker()->changes()->clear();
475 480
476 // Send an event to |v1|. |embed_connection| should get the event, not 481 // Send an event to |v1|. |embed_connection| should get the event, not
477 // |wm_client|, since |v1| lives inside an embedded window. 482 // |wm_client|, since |v1| lives inside an embedded window.
478 display_manager_delegate()->OnEvent(CreatePointerDownEvent(21, 22)); 483 display_manager_delegate()->OnEvent(CreatePointerDownEvent(21, 22));
479 ASSERT_EQ(1u, wm_client()->tracker()->changes()->size()); 484 ASSERT_EQ(1u, wm_client()->tracker()->changes()->size());
480 EXPECT_EQ("Focused id=2,1", 485 EXPECT_EQ("Focused id=2,1",
481 ChangesToDescription1(*wm_client()->tracker()->changes())[0]); 486 ChangesToDescription1(*wm_client()->tracker()->changes())[0]);
482 ASSERT_EQ(2u, embed_connection->tracker()->changes()->size()); 487 ASSERT_EQ(2u, embed_connection->tracker()->changes()->size());
483 EXPECT_EQ("Focused id=2,1", 488 EXPECT_EQ("Focused id=2,1",
484 ChangesToDescription1(*embed_connection->tracker()->changes())[0]); 489 ChangesToDescription1(*embed_connection->tracker()->changes())[0]);
485 EXPECT_EQ("InputEvent window=2,1 event_action=4", 490 EXPECT_EQ("InputEvent window=2,1 event_action=4",
486 ChangesToDescription1(*embed_connection->tracker()->changes())[1]); 491 ChangesToDescription1(*embed_connection->tracker()->changes())[1]);
487 } 492 }
488 493
489 } // namespace ws 494 } // namespace ws
490 495
491 } // namespace mus 496 } // namespace mus
OLDNEW
« no previous file with comments | « components/mus/ws/window_tree_host_impl.cc ('k') | mandoline/ui/desktop_ui/browser_window.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698