Index: components/mus/ws/window_tree_unittest.cc |
diff --git a/components/mus/ws/window_tree_unittest.cc b/components/mus/ws/window_tree_unittest.cc |
index 5f69b294e97ebb5e64737a795ff3088859acb79e..d5cffafeebe293c027d34f250368b3f755a2fb75 100644 |
--- a/components/mus/ws/window_tree_unittest.cc |
+++ b/components/mus/ws/window_tree_unittest.cc |
@@ -390,9 +390,20 @@ TEST_F(WindowTreeTest, FocusOnPointer) { |
connection1_client->tracker()->changes()->clear(); |
wm_client()->tracker()->changes()->clear(); |
+ // Focus should not go to |child1| yet, since the parent still doesn't allow |
+ // active children. |
display_manager_delegate()->OnEvent(CreatePointerDownEvent(21, 22)); |
+ EXPECT_EQ(nullptr, connection1->GetHost()->GetFocusedWindow()); |
+ display_manager_delegate()->OnEvent(CreatePointerUpEvent(21, 22)); |
+ connection1_client->tracker()->changes()->clear(); |
+ wm_client()->tracker()->changes()->clear(); |
+ |
+ connection1->GetHost()->AddActivationParent( |
+ WindowIdToTransportId(embed_window_id)); |
+ |
// Focus should go to child1. This result in notifying both the window |
// manager and client connection being notified. |
+ display_manager_delegate()->OnEvent(CreatePointerDownEvent(21, 22)); |
EXPECT_EQ(v1, connection1->GetHost()->GetFocusedWindow()); |
ASSERT_GE(wm_client()->tracker()->changes()->size(), 1u); |
EXPECT_EQ("Focused id=2,1", |
@@ -406,19 +417,10 @@ TEST_F(WindowTreeTest, FocusOnPointer) { |
wm_client()->tracker()->changes()->clear(); |
connection1_client->tracker()->changes()->clear(); |
- // Press outside of the embedded window. Focus should go to the root. Notice |
- // the client1 doesn't see who has focus as the focused window (root) isn't |
- // visible to it. |
+ // Press outside of the embedded window. Note that root cannot be focused |
+ // (because it cannot be activated). So the focus would not move in this case. |
display_manager_delegate()->OnEvent(CreatePointerDownEvent(61, 22)); |
- EXPECT_EQ(host_connection()->window_tree_host()->root_window(), |
- host_connection()->window_tree_host()->GetFocusedWindow()); |
- ASSERT_GE(wm_client()->tracker()->changes()->size(), 1u); |
- EXPECT_EQ("Focused id=0,2", |
- ChangesToDescription1(*wm_client()->tracker()->changes())[0]); |
- ASSERT_GE(connection1_client->tracker()->changes()->size(), 1u); |
- EXPECT_EQ( |
- "Focused id=null", |
- ChangesToDescription1(*connection1_client->tracker()->changes())[0]); |
+ EXPECT_EQ(v1, host_connection()->window_tree_host()->GetFocusedWindow()); |
display_manager_delegate()->OnEvent(CreatePointerUpEvent(21, 22)); |
wm_client()->tracker()->changes()->clear(); |
@@ -427,9 +429,9 @@ TEST_F(WindowTreeTest, FocusOnPointer) { |
// Press in the same location. Should not get a focus change event (only input |
// event). |
display_manager_delegate()->OnEvent(CreatePointerDownEvent(61, 22)); |
- EXPECT_EQ(host_connection()->window_tree_host()->root_window(), |
- host_connection()->window_tree_host()->GetFocusedWindow()); |
- ASSERT_EQ(wm_client()->tracker()->changes()->size(), 1u); |
+ EXPECT_EQ(v1, host_connection()->window_tree_host()->GetFocusedWindow()); |
+ ASSERT_EQ(wm_client()->tracker()->changes()->size(), 1u) |
+ << SingleChangeToDescription(*wm_client()->tracker()->changes()); |
EXPECT_EQ("InputEvent window=0,2 event_action=4", |
ChangesToDescription1(*wm_client()->tracker()->changes())[0]); |
EXPECT_TRUE(connection1_client->tracker()->changes()->empty()); |
@@ -465,6 +467,9 @@ TEST_F(WindowTreeTest, BasicInputEventTarget) { |
const WindowId child1(connection1->id(), 1); |
EXPECT_TRUE(connection1->NewWindow(child1, ServerWindow::Properties())); |
EXPECT_TRUE(connection1->AddWindow(embed_window_id, child1)); |
+ connection1->GetHost()->AddActivationParent( |
+ WindowIdToTransportId(embed_window_id)); |
+ |
ServerWindow* v1 = connection1->GetWindow(child1); |
v1->SetVisible(true); |
v1->SetBounds(gfx::Rect(20, 20, 20, 20)); |