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_model.h" | 8 #include "ash/common/shelf/shelf_model.h" |
9 #include "ash/common/shelf/shelf_types.h" | 9 #include "ash/common/shelf/shelf_types.h" |
10 #include "ash/common/shell_window_ids.h" | 10 #include "ash/common/shell_window_ids.h" |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 // The panel should be reattached and have snapped to the launcher. | 125 // The panel should be reattached and have snapped to the launcher. |
126 EXPECT_TRUE(window_state->panel_attached()); | 126 EXPECT_TRUE(window_state->panel_attached()); |
127 EXPECT_EQ(initial_bounds.x(), window->GetBoundsInScreen().x()); | 127 EXPECT_EQ(initial_bounds.x(), window->GetBoundsInScreen().x()); |
128 EXPECT_EQ(initial_bounds.y(), window->GetBoundsInScreen().y()); | 128 EXPECT_EQ(initial_bounds.y(), window->GetBoundsInScreen().y()); |
129 EXPECT_EQ(kShellWindowId_PanelContainer, window->parent()->id()); | 129 EXPECT_EQ(kShellWindowId_PanelContainer, window->parent()->id()); |
130 } | 130 } |
131 | 131 |
132 void TestWindowOrder(const std::vector<aura::Window*>& window_order) { | 132 void TestWindowOrder(const std::vector<aura::Window*>& window_order) { |
133 int panel_index = model_->FirstPanelIndex(); | 133 int panel_index = model_->FirstPanelIndex(); |
134 EXPECT_EQ((int)(panel_index + window_order.size()), model_->item_count()); | 134 EXPECT_EQ((int)(panel_index + window_order.size()), model_->item_count()); |
135 for (std::vector<aura::Window*>::const_iterator iter = | 135 for (std::vector<aura::Window *>::const_iterator |
136 window_order.begin(); iter != window_order.end(); | 136 iter = window_order.begin(); |
137 ++iter, ++panel_index) { | 137 iter != window_order.end(); ++iter, ++panel_index) { |
138 ShelfID id = GetShelfIDForWindow(*iter); | 138 ShelfID id = GetShelfIDForWindow(*iter); |
139 EXPECT_EQ(id, model_->items()[panel_index].id); | 139 EXPECT_EQ(id, model_->items()[panel_index].id); |
140 } | 140 } |
141 } | 141 } |
142 | 142 |
143 // Test dragging panel window along the shelf and verify that panel icons | 143 // Test dragging panel window along the shelf and verify that panel icons |
144 // are reordered appropriately. | 144 // are reordered appropriately. |
145 void DragAlongShelfReorder(int dx, int dy) { | 145 void DragAlongShelfReorder(int dx, int dy) { |
146 gfx::Point origin(0, 0); | 146 gfx::Point origin(0, 0); |
147 std::unique_ptr<aura::Window> w1(CreatePanelWindow(origin)); | 147 std::unique_ptr<aura::Window> w1(CreatePanelWindow(origin)); |
(...skipping 73 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()) | 231 if (!SupportsHostWindowResize()) |
232 return; | 232 return; |
233 | 233 |
234 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); | 234 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); |
235 DetachReattachTest(window.get(), 0, -1); | 235 DetachReattachTest(window.get(), 0, -1); |
236 } | 236 } |
237 | 237 |
238 TEST_F(PanelWindowResizerTest, PanelDetachReattachLeft) { | 238 TEST_F(PanelWindowResizerTest, PanelDetachReattachLeft) { |
239 if (!SupportsHostWindowResize()) | 239 if (!SupportsHostWindowResize()) |
240 return; | 240 return; |
241 | 241 |
242 Shelf::ForPrimaryDisplay()->SetAlignment(SHELF_ALIGNMENT_LEFT); | 242 Shelf::ForPrimaryDisplay()->SetAlignment(SHELF_ALIGNMENT_LEFT); |
243 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); | 243 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); |
244 DetachReattachTest(window.get(), 1, 0); | 244 DetachReattachTest(window.get(), 1, 0); |
245 } | 245 } |
246 | 246 |
247 TEST_F(PanelWindowResizerTest, PanelDetachReattachRight) { | 247 TEST_F(PanelWindowResizerTest, PanelDetachReattachRight) { |
248 if (!SupportsHostWindowResize()) | 248 if (!SupportsHostWindowResize()) |
249 return; | 249 return; |
250 | 250 |
251 Shelf::ForPrimaryDisplay()->SetAlignment(SHELF_ALIGNMENT_RIGHT); | 251 Shelf::ForPrimaryDisplay()->SetAlignment(SHELF_ALIGNMENT_RIGHT); |
252 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); | 252 std::unique_ptr<aura::Window> window(CreatePanelWindow(gfx::Point(0, 0))); |
253 DetachReattachTest(window.get(), -1, 0); | 253 DetachReattachTest(window.get(), -1, 0); |
254 } | 254 } |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
413 EXPECT_TRUE(wm::GetWindowState(fullscreen.get())->IsFullscreen()); | 413 EXPECT_TRUE(wm::GetWindowState(fullscreen.get())->IsFullscreen()); |
414 | 414 |
415 gfx::Rect initial_bounds = window->GetBoundsInScreen(); | 415 gfx::Rect initial_bounds = window->GetBoundsInScreen(); |
416 EXPECT_EQ(root_windows[0], window->GetRootWindow()); | 416 EXPECT_EQ(root_windows[0], window->GetRootWindow()); |
417 | 417 |
418 // Activate and drag the window to the other display's launcher. | 418 // Activate and drag the window to the other display's launcher. |
419 wm::GetWindowState(window.get())->Activate(); | 419 wm::GetWindowState(window.get())->Activate(); |
420 DragStart(window.get()); | 420 DragStart(window.get()); |
421 DragMove(500, 250); | 421 DragMove(500, 250); |
422 EXPECT_EQ(initial_bounds.x() + 500, window->GetBoundsInScreen().x()); | 422 EXPECT_EQ(initial_bounds.x() + 500, window->GetBoundsInScreen().x()); |
423 EXPECT_GT(window->GetBoundsInScreen().y(), | 423 EXPECT_GT(window->GetBoundsInScreen().y(), initial_bounds.y() + 200); |
424 initial_bounds.y() + 200); | |
425 DragEnd(); | 424 DragEnd(); |
426 | 425 |
427 // When dropped should move to second display's panel container. | 426 // When dropped should move to second display's panel container. |
428 EXPECT_EQ(root_windows[1], window->GetRootWindow()); | 427 EXPECT_EQ(root_windows[1], window->GetRootWindow()); |
429 EXPECT_TRUE(wm::GetWindowState(window.get())->panel_attached()); | 428 EXPECT_TRUE(wm::GetWindowState(window.get())->panel_attached()); |
430 EXPECT_EQ(kShellWindowId_PanelContainer, window->parent()->id()); | 429 EXPECT_EQ(kShellWindowId_PanelContainer, window->parent()->id()); |
431 EXPECT_TRUE(window->IsVisible()); | 430 EXPECT_TRUE(window->IsVisible()); |
432 EXPECT_TRUE(wm::GetWindowState(window.get())->IsActive()); | 431 EXPECT_TRUE(wm::GetWindowState(window.get())->IsActive()); |
433 EXPECT_EQ(initial_bounds.y() + 200, window->GetBoundsInScreen().y()); | 432 EXPECT_EQ(initial_bounds.y() + 200, window->GetBoundsInScreen().y()); |
434 } | 433 } |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
503 CreateTestWindowInShellWithDelegateAndType( | 502 CreateTestWindowInShellWithDelegateAndType( |
504 NULL, transient_window_type_, 0, gfx::Rect(20, 20, 150, 40))); | 503 NULL, transient_window_type_, 0, gfx::Rect(20, 20, 150, 40))); |
505 ::wm::AddTransientChild(window.get(), child.get()); | 504 ::wm::AddTransientChild(window.get(), child.get()); |
506 if (window->parent() != child->parent()) | 505 if (window->parent() != child->parent()) |
507 window->parent()->AddChild(child.get()); | 506 window->parent()->AddChild(child.get()); |
508 EXPECT_EQ(window.get(), ::wm::GetTransientParent(child.get())); | 507 EXPECT_EQ(window.get(), ::wm::GetTransientParent(child.get())); |
509 | 508 |
510 // Drag the child to the shelf. Its new position should not be overridden. | 509 // Drag the child to the shelf. Its new position should not be overridden. |
511 const gfx::Rect attached_bounds(window->GetBoundsInScreen()); | 510 const gfx::Rect attached_bounds(window->GetBoundsInScreen()); |
512 const int dy = window->GetBoundsInScreen().bottom() - | 511 const int dy = window->GetBoundsInScreen().bottom() - |
513 child->GetBoundsInScreen().bottom(); | 512 child->GetBoundsInScreen().bottom(); |
514 DragStart(child.get()); | 513 DragStart(child.get()); |
515 DragMove(50, dy); | 514 DragMove(50, dy); |
516 // While moving the transient child window should be in the panel container. | 515 // While moving the transient child window should be in the panel container. |
517 EXPECT_EQ(kShellWindowId_PanelContainer, child->parent()->id()); | 516 EXPECT_EQ(kShellWindowId_PanelContainer, child->parent()->id()); |
518 DragEnd(); | 517 DragEnd(); |
519 // Child should move, |window| should not. | 518 // Child should move, |window| should not. |
520 EXPECT_EQ(gfx::Point(20 + 50, 20 + dy).ToString(), | 519 EXPECT_EQ(gfx::Point(20 + 50, 20 + dy).ToString(), |
521 child->GetBoundsInScreen().origin().ToString()); | 520 child->GetBoundsInScreen().origin().ToString()); |
522 EXPECT_EQ(attached_bounds.ToString(), window->GetBoundsInScreen().ToString()); | 521 EXPECT_EQ(attached_bounds.ToString(), window->GetBoundsInScreen().ToString()); |
523 | 522 |
(...skipping 24 matching lines...) Expand all Loading... |
548 DragMove(20, 0); | 547 DragMove(20, 0); |
549 EXPECT_EQ(kShellWindowId_PanelContainer, window->parent()->id()); | 548 EXPECT_EQ(kShellWindowId_PanelContainer, window->parent()->id()); |
550 EXPECT_EQ(kShellWindowId_PanelContainer, child->parent()->id()); | 549 EXPECT_EQ(kShellWindowId_PanelContainer, child->parent()->id()); |
551 DragEnd(); | 550 DragEnd(); |
552 | 551 |
553 // When dropped they should return to the default container. | 552 // When dropped they should return to the default container. |
554 EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id()); | 553 EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id()); |
555 EXPECT_EQ(kShellWindowId_DefaultContainer, child->parent()->id()); | 554 EXPECT_EQ(kShellWindowId_DefaultContainer, child->parent()->id()); |
556 } | 555 } |
557 | 556 |
558 INSTANTIATE_TEST_CASE_P(LtrRtl, PanelWindowResizerTextDirectionTest, | 557 INSTANTIATE_TEST_CASE_P(LtrRtl, |
| 558 PanelWindowResizerTextDirectionTest, |
559 testing::Bool()); | 559 testing::Bool()); |
560 INSTANTIATE_TEST_CASE_P(NormalPanelPopup, | 560 INSTANTIATE_TEST_CASE_P(NormalPanelPopup, |
561 PanelWindowResizerTransientTest, | 561 PanelWindowResizerTransientTest, |
562 testing::Values(ui::wm::WINDOW_TYPE_NORMAL, | 562 testing::Values(ui::wm::WINDOW_TYPE_NORMAL, |
563 ui::wm::WINDOW_TYPE_PANEL, | 563 ui::wm::WINDOW_TYPE_PANEL, |
564 ui::wm::WINDOW_TYPE_POPUP)); | 564 ui::wm::WINDOW_TYPE_POPUP)); |
565 | 565 |
566 } // namespace ash | 566 } // namespace ash |
OLD | NEW |