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_layout_manager.h" | 8 #include "ash/common/shelf/shelf_layout_manager.h" |
9 #include "ash/common/shelf/shelf_model.h" | 9 #include "ash/common/shelf/shelf_model.h" |
10 #include "ash/common/shelf/shelf_types.h" | 10 #include "ash/common/shelf/shelf_types.h" |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 protected: | 221 protected: |
222 ui::wm::WindowType transient_window_type_; | 222 ui::wm::WindowType transient_window_type_; |
223 | 223 |
224 private: | 224 private: |
225 DISALLOW_COPY_AND_ASSIGN(PanelWindowResizerTransientTest); | 225 DISALLOW_COPY_AND_ASSIGN(PanelWindowResizerTransientTest); |
226 }; | 226 }; |
227 | 227 |
228 // Verifies a window can be dragged from the panel and detached and then | 228 // Verifies a window can be dragged from the panel and detached and then |
229 // reattached. | 229 // reattached. |
230 TEST_F(PanelWindowResizerTest, PanelDetachReattachBottom) { | 230 TEST_F(PanelWindowResizerTest, PanelDetachReattachBottom) { |
231 if (!SupportsHostWindowResize()) | |
232 return; | |
233 | |
234 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); | 231 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); |
235 DetachReattachTest(window.get(), 0, -1); | 232 DetachReattachTest(window.get(), 0, -1); |
236 } | 233 } |
237 | 234 |
238 TEST_F(PanelWindowResizerTest, PanelDetachReattachLeft) { | 235 TEST_F(PanelWindowResizerTest, PanelDetachReattachLeft) { |
239 if (!SupportsHostWindowResize()) | |
240 return; | |
241 | |
242 GetPrimaryShelf()->SetAlignment(SHELF_ALIGNMENT_LEFT); | 236 GetPrimaryShelf()->SetAlignment(SHELF_ALIGNMENT_LEFT); |
243 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); | 237 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); |
244 DetachReattachTest(window.get(), 1, 0); | 238 DetachReattachTest(window.get(), 1, 0); |
245 } | 239 } |
246 | 240 |
247 TEST_F(PanelWindowResizerTest, PanelDetachReattachRight) { | 241 TEST_F(PanelWindowResizerTest, PanelDetachReattachRight) { |
248 if (!SupportsHostWindowResize()) | |
249 return; | |
250 | |
251 GetPrimaryShelf()->SetAlignment(SHELF_ALIGNMENT_RIGHT); | 242 GetPrimaryShelf()->SetAlignment(SHELF_ALIGNMENT_RIGHT); |
252 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); | 243 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); |
253 DetachReattachTest(window.get(), -1, 0); | 244 DetachReattachTest(window.get(), -1, 0); |
254 } | 245 } |
255 | 246 |
256 // Tests that a drag continues when the shelf is hidden. This occurs as part of | 247 // Tests that a drag continues when the shelf is hidden. This occurs as part of |
257 // the animation when switching profiles. http://crbug.com/393047. | 248 // the animation when switching profiles. http://crbug.com/393047. |
258 TEST_F(PanelWindowResizerTest, DetachThenHideShelf) { | 249 TEST_F(PanelWindowResizerTest, DetachThenHideShelf) { |
259 if (!SupportsHostWindowResize()) | |
260 return; | |
261 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); | 250 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); |
262 wm::WindowState* state = wm::GetWindowState(window.get()); | 251 wm::WindowState* state = wm::GetWindowState(window.get()); |
263 gfx::Rect expected_bounds = window->GetBoundsInScreen(); | 252 gfx::Rect expected_bounds = window->GetBoundsInScreen(); |
264 expected_bounds.set_y(expected_bounds.y() - 100); | 253 expected_bounds.set_y(expected_bounds.y() - 100); |
265 DragStart(window.get()); | 254 DragStart(window.get()); |
266 DragMove(0, -100); | 255 DragMove(0, -100); |
267 EXPECT_FALSE(state->IsMinimized()); | 256 EXPECT_FALSE(state->IsMinimized()); |
268 | 257 |
269 // Hide the shelf. This minimizes all attached windows but should ignore | 258 // Hide the shelf. This minimizes all attached windows but should ignore |
270 // the dragged window. | 259 // the dragged window. |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
470 DragStart(window.get()); | 459 DragStart(window.get()); |
471 DragMove(20, 0); | 460 DragMove(20, 0); |
472 EXPECT_EQ(kShellWindowId_PanelContainer, window->parent()->id()); | 461 EXPECT_EQ(kShellWindowId_PanelContainer, window->parent()->id()); |
473 DragEnd(); | 462 DragEnd(); |
474 | 463 |
475 // When dropped it should return to the default container. | 464 // When dropped it should return to the default container. |
476 EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id()); | 465 EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id()); |
477 } | 466 } |
478 | 467 |
479 TEST_P(PanelWindowResizerTextDirectionTest, DragReordersPanelsHorizontal) { | 468 TEST_P(PanelWindowResizerTextDirectionTest, DragReordersPanelsHorizontal) { |
480 if (!SupportsHostWindowResize()) | |
481 return; | |
482 | |
483 DragAlongShelfReorder(base::i18n::IsRTL() ? 1 : -1, 0); | 469 DragAlongShelfReorder(base::i18n::IsRTL() ? 1 : -1, 0); |
484 } | 470 } |
485 | 471 |
486 TEST_F(PanelWindowResizerTest, DragReordersPanelsVertical) { | 472 TEST_F(PanelWindowResizerTest, DragReordersPanelsVertical) { |
487 if (!SupportsHostWindowResize()) | |
488 return; | |
489 | |
490 GetPrimaryShelf()->SetAlignment(SHELF_ALIGNMENT_LEFT); | 473 GetPrimaryShelf()->SetAlignment(SHELF_ALIGNMENT_LEFT); |
491 DragAlongShelfReorder(0, -1); | 474 DragAlongShelfReorder(0, -1); |
492 } | 475 } |
493 | 476 |
494 // Tests that panels can have transient children of different types. | 477 // Tests that panels can have transient children of different types. |
495 // The transient children should be reparented in sync with the panel. | 478 // The transient children should be reparented in sync with the panel. |
496 TEST_P(PanelWindowResizerTransientTest, PanelWithTransientChild) { | 479 TEST_P(PanelWindowResizerTransientTest, PanelWithTransientChild) { |
497 if (!SupportsHostWindowResize()) | |
498 return; | |
499 | |
500 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); | 480 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); |
501 std::unique_ptr<aura::Window> child( | 481 std::unique_ptr<aura::Window> child( |
502 CreateTestWindowInShellWithDelegateAndType( | 482 CreateTestWindowInShellWithDelegateAndType( |
503 NULL, transient_window_type_, 0, gfx::Rect(20, 20, 150, 40))); | 483 NULL, transient_window_type_, 0, gfx::Rect(20, 20, 150, 40))); |
504 ::wm::AddTransientChild(window.get(), child.get()); | 484 ::wm::AddTransientChild(window.get(), child.get()); |
505 if (window->parent() != child->parent()) | 485 if (window->parent() != child->parent()) |
506 window->parent()->AddChild(child.get()); | 486 window->parent()->AddChild(child.get()); |
507 EXPECT_EQ(window.get(), ::wm::GetTransientParent(child.get())); | 487 EXPECT_EQ(window.get(), ::wm::GetTransientParent(child.get())); |
508 | 488 |
509 // Drag the child to the shelf. Its new position should not be overridden. | 489 // Drag the child to the shelf. Its new position should not be overridden. |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
557 INSTANTIATE_TEST_CASE_P(LtrRtl, | 537 INSTANTIATE_TEST_CASE_P(LtrRtl, |
558 PanelWindowResizerTextDirectionTest, | 538 PanelWindowResizerTextDirectionTest, |
559 testing::Bool()); | 539 testing::Bool()); |
560 INSTANTIATE_TEST_CASE_P(NormalPanelPopup, | 540 INSTANTIATE_TEST_CASE_P(NormalPanelPopup, |
561 PanelWindowResizerTransientTest, | 541 PanelWindowResizerTransientTest, |
562 testing::Values(ui::wm::WINDOW_TYPE_NORMAL, | 542 testing::Values(ui::wm::WINDOW_TYPE_NORMAL, |
563 ui::wm::WINDOW_TYPE_PANEL, | 543 ui::wm::WINDOW_TYPE_PANEL, |
564 ui::wm::WINDOW_TYPE_POPUP)); | 544 ui::wm::WINDOW_TYPE_POPUP)); |
565 | 545 |
566 } // namespace ash | 546 } // namespace ash |
OLD | NEW |