OLD | NEW |
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 "athena/wm/public/window_manager.h" | 5 #include "athena/wm/public/window_manager.h" |
6 | 6 |
7 #include "athena/screen/public/screen_manager.h" | 7 #include "athena/screen/public/screen_manager.h" |
8 #include "athena/test/athena_test_base.h" | 8 #include "athena/test/athena_test_base.h" |
9 #include "athena/wm/public/window_list_provider.h" | 9 #include "athena/wm/public/window_list_provider.h" |
10 #include "athena/wm/split_view_controller.h" | 10 #include "athena/wm/split_view_controller.h" |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 ASSERT_FALSE(WindowManager::GetInstance()->IsOverviewModeActive()); | 53 ASSERT_FALSE(WindowManager::GetInstance()->IsOverviewModeActive()); |
54 EXPECT_EQ(first->bounds().ToString(), second->bounds().ToString()); | 54 EXPECT_EQ(first->bounds().ToString(), second->bounds().ToString()); |
55 EXPECT_EQ(gfx::Screen::GetNativeScreen() | 55 EXPECT_EQ(gfx::Screen::GetNativeScreen() |
56 ->GetPrimaryDisplay() | 56 ->GetPrimaryDisplay() |
57 .work_area() | 57 .work_area() |
58 .size() | 58 .size() |
59 .ToString(), | 59 .ToString(), |
60 first->bounds().size().ToString()); | 60 first->bounds().size().ToString()); |
61 EXPECT_FALSE(WindowManager::GetInstance()->IsOverviewModeActive()); | 61 EXPECT_FALSE(WindowManager::GetInstance()->IsOverviewModeActive()); |
62 | 62 |
63 // Tests that going into overview mode does not change the window bounds. | |
64 WindowManager::GetInstance()->ToggleOverview(); | 63 WindowManager::GetInstance()->ToggleOverview(); |
65 ASSERT_TRUE(WindowManager::GetInstance()->IsOverviewModeActive()); | 64 ASSERT_TRUE(WindowManager::GetInstance()->IsOverviewModeActive()); |
| 65 |
| 66 // |second| should no longer be active. If |second| were to stay active, it |
| 67 // would be possible to type text into a text field in |second| and to stay |
| 68 // in overview mode. |
| 69 EXPECT_FALSE(wm::IsActiveWindow(first.get())); |
| 70 EXPECT_FALSE(wm::IsActiveWindow(second.get())); |
| 71 |
| 72 // Entering overview mode should not have changed the window bounds. |
66 EXPECT_EQ(first->bounds().ToString(), second->bounds().ToString()); | 73 EXPECT_EQ(first->bounds().ToString(), second->bounds().ToString()); |
67 EXPECT_EQ(gfx::Screen::GetNativeScreen() | 74 EXPECT_EQ(gfx::Screen::GetNativeScreen() |
68 ->GetPrimaryDisplay() | 75 ->GetPrimaryDisplay() |
69 .work_area() | 76 .work_area() |
70 .size() | 77 .size() |
71 .ToString(), | 78 .ToString(), |
72 first->bounds().size().ToString()); | 79 first->bounds().size().ToString()); |
73 EXPECT_TRUE(first->IsVisible()); | 80 EXPECT_TRUE(first->IsVisible()); |
74 EXPECT_TRUE(second->IsVisible()); | 81 EXPECT_TRUE(second->IsVisible()); |
75 | 82 |
76 // Terminate overview mode. |first| should be hidden, since it's not visible | 83 // Terminate overview mode. |first| should be hidden, since it's not visible |
77 // to the user anymore. | 84 // to the user anymore. |
78 WindowManager::GetInstance()->ToggleOverview(); | 85 WindowManager::GetInstance()->ToggleOverview(); |
79 ASSERT_FALSE(WindowManager::GetInstance()->IsOverviewModeActive()); | 86 ASSERT_FALSE(WindowManager::GetInstance()->IsOverviewModeActive()); |
80 EXPECT_FALSE(first->IsVisible()); | 87 EXPECT_FALSE(first->IsVisible()); |
81 EXPECT_TRUE(second->IsVisible()); | 88 EXPECT_TRUE(second->IsVisible()); |
| 89 EXPECT_TRUE(wm::IsActiveWindow(second.get())); |
82 } | 90 } |
83 | 91 |
84 TEST_F(WindowManagerTest, OverviewToSplitViewMode) { | 92 TEST_F(WindowManagerTest, OverviewToSplitViewMode) { |
85 test::WindowManagerImplTestApi wm_api; | 93 test::WindowManagerImplTestApi wm_api; |
86 | 94 |
87 aura::test::TestWindowDelegate delegate; | 95 aura::test::TestWindowDelegate delegate; |
88 scoped_ptr<aura::Window> w1(CreateTestWindow(&delegate, gfx::Rect())); | 96 scoped_ptr<aura::Window> w1(CreateTestWindow(&delegate, gfx::Rect())); |
89 scoped_ptr<aura::Window> w2(CreateTestWindow(&delegate, gfx::Rect())); | 97 scoped_ptr<aura::Window> w2(CreateTestWindow(&delegate, gfx::Rect())); |
90 scoped_ptr<aura::Window> w3(CreateTestWindow(&delegate, gfx::Rect())); | 98 scoped_ptr<aura::Window> w3(CreateTestWindow(&delegate, gfx::Rect())); |
91 wm::ActivateWindow(w3.get()); | 99 wm::ActivateWindow(w3.get()); |
92 | 100 |
93 WindowManager::GetInstance()->ToggleOverview(); | 101 WindowManager::GetInstance()->ToggleOverview(); |
94 EXPECT_TRUE(w1->IsVisible()); | 102 EXPECT_TRUE(w1->IsVisible()); |
95 EXPECT_TRUE(w2->IsVisible()); | 103 EXPECT_TRUE(w2->IsVisible()); |
96 EXPECT_TRUE(w3->IsVisible()); | 104 EXPECT_TRUE(w3->IsVisible()); |
97 | 105 |
98 // Go into split-view mode. | 106 // Go into split-view mode. |
99 WindowOverviewModeDelegate* overview_delegate = wm_api.wm(); | 107 WindowOverviewModeDelegate* overview_delegate = wm_api.wm(); |
100 overview_delegate->OnSplitViewMode(NULL, w2.get()); | 108 overview_delegate->OnSelectWindow(w2.get(), |
| 109 WindowOverviewModeDelegate::SPLIT_LEFT); |
101 EXPECT_TRUE(w3->IsVisible()); | 110 EXPECT_TRUE(w3->IsVisible()); |
102 EXPECT_TRUE(w2->IsVisible()); | 111 EXPECT_TRUE(w2->IsVisible()); |
103 EXPECT_FALSE(w1->IsVisible()); | 112 EXPECT_FALSE(w1->IsVisible()); |
| 113 EXPECT_TRUE(wm::IsActiveWindow(w2.get())); |
| 114 } |
| 115 |
| 116 TEST_F(WindowManagerTest, NewWindowFromOverview) { |
| 117 aura::test::TestWindowDelegate delegate; |
| 118 scoped_ptr<aura::Window> w1(CreateTestWindow(&delegate, gfx::Rect())); |
| 119 scoped_ptr<aura::Window> w2(CreateTestWindow(&delegate, gfx::Rect())); |
| 120 wm::ActivateWindow(w2.get()); |
| 121 |
| 122 WindowManager::GetInstance()->ToggleOverview(); |
| 123 EXPECT_TRUE(w1->IsVisible()); |
| 124 EXPECT_TRUE(w2->IsVisible()); |
| 125 |
| 126 // Test that opening a new window exits overview mode. The new window could |
| 127 // have been opened by JavaScript or by the home card. |
| 128 scoped_ptr<aura::Window> w3(CreateTestWindow(&delegate, gfx::Rect())); |
| 129 |
| 130 ASSERT_FALSE(WindowManager::GetInstance()->IsOverviewModeActive()); |
| 131 EXPECT_TRUE(w3->IsVisible()); |
| 132 EXPECT_TRUE(wm::IsActiveWindow(w3.get())); |
| 133 EXPECT_FALSE(w1->IsVisible()); |
| 134 EXPECT_FALSE(w2->IsVisible()); |
104 } | 135 } |
105 | 136 |
106 TEST_F(WindowManagerTest, BezelGestureToSplitViewMode) { | 137 TEST_F(WindowManagerTest, BezelGestureToSplitViewMode) { |
107 aura::test::TestWindowDelegate delegate; | 138 aura::test::TestWindowDelegate delegate; |
108 scoped_ptr<aura::Window> first(CreateWindow(&delegate)); | 139 scoped_ptr<aura::Window> first(CreateWindow(&delegate)); |
109 scoped_ptr<aura::Window> second(CreateWindow(&delegate)); | 140 scoped_ptr<aura::Window> second(CreateWindow(&delegate)); |
110 scoped_ptr<aura::Window> third(CreateWindow(&delegate)); | 141 scoped_ptr<aura::Window> third(CreateWindow(&delegate)); |
111 | 142 |
112 test::WindowManagerImplTestApi wm_api; | 143 test::WindowManagerImplTestApi wm_api; |
113 aura::client::ParentWindowWithContext( | 144 aura::client::ParentWindowWithContext( |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
357 scoped_ptr<aura::Window> w3(CreateTestWindow(&delegate, gfx::Rect())); | 388 scoped_ptr<aura::Window> w3(CreateTestWindow(&delegate, gfx::Rect())); |
358 | 389 |
359 // Get into split-view mode, and then turn on overview mode. | 390 // Get into split-view mode, and then turn on overview mode. |
360 wm_api.GetSplitViewController()->ActivateSplitMode(NULL, NULL); | 391 wm_api.GetSplitViewController()->ActivateSplitMode(NULL, NULL); |
361 WindowManager::GetInstance()->ToggleOverview(); | 392 WindowManager::GetInstance()->ToggleOverview(); |
362 EXPECT_TRUE(wm_api.GetSplitViewController()->IsSplitViewModeActive()); | 393 EXPECT_TRUE(wm_api.GetSplitViewController()->IsSplitViewModeActive()); |
363 EXPECT_EQ(w3.get(), wm_api.GetSplitViewController()->left_window()); | 394 EXPECT_EQ(w3.get(), wm_api.GetSplitViewController()->left_window()); |
364 EXPECT_EQ(w2.get(), wm_api.GetSplitViewController()->right_window()); | 395 EXPECT_EQ(w2.get(), wm_api.GetSplitViewController()->right_window()); |
365 | 396 |
366 WindowOverviewModeDelegate* overview_delegate = wm_api.wm(); | 397 WindowOverviewModeDelegate* overview_delegate = wm_api.wm(); |
367 overview_delegate->OnSelectWindow(w1.get()); | 398 overview_delegate->OnSelectWindow(w1.get(), |
| 399 WindowOverviewModeDelegate::SPLIT_NONE); |
368 EXPECT_FALSE(wm_api.GetSplitViewController()->IsSplitViewModeActive()); | 400 EXPECT_FALSE(wm_api.GetSplitViewController()->IsSplitViewModeActive()); |
369 EXPECT_TRUE(w1->IsVisible()); | 401 EXPECT_TRUE(w1->IsVisible()); |
| 402 EXPECT_TRUE(wm::IsActiveWindow(w1.get())); |
370 // Make sure the windows that were in split-view mode are hidden. | 403 // Make sure the windows that were in split-view mode are hidden. |
371 EXPECT_FALSE(w2->IsVisible()); | 404 EXPECT_FALSE(w2->IsVisible()); |
372 EXPECT_FALSE(w3->IsVisible()); | 405 EXPECT_FALSE(w3->IsVisible()); |
373 } | 406 } |
374 | 407 |
375 } // namespace athena | 408 } // namespace athena |
OLD | NEW |