OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "ash/wm/workspace_controller.h" | 5 #include "ash/wm/workspace_controller.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "ash/ash_switches.h" | 9 #include "ash/ash_switches.h" |
10 #include "ash/root_window_controller.h" | 10 #include "ash/root_window_controller.h" |
11 #include "ash/screen_ash.h" | 11 #include "ash/screen_util.h" |
12 #include "ash/shelf/shelf_layout_manager.h" | 12 #include "ash/shelf/shelf_layout_manager.h" |
13 #include "ash/shelf/shelf_widget.h" | 13 #include "ash/shelf/shelf_widget.h" |
14 #include "ash/shell.h" | 14 #include "ash/shell.h" |
15 #include "ash/shell_window_ids.h" | 15 #include "ash/shell_window_ids.h" |
16 #include "ash/system/status_area_widget.h" | 16 #include "ash/system/status_area_widget.h" |
17 #include "ash/test/ash_test_base.h" | 17 #include "ash/test/ash_test_base.h" |
18 #include "ash/test/shell_test_api.h" | 18 #include "ash/test/shell_test_api.h" |
19 #include "ash/wm/window_state.h" | 19 #include "ash/wm/window_state.h" |
20 #include "ash/wm/window_util.h" | 20 #include "ash/wm/window_util.h" |
21 #include "base/command_line.h" | 21 #include "base/command_line.h" |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
176 EXPECT_TRUE(w1->layer()->visible()); | 176 EXPECT_TRUE(w1->layer()->visible()); |
177 | 177 |
178 EXPECT_EQ("0,0 250x251", w1->bounds().ToString()); | 178 EXPECT_EQ("0,0 250x251", w1->bounds().ToString()); |
179 | 179 |
180 // Maximize the window. | 180 // Maximize the window. |
181 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); | 181 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); |
182 | 182 |
183 EXPECT_TRUE(wm::IsActiveWindow(w1.get())); | 183 EXPECT_TRUE(wm::IsActiveWindow(w1.get())); |
184 | 184 |
185 EXPECT_EQ(w1.get(), GetDesktop()->children()[0]); | 185 EXPECT_EQ(w1.get(), GetDesktop()->children()[0]); |
186 EXPECT_EQ(ScreenAsh::GetMaximizedWindowBoundsInParent(w1.get()).width(), | 186 EXPECT_EQ(ScreenUtil::GetMaximizedWindowBoundsInParent(w1.get()).width(), |
187 w1->bounds().width()); | 187 w1->bounds().width()); |
188 EXPECT_EQ(ScreenAsh::GetMaximizedWindowBoundsInParent(w1.get()).height(), | 188 EXPECT_EQ(ScreenUtil::GetMaximizedWindowBoundsInParent(w1.get()).height(), |
189 w1->bounds().height()); | 189 w1->bounds().height()); |
190 | 190 |
191 // Restore the window. | 191 // Restore the window. |
192 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL); | 192 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL); |
193 | 193 |
194 EXPECT_EQ(w1.get(), GetDesktop()->children()[0]); | 194 EXPECT_EQ(w1.get(), GetDesktop()->children()[0]); |
195 EXPECT_EQ("0,0 250x251", w1->bounds().ToString()); | 195 EXPECT_EQ("0,0 250x251", w1->bounds().ToString()); |
196 } | 196 } |
197 | 197 |
198 // Assertions around two windows and toggling one to be fullscreen. | 198 // Assertions around two windows and toggling one to be fullscreen. |
199 TEST_F(WorkspaceControllerTest, FullscreenWithNormalWindow) { | 199 TEST_F(WorkspaceControllerTest, FullscreenWithNormalWindow) { |
200 scoped_ptr<Window> w1(CreateTestWindow()); | 200 scoped_ptr<Window> w1(CreateTestWindow()); |
201 scoped_ptr<Window> w2(CreateTestWindow()); | 201 scoped_ptr<Window> w2(CreateTestWindow()); |
202 w1->SetBounds(gfx::Rect(0, 0, 250, 251)); | 202 w1->SetBounds(gfx::Rect(0, 0, 250, 251)); |
203 w1->Show(); | 203 w1->Show(); |
204 | 204 |
205 ASSERT_TRUE(w1->layer() != NULL); | 205 ASSERT_TRUE(w1->layer() != NULL); |
206 EXPECT_TRUE(w1->layer()->visible()); | 206 EXPECT_TRUE(w1->layer()->visible()); |
207 | 207 |
208 w2->SetBounds(gfx::Rect(0, 0, 50, 51)); | 208 w2->SetBounds(gfx::Rect(0, 0, 50, 51)); |
209 w2->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN); | 209 w2->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN); |
210 w2->Show(); | 210 w2->Show(); |
211 wm::ActivateWindow(w2.get()); | 211 wm::ActivateWindow(w2.get()); |
212 | 212 |
213 // Both windows should be in the same workspace. | 213 // Both windows should be in the same workspace. |
214 EXPECT_EQ(w1.get(), GetDesktop()->children()[0]); | 214 EXPECT_EQ(w1.get(), GetDesktop()->children()[0]); |
215 EXPECT_EQ(w2.get(), GetDesktop()->children()[1]); | 215 EXPECT_EQ(w2.get(), GetDesktop()->children()[1]); |
216 | 216 |
217 gfx::Rect work_area( | 217 gfx::Rect work_area( |
218 ScreenAsh::GetMaximizedWindowBoundsInParent(w1.get())); | 218 ScreenUtil::GetMaximizedWindowBoundsInParent(w1.get())); |
219 EXPECT_EQ(work_area.width(), w2->bounds().width()); | 219 EXPECT_EQ(work_area.width(), w2->bounds().width()); |
220 EXPECT_EQ(work_area.height(), w2->bounds().height()); | 220 EXPECT_EQ(work_area.height(), w2->bounds().height()); |
221 | 221 |
222 // Restore w2, which should then go back to one workspace. | 222 // Restore w2, which should then go back to one workspace. |
223 w2->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL); | 223 w2->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL); |
224 EXPECT_EQ(50, w2->bounds().width()); | 224 EXPECT_EQ(50, w2->bounds().width()); |
225 EXPECT_EQ(51, w2->bounds().height()); | 225 EXPECT_EQ(51, w2->bounds().height()); |
226 EXPECT_TRUE(wm::IsActiveWindow(w2.get())); | 226 EXPECT_TRUE(wm::IsActiveWindow(w2.get())); |
227 } | 227 } |
228 | 228 |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
436 w2->Show(); | 436 w2->Show(); |
437 wm::ActivateWindow(w2.get()); | 437 wm::ActivateWindow(w2.get()); |
438 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->visibility_state()); | 438 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->visibility_state()); |
439 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->auto_hide_state()); | 439 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->auto_hide_state()); |
440 EXPECT_EQ("0,1 101x102", w1->bounds().ToString()); | 440 EXPECT_EQ("0,1 101x102", w1->bounds().ToString()); |
441 | 441 |
442 // Switch to w1. | 442 // Switch to w1. |
443 wm::ActivateWindow(w1.get()); | 443 wm::ActivateWindow(w1.get()); |
444 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->visibility_state()); | 444 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->visibility_state()); |
445 EXPECT_EQ("0,1 101x102", w1->bounds().ToString()); | 445 EXPECT_EQ("0,1 101x102", w1->bounds().ToString()); |
446 EXPECT_EQ(ScreenAsh::GetMaximizedWindowBoundsInParent( | 446 EXPECT_EQ(ScreenUtil::GetMaximizedWindowBoundsInParent( |
447 w2->parent()).ToString(), | 447 w2->parent()).ToString(), |
448 w2->bounds().ToString()); | 448 w2->bounds().ToString()); |
449 | 449 |
450 // Switch to w2. | 450 // Switch to w2. |
451 wm::ActivateWindow(w2.get()); | 451 wm::ActivateWindow(w2.get()); |
452 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->visibility_state()); | 452 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->visibility_state()); |
453 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->auto_hide_state()); | 453 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->auto_hide_state()); |
454 EXPECT_EQ("0,1 101x102", w1->bounds().ToString()); | 454 EXPECT_EQ("0,1 101x102", w1->bounds().ToString()); |
455 EXPECT_EQ(ScreenAsh::GetMaximizedWindowBoundsInParent(w2.get()).ToString(), | 455 EXPECT_EQ(ScreenUtil::GetMaximizedWindowBoundsInParent(w2.get()).ToString(), |
456 w2->bounds().ToString()); | 456 w2->bounds().ToString()); |
457 | 457 |
458 // Turn off auto-hide, switch back to w2 (maximized) and verify overlap. | 458 // Turn off auto-hide, switch back to w2 (maximized) and verify overlap. |
459 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); | 459 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); |
460 wm::ActivateWindow(w2.get()); | 460 wm::ActivateWindow(w2.get()); |
461 EXPECT_FALSE(GetWindowOverlapsShelf()); | 461 EXPECT_FALSE(GetWindowOverlapsShelf()); |
462 | 462 |
463 // Move w1 to overlap shelf, it shouldn't change window overlaps shelf since | 463 // Move w1 to overlap shelf, it shouldn't change window overlaps shelf since |
464 // the window isn't in the visible workspace. | 464 // the window isn't in the visible workspace. |
465 w1->SetBounds(touches_shelf_bounds); | 465 w1->SetBounds(touches_shelf_bounds); |
(...skipping 915 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1381 // Apply a transform on |second|. After the transform is applied, the window | 1381 // Apply a transform on |second|. After the transform is applied, the window |
1382 // should no longer be targetted. | 1382 // should no longer be targetted. |
1383 gfx::Transform transform; | 1383 gfx::Transform transform; |
1384 transform.Translate(70, 40); | 1384 transform.Translate(70, 40); |
1385 second->SetTransform(transform); | 1385 second->SetTransform(transform); |
1386 } | 1386 } |
1387 } | 1387 } |
1388 | 1388 |
1389 } // namespace internal | 1389 } // namespace internal |
1390 } // namespace ash | 1390 } // namespace ash |
OLD | NEW |