OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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/common/wm/panels/panel_window_resizer.h" | 5 #include "ash/common/wm/panels/panel_window_resizer.h" |
6 | 6 |
7 #include "ash/aura/wm_window_aura.h" | 7 #include "ash/aura/wm_window_aura.h" |
8 #include "ash/common/shelf/shelf.h" | |
9 #include "ash/common/shelf/shelf_layout_manager.h" | 8 #include "ash/common/shelf/shelf_layout_manager.h" |
10 #include "ash/common/shelf/shelf_model.h" | 9 #include "ash/common/shelf/shelf_model.h" |
11 #include "ash/common/shelf/shelf_types.h" | 10 #include "ash/common/shelf/shelf_types.h" |
12 #include "ash/common/shelf/shelf_widget.h" | 11 #include "ash/common/shelf/shelf_widget.h" |
| 12 #include "ash/common/shelf/wm_shelf.h" |
13 #include "ash/common/shell_window_ids.h" | 13 #include "ash/common/shell_window_ids.h" |
14 #include "ash/common/wm/window_state.h" | 14 #include "ash/common/wm/window_state.h" |
15 #include "ash/common/wm/wm_event.h" | 15 #include "ash/common/wm/wm_event.h" |
16 #include "ash/common/wm_shell.h" | 16 #include "ash/common/wm_shell.h" |
17 #include "ash/root_window_controller.h" | 17 #include "ash/root_window_controller.h" |
18 #include "ash/shelf/shelf_util.h" | 18 #include "ash/shelf/shelf_util.h" |
19 #include "ash/shell.h" | 19 #include "ash/shell.h" |
20 #include "ash/test/ash_test_base.h" | 20 #include "ash/test/ash_test_base.h" |
21 #include "ash/test/cursor_manager_test_api.h" | 21 #include "ash/test/cursor_manager_test_api.h" |
22 #include "ash/test/test_shelf_delegate.h" | 22 #include "ash/test/test_shelf_delegate.h" |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 return; | 231 return; |
232 | 232 |
233 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); | 233 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); |
234 DetachReattachTest(window.get(), 0, -1); | 234 DetachReattachTest(window.get(), 0, -1); |
235 } | 235 } |
236 | 236 |
237 TEST_F(PanelWindowResizerTest, PanelDetachReattachLeft) { | 237 TEST_F(PanelWindowResizerTest, PanelDetachReattachLeft) { |
238 if (!SupportsHostWindowResize()) | 238 if (!SupportsHostWindowResize()) |
239 return; | 239 return; |
240 | 240 |
241 Shelf::ForPrimaryDisplay()->SetAlignment(SHELF_ALIGNMENT_LEFT); | 241 GetPrimaryShelf()->SetAlignment(SHELF_ALIGNMENT_LEFT); |
242 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); | 242 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); |
243 DetachReattachTest(window.get(), 1, 0); | 243 DetachReattachTest(window.get(), 1, 0); |
244 } | 244 } |
245 | 245 |
246 TEST_F(PanelWindowResizerTest, PanelDetachReattachRight) { | 246 TEST_F(PanelWindowResizerTest, PanelDetachReattachRight) { |
247 if (!SupportsHostWindowResize()) | 247 if (!SupportsHostWindowResize()) |
248 return; | 248 return; |
249 | 249 |
250 Shelf::ForPrimaryDisplay()->SetAlignment(SHELF_ALIGNMENT_RIGHT); | 250 GetPrimaryShelf()->SetAlignment(SHELF_ALIGNMENT_RIGHT); |
251 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); | 251 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); |
252 DetachReattachTest(window.get(), -1, 0); | 252 DetachReattachTest(window.get(), -1, 0); |
253 } | 253 } |
254 | 254 |
255 // Tests that a drag continues when the shelf is hidden. This occurs as part of | 255 // Tests that a drag continues when the shelf is hidden. This occurs as part of |
256 // the animation when switching profiles. http://crbug.com/393047. | 256 // the animation when switching profiles. http://crbug.com/393047. |
257 TEST_F(PanelWindowResizerTest, DetachThenHideShelf) { | 257 TEST_F(PanelWindowResizerTest, DetachThenHideShelf) { |
258 if (!SupportsHostWindowResize()) | 258 if (!SupportsHostWindowResize()) |
259 return; | 259 return; |
260 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); | 260 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); |
261 wm::WindowState* state = wm::GetWindowState(window.get()); | 261 wm::WindowState* state = wm::GetWindowState(window.get()); |
262 gfx::Rect expected_bounds = window->GetBoundsInScreen(); | 262 gfx::Rect expected_bounds = window->GetBoundsInScreen(); |
263 expected_bounds.set_y(expected_bounds.y() - 100); | 263 expected_bounds.set_y(expected_bounds.y() - 100); |
264 DragStart(window.get()); | 264 DragStart(window.get()); |
265 DragMove(0, -100); | 265 DragMove(0, -100); |
266 EXPECT_FALSE(state->IsMinimized()); | 266 EXPECT_FALSE(state->IsMinimized()); |
267 | 267 |
268 // Hide the shelf. This minimizes all attached windows but should ignore | 268 // Hide the shelf. This minimizes all attached windows but should ignore |
269 // the dragged window. | 269 // the dragged window. |
270 Shelf* shelf = RootWindowController::ForWindow(window.get())->GetShelf(); | 270 WmShelf* shelf = GetPrimaryShelf(); |
271 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN); | 271 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN); |
272 shelf->shelf_layout_manager()->UpdateVisibilityState(); | 272 shelf->shelf_layout_manager()->UpdateVisibilityState(); |
273 RunAllPendingInMessageLoop(); | 273 RunAllPendingInMessageLoop(); |
274 EXPECT_FALSE(state->IsMinimized()); | 274 EXPECT_FALSE(state->IsMinimized()); |
275 EXPECT_EQ(kShellWindowId_PanelContainer, window->parent()->id()); | 275 EXPECT_EQ(kShellWindowId_PanelContainer, window->parent()->id()); |
276 DragEnd(); | 276 DragEnd(); |
277 | 277 |
278 // When the drag ends the window should be detached and placed where it was | 278 // When the drag ends the window should be detached and placed where it was |
279 // dragged to. | 279 // dragged to. |
280 EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id()); | 280 EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id()); |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
479 if (!SupportsHostWindowResize()) | 479 if (!SupportsHostWindowResize()) |
480 return; | 480 return; |
481 | 481 |
482 DragAlongShelfReorder(base::i18n::IsRTL() ? 1 : -1, 0); | 482 DragAlongShelfReorder(base::i18n::IsRTL() ? 1 : -1, 0); |
483 } | 483 } |
484 | 484 |
485 TEST_F(PanelWindowResizerTest, DragReordersPanelsVertical) { | 485 TEST_F(PanelWindowResizerTest, DragReordersPanelsVertical) { |
486 if (!SupportsHostWindowResize()) | 486 if (!SupportsHostWindowResize()) |
487 return; | 487 return; |
488 | 488 |
489 Shelf::ForPrimaryDisplay()->SetAlignment(SHELF_ALIGNMENT_LEFT); | 489 GetPrimaryShelf()->SetAlignment(SHELF_ALIGNMENT_LEFT); |
490 DragAlongShelfReorder(0, -1); | 490 DragAlongShelfReorder(0, -1); |
491 } | 491 } |
492 | 492 |
493 // Tests that panels can have transient children of different types. | 493 // Tests that panels can have transient children of different types. |
494 // The transient children should be reparented in sync with the panel. | 494 // The transient children should be reparented in sync with the panel. |
495 TEST_P(PanelWindowResizerTransientTest, PanelWithTransientChild) { | 495 TEST_P(PanelWindowResizerTransientTest, PanelWithTransientChild) { |
496 if (!SupportsHostWindowResize()) | 496 if (!SupportsHostWindowResize()) |
497 return; | 497 return; |
498 | 498 |
499 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); | 499 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
556 INSTANTIATE_TEST_CASE_P(LtrRtl, | 556 INSTANTIATE_TEST_CASE_P(LtrRtl, |
557 PanelWindowResizerTextDirectionTest, | 557 PanelWindowResizerTextDirectionTest, |
558 testing::Bool()); | 558 testing::Bool()); |
559 INSTANTIATE_TEST_CASE_P(NormalPanelPopup, | 559 INSTANTIATE_TEST_CASE_P(NormalPanelPopup, |
560 PanelWindowResizerTransientTest, | 560 PanelWindowResizerTransientTest, |
561 testing::Values(ui::wm::WINDOW_TYPE_NORMAL, | 561 testing::Values(ui::wm::WINDOW_TYPE_NORMAL, |
562 ui::wm::WINDOW_TYPE_PANEL, | 562 ui::wm::WINDOW_TYPE_PANEL, |
563 ui::wm::WINDOW_TYPE_POPUP)); | 563 ui::wm::WINDOW_TYPE_POPUP)); |
564 | 564 |
565 } // namespace ash | 565 } // namespace ash |
OLD | NEW |