Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Side by Side Diff: ash/wm/dock/docked_window_resizer_unittest.cc

Issue 2095193002: clang-format all of //ash (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ash/wm/dock/docked_window_layout_manager_unittest.cc ('k') | ash/wm/drag_window_resizer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/dock/docked_window_resizer.h" 5 #include "ash/common/wm/dock/docked_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/ash_switches.h" 8 #include "ash/common/ash_switches.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 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 int min_dock_gap() const { return DockedWindowLayoutManager::kMinDockGap; } 68 int min_dock_gap() const { return DockedWindowLayoutManager::kMinDockGap; }
69 int max_width() const { return DockedWindowLayoutManager::kMaxDockWidth; } 69 int max_width() const { return DockedWindowLayoutManager::kMaxDockWidth; }
70 int docked_width(const DockedWindowLayoutManager* layout_manager) const { 70 int docked_width(const DockedWindowLayoutManager* layout_manager) const {
71 return layout_manager->docked_width_; 71 return layout_manager->docked_width_;
72 } 72 }
73 int docked_alignment(const DockedWindowLayoutManager* layout_manager) const { 73 int docked_alignment(const DockedWindowLayoutManager* layout_manager) const {
74 return layout_manager->alignment_; 74 return layout_manager->alignment_;
75 } 75 }
76 aura::Window* CreateTestWindow(const gfx::Rect& bounds) { 76 aura::Window* CreateTestWindow(const gfx::Rect& bounds) {
77 aura::Window* window = CreateTestWindowInShellWithDelegateAndType( 77 aura::Window* window = CreateTestWindowInShellWithDelegateAndType(
78 &delegate_, 78 &delegate_, window_type_, 0, bounds);
79 window_type_,
80 0,
81 bounds);
82 if (window_type_ == ui::wm::WINDOW_TYPE_PANEL) { 79 if (window_type_ == ui::wm::WINDOW_TYPE_PANEL) {
83 test::TestShelfDelegate* shelf_delegate = 80 test::TestShelfDelegate* shelf_delegate =
84 test::TestShelfDelegate::instance(); 81 test::TestShelfDelegate::instance();
85 shelf_delegate->AddShelfItem(window); 82 shelf_delegate->AddShelfItem(window);
86 PanelLayoutManager* manager = 83 PanelLayoutManager* manager =
87 PanelLayoutManager::Get(WmWindowAura::Get(window)); 84 PanelLayoutManager::Get(WmWindowAura::Get(window));
88 manager->Relayout(); 85 manager->Relayout();
89 } 86 }
90 return window; 87 return window;
91 } 88 }
(...skipping 28 matching lines...) Expand all
120 return CreateWindowResizer(WmWindowAura::Get(window), point_in_parent, 117 return CreateWindowResizer(WmWindowAura::Get(window), point_in_parent,
121 window_component, 118 window_component,
122 aura::client::WINDOW_MOVE_SOURCE_MOUSE) 119 aura::client::WINDOW_MOVE_SOURCE_MOUSE)
123 .release(); 120 .release();
124 } 121 }
125 122
126 void DragStart(aura::Window* window) { 123 void DragStart(aura::Window* window) {
127 DragStartAtOffsetFromWindowOrigin(window, 0, 0); 124 DragStartAtOffsetFromWindowOrigin(window, 0, 0);
128 } 125 }
129 126
130 void DragStartAtOffsetFromWindowOrigin(aura::Window* window, 127 void DragStartAtOffsetFromWindowOrigin(aura::Window* window, int dx, int dy) {
131 int dx, int dy) {
132 initial_location_in_parent_ = 128 initial_location_in_parent_ =
133 window->bounds().origin() + gfx::Vector2d(dx, dy); 129 window->bounds().origin() + gfx::Vector2d(dx, dy);
134 resizer_.reset(CreateSomeWindowResizer(window, 130 resizer_.reset(CreateSomeWindowResizer(window, initial_location_in_parent_,
135 initial_location_in_parent_,
136 HTCAPTION)); 131 HTCAPTION));
137 ASSERT_TRUE(resizer_.get()); 132 ASSERT_TRUE(resizer_.get());
138 } 133 }
139 134
140 void ResizeStartAtOffsetFromWindowOrigin(aura::Window* window, 135 void ResizeStartAtOffsetFromWindowOrigin(aura::Window* window,
141 int dx, int dy, 136 int dx,
137 int dy,
142 int window_component) { 138 int window_component) {
143 initial_location_in_parent_ = 139 initial_location_in_parent_ =
144 window->bounds().origin() + gfx::Vector2d(dx, dy); 140 window->bounds().origin() + gfx::Vector2d(dx, dy);
145 resizer_.reset(CreateSomeWindowResizer(window, 141 resizer_.reset(CreateSomeWindowResizer(window, initial_location_in_parent_,
146 initial_location_in_parent_,
147 window_component)); 142 window_component));
148 ASSERT_TRUE(resizer_.get()); 143 ASSERT_TRUE(resizer_.get());
149 } 144 }
150 145
151 void DragMove(int dx, int dy) { 146 void DragMove(int dx, int dy) {
152 resizer_->Drag(initial_location_in_parent_ + gfx::Vector2d(dx, dy), 0); 147 resizer_->Drag(initial_location_in_parent_ + gfx::Vector2d(dx, dy), 0);
153 } 148 }
154 149
155 void DragEnd() { 150 void DragEnd() {
156 resizer_->CompleteDrag(); 151 resizer_->CompleteDrag();
157 resizer_.reset(); 152 resizer_.reset();
158 } 153 }
159 154
160 void DragRevert() { 155 void DragRevert() {
161 resizer_->RevertDrag(); 156 resizer_->RevertDrag();
162 resizer_.reset(); 157 resizer_.reset();
163 } 158 }
164 159
165 // Panels are parented by panel container during drags. 160 // Panels are parented by panel container during drags.
166 // All other windows that are tested here are parented by dock container 161 // All other windows that are tested here are parented by dock container
167 // during drags. 162 // during drags.
168 int CorrectContainerIdDuringDrag() { 163 int CorrectContainerIdDuringDrag() {
169 if (window_type_ == ui::wm::WINDOW_TYPE_PANEL) 164 if (window_type_ == ui::wm::WINDOW_TYPE_PANEL)
170 return kShellWindowId_PanelContainer; 165 return kShellWindowId_PanelContainer;
171 return kShellWindowId_DockedContainer; 166 return kShellWindowId_DockedContainer;
172 } 167 }
173 168
174 // Test dragging the window vertically (to detach if it is a panel) and then 169 // Test dragging the window vertically (to detach if it is a panel) and then
175 // horizontally to the edge with an added offset from the edge of |dx|. 170 // horizontally to the edge with an added offset from the edge of |dx|.
176 void DragRelativeToEdge(DockedEdge edge, 171 void DragRelativeToEdge(DockedEdge edge, aura::Window* window, int dx) {
177 aura::Window* window,
178 int dx) {
179 DragVerticallyAndRelativeToEdge( 172 DragVerticallyAndRelativeToEdge(
180 edge, 173 edge, window, dx, window_type_ == ui::wm::WINDOW_TYPE_PANEL ? -100 : 20,
181 window, 174 25, 5);
182 dx,
183 window_type_ == ui::wm::WINDOW_TYPE_PANEL ? -100 : 20,
184 25,
185 5);
186 } 175 }
187 176
188 void DragToVerticalPositionAndToEdge(DockedEdge edge, 177 void DragToVerticalPositionAndToEdge(DockedEdge edge,
189 aura::Window* window, 178 aura::Window* window,
190 int y) { 179 int y) {
191 DragToVerticalPositionRelativeToEdge(edge, window, 0, y); 180 DragToVerticalPositionRelativeToEdge(edge, window, 0, y);
192 } 181 }
193 182
194 void DragToVerticalPositionRelativeToEdge(DockedEdge edge, 183 void DragToVerticalPositionRelativeToEdge(DockedEdge edge,
195 aura::Window* window, 184 aura::Window* window,
196 int dx, 185 int dx,
197 int y) { 186 int y) {
198 gfx::Rect initial_bounds = window->GetBoundsInScreen(); 187 gfx::Rect initial_bounds = window->GetBoundsInScreen();
199 DragVerticallyAndRelativeToEdge(edge, 188 DragVerticallyAndRelativeToEdge(edge, window, dx, y - initial_bounds.y(),
200 window,
201 dx, y - initial_bounds.y(),
202 25, 5); 189 25, 5);
203 } 190 }
204 191
205 // Detach if our window is a panel, then drag it vertically by |dy| and 192 // Detach if our window is a panel, then drag it vertically by |dy| and
206 // horizontally to the edge with an added offset from the edge of |dx|. 193 // horizontally to the edge with an added offset from the edge of |dx|.
207 void DragVerticallyAndRelativeToEdge(DockedEdge edge, 194 void DragVerticallyAndRelativeToEdge(DockedEdge edge,
208 aura::Window* window, 195 aura::Window* window,
209 int dx, int dy, 196 int dx,
210 int grab_x, int grab_y) { 197 int dy,
198 int grab_x,
199 int grab_y) {
211 gfx::Rect initial_bounds = window->GetBoundsInScreen(); 200 gfx::Rect initial_bounds = window->GetBoundsInScreen();
212 // avoid snap by clicking away from the border 201 // avoid snap by clicking away from the border
213 ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromWindowOrigin(window, 202 ASSERT_NO_FATAL_FAILURE(
214 grab_x, grab_y)); 203 DragStartAtOffsetFromWindowOrigin(window, grab_x, grab_y));
215 204
216 gfx::Rect work_area = display::Screen::GetScreen() 205 gfx::Rect work_area = display::Screen::GetScreen()
217 ->GetDisplayNearestWindow(window) 206 ->GetDisplayNearestWindow(window)
218 .work_area(); 207 .work_area();
219 gfx::Point initial_location_in_screen = initial_location_in_parent_; 208 gfx::Point initial_location_in_screen = initial_location_in_parent_;
220 ::wm::ConvertPointToScreen(window->parent(), &initial_location_in_screen); 209 ::wm::ConvertPointToScreen(window->parent(), &initial_location_in_screen);
221 // Drag the window left or right to the edge (or almost to it). 210 // Drag the window left or right to the edge (or almost to it).
222 if (edge == DOCKED_EDGE_LEFT) 211 if (edge == DOCKED_EDGE_LEFT)
223 dx += work_area.x() - initial_location_in_screen.x(); 212 dx += work_area.x() - initial_location_in_screen.x();
224 else if (edge == DOCKED_EDGE_RIGHT) 213 else if (edge == DOCKED_EDGE_RIGHT)
225 dx += work_area.right() - 1 - initial_location_in_screen.x(); 214 dx += work_area.right() - 1 - initial_location_in_screen.x();
226 DragMove(dx, dy); 215 DragMove(dx, dy);
227 EXPECT_EQ(CorrectContainerIdDuringDrag(), window->parent()->id()); 216 EXPECT_EQ(CorrectContainerIdDuringDrag(), window->parent()->id());
228 // Release the mouse and the panel should be attached to the dock. 217 // Release the mouse and the panel should be attached to the dock.
229 DragEnd(); 218 DragEnd();
230 219
231 // x-coordinate can get adjusted by snapping or sticking. 220 // x-coordinate can get adjusted by snapping or sticking.
232 // y-coordinate could be changed by possible automatic layout if docked. 221 // y-coordinate could be changed by possible automatic layout if docked.
233 if (window->parent()->id() != kShellWindowId_DockedContainer && 222 if (window->parent()->id() != kShellWindowId_DockedContainer &&
234 !wm::GetWindowState(window)->HasRestoreBounds()) { 223 !wm::GetWindowState(window)->HasRestoreBounds()) {
235 EXPECT_EQ(initial_bounds.y() + dy, window->GetBoundsInScreen().y()); 224 EXPECT_EQ(initial_bounds.y() + dy, window->GetBoundsInScreen().y());
236 } 225 }
237 } 226 }
238 227
239 bool test_panels() const { return window_type_ == ui::wm::WINDOW_TYPE_PANEL; } 228 bool test_panels() const { return window_type_ == ui::wm::WINDOW_TYPE_PANEL; }
240 229
241 aura::test::TestWindowDelegate* delegate() { 230 aura::test::TestWindowDelegate* delegate() { return &delegate_; }
242 return &delegate_;
243 }
244 231
245 const gfx::Point& initial_location_in_parent() const { 232 const gfx::Point& initial_location_in_parent() const {
246 return initial_location_in_parent_; 233 return initial_location_in_parent_;
247 } 234 }
248 235
249 private: 236 private:
250 std::unique_ptr<WindowResizer> resizer_; 237 std::unique_ptr<WindowResizer> resizer_;
251 ShelfModel* model_; 238 ShelfModel* model_;
252 ui::wm::WindowType window_type_; 239 ui::wm::WindowType window_type_;
253 aura::test::TestWindowDelegate delegate_; 240 aura::test::TestWindowDelegate delegate_;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 if (!SupportsHostWindowResize()) 282 if (!SupportsHostWindowResize())
296 return; 283 return;
297 284
298 std::unique_ptr<aura::Window> window( 285 std::unique_ptr<aura::Window> window(
299 CreateTestWindow(gfx::Rect(0, 0, 201, 201))); 286 CreateTestWindow(gfx::Rect(0, 0, 201, 201)));
300 // Grabbing at 70px ensures that at least 30% of the window is in screen, 287 // Grabbing at 70px ensures that at least 30% of the window is in screen,
301 // otherwise the window would be adjusted in 288 // otherwise the window would be adjusted in
302 // WorkspaceLayoutManager::AdjustWindowBoundsWhenAdded. 289 // WorkspaceLayoutManager::AdjustWindowBoundsWhenAdded.
303 const int kGrabOffsetX = 70; 290 const int kGrabOffsetX = 70;
304 const int kUndershootBy = 1; 291 const int kUndershootBy = 1;
305 DragVerticallyAndRelativeToEdge(DOCKED_EDGE_RIGHT, 292 DragVerticallyAndRelativeToEdge(DOCKED_EDGE_RIGHT, window.get(),
306 window.get(),
307 -kUndershootBy, test_panels() ? -100 : 20, 293 -kUndershootBy, test_panels() ? -100 : 20,
308 kGrabOffsetX, 5); 294 kGrabOffsetX, 5);
309 295
310 // The window right should be past the screen edge but not docked. 296 // The window right should be past the screen edge but not docked.
311 // Initial touch point is 70px to the right which helps to find where the edge 297 // Initial touch point is 70px to the right which helps to find where the edge
312 // should be. 298 // should be.
313 EXPECT_EQ(window->GetRootWindow()->GetBoundsInScreen().right() + 299 EXPECT_EQ(window->GetRootWindow()->GetBoundsInScreen().right() +
314 window->bounds().width() - kGrabOffsetX - kUndershootBy - 1, 300 window->bounds().width() - kGrabOffsetX - kUndershootBy - 1,
315 window->GetBoundsInScreen().right()); 301 window->GetBoundsInScreen().right());
316 EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id()); 302 EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id());
317 } 303 }
318 304
319 // Verifies a window can be dragged and attached to the dock. 305 // Verifies a window can be dragged and attached to the dock.
320 TEST_P(DockedWindowResizerTest, AttachLeftPrecise) { 306 TEST_P(DockedWindowResizerTest, AttachLeftPrecise) {
321 if (!SupportsHostWindowResize()) 307 if (!SupportsHostWindowResize())
322 return; 308 return;
323 309
324 std::unique_ptr<aura::Window> window( 310 std::unique_ptr<aura::Window> window(
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 398
413 // The window should be docked at the right edge. 399 // The window should be docked at the right edge.
414 // Its width should shrink to ideal width. 400 // Its width should shrink to ideal width.
415 EXPECT_EQ(window->GetRootWindow()->GetBoundsInScreen().right(), 401 EXPECT_EQ(window->GetRootWindow()->GetBoundsInScreen().right(),
416 window->GetBoundsInScreen().right()); 402 window->GetBoundsInScreen().right());
417 EXPECT_EQ(ideal_width(), window->GetBoundsInScreen().width()); 403 EXPECT_EQ(ideal_width(), window->GetBoundsInScreen().width());
418 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id()); 404 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id());
419 405
420 // Try to detach by dragging left less than kSnapToDockDistance. 406 // Try to detach by dragging left less than kSnapToDockDistance.
421 // The window should stay docked. 407 // The window should stay docked.
422 ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromWindowOrigin( 408 ASSERT_NO_FATAL_FAILURE(
423 window.get(), 10, 0)); 409 DragStartAtOffsetFromWindowOrigin(window.get(), 10, 0));
424 DragMove(-4, -10); 410 DragMove(-4, -10);
425 // Release the mouse and the window should be still attached to the dock. 411 // Release the mouse and the window should be still attached to the dock.
426 DragEnd(); 412 DragEnd();
427 413
428 // The window should be still attached to the right edge. 414 // The window should be still attached to the right edge.
429 EXPECT_EQ(window->GetRootWindow()->GetBoundsInScreen().right(), 415 EXPECT_EQ(window->GetRootWindow()->GetBoundsInScreen().right(),
430 window->GetBoundsInScreen().right()); 416 window->GetBoundsInScreen().right());
431 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id()); 417 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id());
432 418
433 // Try to detach by dragging left by kSnapToDockDistance or more. 419 // Try to detach by dragging left by kSnapToDockDistance or more.
434 // The window should get undocked. 420 // The window should get undocked.
435 const int left_edge = window->bounds().x(); 421 const int left_edge = window->bounds().x();
436 ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromWindowOrigin( 422 ASSERT_NO_FATAL_FAILURE(
437 window.get(), 10, 0)); 423 DragStartAtOffsetFromWindowOrigin(window.get(), 10, 0));
438 DragMove(-32, -10); 424 DragMove(-32, -10);
439 // Release the mouse and the window should be no longer attached to the dock. 425 // Release the mouse and the window should be no longer attached to the dock.
440 DragEnd(); 426 DragEnd();
441 427
442 // The window should be floating on the desktop again and moved to the left. 428 // The window should be floating on the desktop again and moved to the left.
443 EXPECT_EQ(left_edge - 32, window->GetBoundsInScreen().x()); 429 EXPECT_EQ(left_edge - 32, window->GetBoundsInScreen().x());
444 EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id()); 430 EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id());
445 } 431 }
446 432
447 // Dock on the right side, and undock by dragging the right edge of the window 433 // Dock on the right side, and undock by dragging the right edge of the window
(...skipping 10 matching lines...) Expand all
458 444
459 // The window should be docked at the right edge. 445 // The window should be docked at the right edge.
460 // Its width should shrink to ideal width. 446 // Its width should shrink to ideal width.
461 EXPECT_EQ(window->GetRootWindow()->GetBoundsInScreen().right(), 447 EXPECT_EQ(window->GetRootWindow()->GetBoundsInScreen().right(),
462 window->GetBoundsInScreen().right()); 448 window->GetBoundsInScreen().right());
463 EXPECT_EQ(ideal_width(), window->GetBoundsInScreen().width()); 449 EXPECT_EQ(ideal_width(), window->GetBoundsInScreen().width());
464 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id()); 450 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id());
465 451
466 // Try to detach by dragging left less than kSnapToDockDistance. 452 // Try to detach by dragging left less than kSnapToDockDistance.
467 // The window should stay docked. 453 // The window should stay docked.
468 ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromWindowOrigin( 454 ASSERT_NO_FATAL_FAILURE(
469 window.get(), ideal_width() - 10, 0)); 455 DragStartAtOffsetFromWindowOrigin(window.get(), ideal_width() - 10, 0));
470 DragMove(-4, -10); 456 DragMove(-4, -10);
471 // Release the mouse and the window should be still attached to the dock. 457 // Release the mouse and the window should be still attached to the dock.
472 DragEnd(); 458 DragEnd();
473 459
474 // The window should be still attached to the right edge. 460 // The window should be still attached to the right edge.
475 EXPECT_EQ(window->GetRootWindow()->GetBoundsInScreen().right(), 461 EXPECT_EQ(window->GetRootWindow()->GetBoundsInScreen().right(),
476 window->GetBoundsInScreen().right()); 462 window->GetBoundsInScreen().right());
477 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id()); 463 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id());
478 464
479 // Try to detach by dragging left by kSnapToDockDistance or more. 465 // Try to detach by dragging left by kSnapToDockDistance or more.
480 // The window should get undocked. 466 // The window should get undocked.
481 const int left_edge = window->bounds().x(); 467 const int left_edge = window->bounds().x();
482 ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromWindowOrigin( 468 ASSERT_NO_FATAL_FAILURE(
483 window.get(), ideal_width() - 10, 0)); 469 DragStartAtOffsetFromWindowOrigin(window.get(), ideal_width() - 10, 0));
484 DragMove(-32, -10); 470 DragMove(-32, -10);
485 // Release the mouse and the window should be no longer attached to the dock. 471 // Release the mouse and the window should be no longer attached to the dock.
486 DragEnd(); 472 DragEnd();
487 473
488 // The window should be floating on the desktop again and moved to the left. 474 // The window should be floating on the desktop again and moved to the left.
489 EXPECT_EQ(left_edge - 32, window->GetBoundsInScreen().x()); 475 EXPECT_EQ(left_edge - 32, window->GetBoundsInScreen().x());
490 EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id()); 476 EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id());
491 } 477 }
492 478
493 // Minimize a docked window, then restore it and check that it is still docked. 479 // Minimize a docked window, then restore it and check that it is still docked.
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 gfx::Rect initial_bounds(w2->bounds()); 623 gfx::Rect initial_bounds(w2->bounds());
638 DragToVerticalPositionAndToEdge(DOCKED_EDGE_LEFT, w2.get(), 50); 624 DragToVerticalPositionAndToEdge(DOCKED_EDGE_LEFT, w2.get(), 50);
639 625
640 // The first window should be docked at the right edge. 626 // The first window should be docked at the right edge.
641 EXPECT_EQ(w1->GetRootWindow()->GetBoundsInScreen().right(), 627 EXPECT_EQ(w1->GetRootWindow()->GetBoundsInScreen().right(),
642 w1->GetBoundsInScreen().right()); 628 w1->GetBoundsInScreen().right());
643 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 629 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
644 630
645 // The second window should be near the left edge but not snapped. 631 // The second window should be near the left edge but not snapped.
646 // Normal window will get side-maximized while panels will not. 632 // Normal window will get side-maximized while panels will not.
647 int expected_x = test_panels() ? 633 int expected_x = test_panels()
648 (initial_bounds.x() - initial_location_in_parent().x()) : 0; 634 ? (initial_bounds.x() - initial_location_in_parent().x())
635 : 0;
649 EXPECT_EQ(expected_x, w2->GetBoundsInScreen().x()); 636 EXPECT_EQ(expected_x, w2->GetBoundsInScreen().x());
650 EXPECT_EQ(kShellWindowId_DefaultContainer, w2->parent()->id()); 637 EXPECT_EQ(kShellWindowId_DefaultContainer, w2->parent()->id());
651 } 638 }
652 639
653 // Tests that reverting a drag restores docked state if a window was docked. 640 // Tests that reverting a drag restores docked state if a window was docked.
654 TEST_P(DockedWindowResizerTest, RevertDragRestoresAttachment) { 641 TEST_P(DockedWindowResizerTest, RevertDragRestoresAttachment) {
655 if (!SupportsHostWindowResize()) 642 if (!SupportsHostWindowResize())
656 return; 643 return;
657 644
658 std::unique_ptr<aura::Window> window( 645 std::unique_ptr<aura::Window> window(
(...skipping 30 matching lines...) Expand all
689 // Drag the window out but revert the drag 676 // Drag the window out but revert the drag
690 ASSERT_NO_FATAL_FAILURE(DragStart(window.get())); 677 ASSERT_NO_FATAL_FAILURE(DragStart(window.get()));
691 DragMove(-50 - window->bounds().x(), 50 - window->bounds().y()); 678 DragMove(-50 - window->bounds().x(), 50 - window->bounds().y());
692 EXPECT_EQ(CorrectContainerIdDuringDrag(), window->parent()->id()); 679 EXPECT_EQ(CorrectContainerIdDuringDrag(), window->parent()->id());
693 DragRevert(); 680 DragRevert();
694 EXPECT_EQ(previous_container_id, window->parent()->id()); 681 EXPECT_EQ(previous_container_id, window->parent()->id());
695 EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager)); 682 EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager));
696 683
697 // Drag a window to the left so that it overlaps the screen edge. 684 // Drag a window to the left so that it overlaps the screen edge.
698 ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromWindowOrigin( 685 ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromWindowOrigin(
699 window.get(), 686 window.get(), window->bounds().width() / 2 + 10, 0));
700 window->bounds().width()/2 + 10,
701 0));
702 DragMove(-50 - window->bounds().x(), 50 - window->bounds().y()); 687 DragMove(-50 - window->bounds().x(), 50 - window->bounds().y());
703 DragEnd(); 688 DragEnd();
704 // The window now overlaps the left screen edge but is not docked. 689 // The window now overlaps the left screen edge but is not docked.
705 EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id()); 690 EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id());
706 EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager)); 691 EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager));
707 EXPECT_LT(window->bounds().x(), 0); 692 EXPECT_LT(window->bounds().x(), 0);
708 EXPECT_GT(window->bounds().right(), 0); 693 EXPECT_GT(window->bounds().right(), 0);
709 694
710 // Drag the window further left and revert the drag. 695 // Drag the window further left and revert the drag.
711 ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromWindowOrigin( 696 ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromWindowOrigin(
712 window.get(), 697 window.get(), window->bounds().width() / 2 + 10, 0));
713 window->bounds().width()/2 + 10,
714 0));
715 DragMove(-10, 10); 698 DragMove(-10, 10);
716 DragRevert(); 699 DragRevert();
717 // The window should be in default container and not docked. 700 // The window should be in default container and not docked.
718 EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id()); 701 EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id());
719 // Docked area alignment should be cleared. 702 // Docked area alignment should be cleared.
720 EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager)); 703 EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager));
721 } 704 }
722 705
723 // Move a docked window to the second display 706 // Move a docked window to the second display
724 TEST_P(DockedWindowResizerTest, DragAcrossDisplays) { 707 TEST_P(DockedWindowResizerTest, DragAcrossDisplays) {
(...skipping 22 matching lines...) Expand all
747 DragEnd(); 730 DragEnd();
748 EXPECT_EQ(window->GetRootWindow()->GetBoundsInScreen().right(), 731 EXPECT_EQ(window->GetRootWindow()->GetBoundsInScreen().right(),
749 window->GetBoundsInScreen().right()); 732 window->GetBoundsInScreen().right());
750 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id()); 733 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id());
751 EXPECT_EQ(root_windows[0], window->GetRootWindow()); 734 EXPECT_EQ(root_windows[0], window->GetRootWindow());
752 735
753 // Undock and move to the right - enough to get the mouse pointer past the 736 // Undock and move to the right - enough to get the mouse pointer past the
754 // edge of the screen and into the second screen. The window should now be 737 // edge of the screen and into the second screen. The window should now be
755 // in the second screen and not docked. 738 // in the second screen and not docked.
756 ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromWindowOrigin( 739 ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromWindowOrigin(
757 window.get(), 740 window.get(), window->bounds().width() / 2 + 10, 0));
758 window->bounds().width()/2 + 10, 741 DragMove(window->bounds().width() / 2 - 5, 0);
759 0));
760 DragMove(window->bounds().width()/2 - 5, 0);
761 EXPECT_EQ(CorrectContainerIdDuringDrag(), window->parent()->id()); 742 EXPECT_EQ(CorrectContainerIdDuringDrag(), window->parent()->id());
762 DragEnd(); 743 DragEnd();
763 EXPECT_NE(window->GetRootWindow()->GetBoundsInScreen().right(), 744 EXPECT_NE(window->GetRootWindow()->GetBoundsInScreen().right(),
764 window->GetBoundsInScreen().right()); 745 window->GetBoundsInScreen().right());
765 EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id()); 746 EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id());
766 EXPECT_EQ(root_windows[1], window->GetRootWindow()); 747 EXPECT_EQ(root_windows[1], window->GetRootWindow());
767 748
768 // Keep dragging it to the right until its left edge touches the screen edge. 749 // Keep dragging it to the right until its left edge touches the screen edge.
769 // The window should now be in the second screen and not docked. 750 // The window should now be in the second screen and not docked.
770 ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromWindowOrigin( 751 ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromWindowOrigin(
771 window.get(), 752 window.get(), window->bounds().width() / 2 + 10, 0));
772 window->bounds().width()/2 + 10,
773 0));
774 DragMove(window->GetRootWindow()->GetBoundsInScreen().x() - 753 DragMove(window->GetRootWindow()->GetBoundsInScreen().x() -
775 window->GetBoundsInScreen().x(), 754 window->GetBoundsInScreen().x(),
776 0); 755 0);
777 EXPECT_EQ(CorrectContainerIdDuringDrag(), window->parent()->id()); 756 EXPECT_EQ(CorrectContainerIdDuringDrag(), window->parent()->id());
778 DragEnd(); 757 DragEnd();
779 EXPECT_EQ(window->GetRootWindow()->GetBoundsInScreen().x(), 758 EXPECT_EQ(window->GetRootWindow()->GetBoundsInScreen().x(),
780 window->GetBoundsInScreen().x()); 759 window->GetBoundsInScreen().x());
781 EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id()); 760 EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id());
782 EXPECT_EQ(root_windows[1], window->GetRootWindow()); 761 EXPECT_EQ(root_windows[1], window->GetRootWindow());
783 } 762 }
784 763
785 // Dock two windows, undock one. 764 // Dock two windows, undock one.
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
831 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 810 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
832 811
833 // The second window should be still docked. 812 // The second window should be still docked.
834 EXPECT_EQ(w2->GetRootWindow()->GetBoundsInScreen().right(), 813 EXPECT_EQ(w2->GetRootWindow()->GetBoundsInScreen().right(),
835 w2->GetBoundsInScreen().right()); 814 w2->GetBoundsInScreen().right());
836 EXPECT_EQ(kShellWindowId_DockedContainer, w2->parent()->id()); 815 EXPECT_EQ(kShellWindowId_DockedContainer, w2->parent()->id());
837 816
838 // Detach by dragging left more (should get undocked). 817 // Detach by dragging left more (should get undocked).
839 const int left_edge = w2->bounds().x(); 818 const int left_edge = w2->bounds().x();
840 ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromWindowOrigin( 819 ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromWindowOrigin(
841 w2.get(), 820 w2.get(), w2->bounds().width() / 2 + 10, 0));
842 w2->bounds().width()/2 + 10,
843 0));
844 // Drag up as well to avoid attaching panels to launcher shelf. 821 // Drag up as well to avoid attaching panels to launcher shelf.
845 const int drag_x = -(w2->bounds().width()/2 + 20); 822 const int drag_x = -(w2->bounds().width() / 2 + 20);
846 DragMove(drag_x, -100); 823 DragMove(drag_x, -100);
847 // Release the mouse and the window should be no longer attached to the edge. 824 // Release the mouse and the window should be no longer attached to the edge.
848 DragEnd(); 825 DragEnd();
849 826
850 // The second window should be floating on the desktop again. 827 // The second window should be floating on the desktop again.
851 EXPECT_EQ(left_edge + drag_x, w2->bounds().x()); 828 EXPECT_EQ(left_edge + drag_x, w2->bounds().x());
852 EXPECT_EQ(kShellWindowId_DefaultContainer, w2->parent()->id()); 829 EXPECT_EQ(kShellWindowId_DefaultContainer, w2->parent()->id());
853 // Dock width should be set to remaining single docked window. 830 // Dock width should be set to remaining single docked window.
854 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 831 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
855 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 832 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
(...skipping 15 matching lines...) Expand all
871 // A window should be docked at the right edge. 848 // A window should be docked at the right edge.
872 EXPECT_EQ(w1->GetRootWindow()->GetBoundsInScreen().right(), 849 EXPECT_EQ(w1->GetRootWindow()->GetBoundsInScreen().right(),
873 w1->GetBoundsInScreen().right()); 850 w1->GetBoundsInScreen().right());
874 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 851 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
875 DockedWindowLayoutManager* manager = 852 DockedWindowLayoutManager* manager =
876 DockedWindowLayoutManager::Get(WmWindowAura::Get(w1.get())); 853 DockedWindowLayoutManager::Get(WmWindowAura::Get(w1.get()));
877 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 854 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
878 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 855 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
879 856
880 ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromWindowOrigin(w2.get(), 25, 5)); 857 ASSERT_NO_FATAL_FAILURE(DragStartAtOffsetFromWindowOrigin(w2.get(), 25, 5));
881 DragMove(w2->GetRootWindow()->bounds().width() 858 DragMove(w2->GetRootWindow()->bounds().width() - w2->bounds().width() -
882 -w2->bounds().width() 859 (w2->bounds().width() / 2 + 20) - w2->bounds().x(),
883 -(w2->bounds().width()/2 + 20)
884 -w2->bounds().x(),
885 50 - w2->bounds().y()); 860 50 - w2->bounds().y());
886 DragEnd(); 861 DragEnd();
887 // The first window should be still docked. 862 // The first window should be still docked.
888 EXPECT_EQ(w1->GetRootWindow()->GetBoundsInScreen().right(), 863 EXPECT_EQ(w1->GetRootWindow()->GetBoundsInScreen().right(),
889 w1->GetBoundsInScreen().right()); 864 w1->GetBoundsInScreen().right());
890 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 865 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
891 866
892 // The second window should be floating on the desktop. 867 // The second window should be floating on the desktop.
893 EXPECT_EQ(w2->GetRootWindow()->GetBoundsInScreen().right() - 868 EXPECT_EQ(w2->GetRootWindow()->GetBoundsInScreen().right() -
894 (w2->bounds().width()/2 + 20), 869 (w2->bounds().width() / 2 + 20),
895 w2->GetBoundsInScreen().right()); 870 w2->GetBoundsInScreen().right());
896 EXPECT_EQ(kShellWindowId_DefaultContainer, w2->parent()->id()); 871 EXPECT_EQ(kShellWindowId_DefaultContainer, w2->parent()->id());
897 // Dock width should be set to remaining single docked window. 872 // Dock width should be set to remaining single docked window.
898 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 873 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
899 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 874 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
900 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 875 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
901 // Desktop work area should now shrink. 876 // Desktop work area should now shrink.
902 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() - 877 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() -
903 docked_width(manager) - min_dock_gap(), 878 docked_width(manager) - min_dock_gap(),
904 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w2.get()).width()); 879 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w2.get()).width());
905 880
906 // Maximize the second window - Maximized area should be shrunk. 881 // Maximize the second window - Maximized area should be shrunk.
907 const gfx::Rect restored_bounds = w2->bounds(); 882 const gfx::Rect restored_bounds = w2->bounds();
908 wm::WindowState* w2_state = wm::GetWindowState(w2.get()); 883 wm::WindowState* w2_state = wm::GetWindowState(w2.get());
909 w2_state->Maximize(); 884 w2_state->Maximize();
910 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() - 885 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() -
911 docked_width(manager) - min_dock_gap(), 886 docked_width(manager) - min_dock_gap(),
912 w2->bounds().width()); 887 w2->bounds().width());
913 888
914 // Detach the first window (this should require very little drag). 889 // Detach the first window (this should require very little drag).
915 ASSERT_NO_FATAL_FAILURE(DragStart(w1.get())); 890 ASSERT_NO_FATAL_FAILURE(DragStart(w1.get()));
916 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 891 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
917 DragMove(-35, 10); 892 DragMove(-35, 10);
918 // Alignment is set to "NONE" when drag starts. 893 // Alignment is set to "NONE" when drag starts.
919 EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager)); 894 EXPECT_EQ(DOCKED_ALIGNMENT_NONE, docked_alignment(manager));
920 // Release the mouse and the window should be no longer attached to the edge. 895 // Release the mouse and the window should be no longer attached to the edge.
921 DragEnd(); 896 DragEnd();
(...skipping 17 matching lines...) Expand all
939 // Release the mouse and the window should be now attached to the edge. 914 // Release the mouse and the window should be now attached to the edge.
940 DragEnd(); 915 DragEnd();
941 // Dock should get expanded and desktop should get shrunk. 916 // Dock should get expanded and desktop should get shrunk.
942 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 917 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
943 EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager)); 918 EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager));
944 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 919 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
945 // Second window should still be in the desktop. 920 // Second window should still be in the desktop.
946 EXPECT_EQ(kShellWindowId_DefaultContainer, w2->parent()->id()); 921 EXPECT_EQ(kShellWindowId_DefaultContainer, w2->parent()->id());
947 // Maximized window should be shrunk. 922 // Maximized window should be shrunk.
948 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() - 923 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() -
949 docked_width(manager) - min_dock_gap(), 924 docked_width(manager) - min_dock_gap(),
950 w2->bounds().width()); 925 w2->bounds().width());
951 926
952 // Unmaximize the second window. 927 // Unmaximize the second window.
953 w2_state->Restore(); 928 w2_state->Restore();
954 // Its bounds should get restored. 929 // Its bounds should get restored.
955 EXPECT_EQ(restored_bounds, w2->bounds()); 930 EXPECT_EQ(restored_bounds, w2->bounds());
956 } 931 }
957 932
958 // Dock one window. Test the sticky behavior near screen or desktop edge. 933 // Dock one window. Test the sticky behavior near screen or desktop edge.
959 TEST_P(DockedWindowResizerTest, AttachOneTestSticky) { 934 TEST_P(DockedWindowResizerTest, AttachOneTestSticky) {
(...skipping 15 matching lines...) Expand all
975 DockedWindowLayoutManager::Get(WmWindowAura::Get(w1.get())); 950 DockedWindowLayoutManager::Get(WmWindowAura::Get(w1.get()));
976 // The first window should be docked. 951 // The first window should be docked.
977 EXPECT_EQ(w1->GetRootWindow()->GetBoundsInScreen().x(), 952 EXPECT_EQ(w1->GetRootWindow()->GetBoundsInScreen().x(),
978 w1->GetBoundsInScreen().x()); 953 w1->GetBoundsInScreen().x());
979 // Dock width should be set to that of a single docked window. 954 // Dock width should be set to that of a single docked window.
980 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 955 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
981 EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager)); 956 EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager));
982 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 957 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
983 958
984 // Position second window in the desktop 20px to the right of the docked w1. 959 // Position second window in the desktop 20px to the right of the docked w1.
985 DragToVerticalPositionRelativeToEdge(DOCKED_EDGE_LEFT, 960 DragToVerticalPositionRelativeToEdge(DOCKED_EDGE_LEFT, w2.get(),
986 w2.get(), 961 20 + 25 - min_dock_gap(), 50);
987 20 + 25 -
988 min_dock_gap(),
989 50);
990 // The second window should be floating on the desktop. 962 // The second window should be floating on the desktop.
991 EXPECT_EQ(w2->GetRootWindow()->GetBoundsInScreen().x() + 963 EXPECT_EQ(w2->GetRootWindow()->GetBoundsInScreen().x() +
992 (w1->bounds().right() + 20), 964 (w1->bounds().right() + 20),
993 w2->GetBoundsInScreen().x()); 965 w2->GetBoundsInScreen().x());
994 EXPECT_EQ(kShellWindowId_DefaultContainer, w2->parent()->id()); 966 EXPECT_EQ(kShellWindowId_DefaultContainer, w2->parent()->id());
995 // Dock width should be set to that of a single docked window. 967 // Dock width should be set to that of a single docked window.
996 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 968 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
997 EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager)); 969 EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager));
998 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 970 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
999 971
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1041 DragEnd(); 1013 DragEnd();
1042 // Both windows are docked now. 1014 // Both windows are docked now.
1043 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 1015 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
1044 EXPECT_EQ(kShellWindowId_DockedContainer, w2->parent()->id()); 1016 EXPECT_EQ(kShellWindowId_DockedContainer, w2->parent()->id());
1045 // Dock should get expanded and desktop should get shrunk. 1017 // Dock should get expanded and desktop should get shrunk.
1046 EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager)); 1018 EXPECT_EQ(DOCKED_ALIGNMENT_LEFT, docked_alignment(manager));
1047 EXPECT_EQ(std::max(w1->bounds().width(), w2->bounds().width()), 1019 EXPECT_EQ(std::max(w1->bounds().width(), w2->bounds().width()),
1048 docked_width(manager)); 1020 docked_width(manager));
1049 // Desktop work area should now shrink by dock width. 1021 // Desktop work area should now shrink by dock width.
1050 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() - 1022 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() -
1051 docked_width(manager) - min_dock_gap(), 1023 docked_width(manager) - min_dock_gap(),
1052 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w2.get()).width()); 1024 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w2.get()).width());
1053 } 1025 }
1054 1026
1055 // Dock two windows, resize one. 1027 // Dock two windows, resize one.
1056 // Test the docked windows area size and remaining desktop resizing. 1028 // Test the docked windows area size and remaining desktop resizing.
1057 TEST_P(DockedWindowResizerTest, ResizeOneOfTwoWindows) { 1029 TEST_P(DockedWindowResizerTest, ResizeOneOfTwoWindows) {
1058 if (!SupportsHostWindowResize()) 1030 if (!SupportsHostWindowResize())
1059 return; 1031 return;
1060 1032
1061 // Wider display to start since panels are limited to half the display width. 1033 // Wider display to start since panels are limited to half the display width.
(...skipping 20 matching lines...) Expand all
1082 w2->GetBoundsInScreen().right()); 1054 w2->GetBoundsInScreen().right());
1083 EXPECT_EQ(kShellWindowId_DockedContainer, w2->parent()->id()); 1055 EXPECT_EQ(kShellWindowId_DockedContainer, w2->parent()->id());
1084 // Dock width should be set to a wider window. 1056 // Dock width should be set to a wider window.
1085 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1057 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1086 EXPECT_EQ(std::max(w1->bounds().width(), w2->bounds().width()), 1058 EXPECT_EQ(std::max(w1->bounds().width(), w2->bounds().width()),
1087 docked_width(manager)); 1059 docked_width(manager));
1088 1060
1089 // Resize the first window left by a bit and test that the dock expands. 1061 // Resize the first window left by a bit and test that the dock expands.
1090 int previous_width = w1->bounds().width(); 1062 int previous_width = w1->bounds().width();
1091 const int kResizeSpan1 = 30; 1063 const int kResizeSpan1 = 30;
1092 ASSERT_NO_FATAL_FAILURE(ResizeStartAtOffsetFromWindowOrigin(w1.get(), 1064 ASSERT_NO_FATAL_FAILURE(
1093 0, 20, 1065 ResizeStartAtOffsetFromWindowOrigin(w1.get(), 0, 20, HTLEFT));
1094 HTLEFT));
1095 DragMove(-kResizeSpan1, 0); 1066 DragMove(-kResizeSpan1, 0);
1096 // Alignment set to "RIGHT" during the drag because dock has a window in it. 1067 // Alignment set to "RIGHT" during the drag because dock has a window in it.
1097 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1068 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1098 // Release the mouse and the window should be attached to the edge. 1069 // Release the mouse and the window should be attached to the edge.
1099 DragEnd(); 1070 DragEnd();
1100 // Dock should still have both windows in it. 1071 // Dock should still have both windows in it.
1101 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 1072 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
1102 EXPECT_EQ(kShellWindowId_DockedContainer, w2->parent()->id()); 1073 EXPECT_EQ(kShellWindowId_DockedContainer, w2->parent()->id());
1103 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1074 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1104 // w1 is now wider than before. The dock should expand and be as wide as w1. 1075 // w1 is now wider than before. The dock should expand and be as wide as w1.
1105 EXPECT_EQ(previous_width + kResizeSpan1, w1->bounds().width()); 1076 EXPECT_EQ(previous_width + kResizeSpan1, w1->bounds().width());
1106 // Both windows should get resized since they both don't have min/max size. 1077 // Both windows should get resized since they both don't have min/max size.
1107 EXPECT_EQ(w1->bounds().width(), w2->bounds().width()); 1078 EXPECT_EQ(w1->bounds().width(), w2->bounds().width());
1108 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 1079 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
1109 // Desktop work area should shrink. 1080 // Desktop work area should shrink.
1110 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() - 1081 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() -
1111 docked_width(manager) - min_dock_gap(), 1082 docked_width(manager) - min_dock_gap(),
1112 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w2.get()).width()); 1083 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w2.get()).width());
1113 1084
1114 // Resize the first window left by more than the dock maximum width. 1085 // Resize the first window left by more than the dock maximum width.
1115 // This should cause the window width to be restricted by maximum dock width. 1086 // This should cause the window width to be restricted by maximum dock width.
1116 previous_width = w1->bounds().width(); 1087 previous_width = w1->bounds().width();
1117 const int kResizeSpan2 = 250; 1088 const int kResizeSpan2 = 250;
1118 ASSERT_NO_FATAL_FAILURE(ResizeStartAtOffsetFromWindowOrigin(w1.get(), 1089 ASSERT_NO_FATAL_FAILURE(
1119 0, 20, 1090 ResizeStartAtOffsetFromWindowOrigin(w1.get(), 0, 20, HTLEFT));
1120 HTLEFT));
1121 DragMove(-kResizeSpan2, 0); 1091 DragMove(-kResizeSpan2, 0);
1122 // Alignment set to "RIGHT" during the drag because dock has a window in it. 1092 // Alignment set to "RIGHT" during the drag because dock has a window in it.
1123 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1093 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1124 // Release the mouse and the window should be attached to the edge. 1094 // Release the mouse and the window should be attached to the edge.
1125 DragEnd(); 1095 DragEnd();
1126 // Dock should still have both windows in it. 1096 // Dock should still have both windows in it.
1127 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 1097 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
1128 EXPECT_EQ(kShellWindowId_DockedContainer, w2->parent()->id()); 1098 EXPECT_EQ(kShellWindowId_DockedContainer, w2->parent()->id());
1129 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1099 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1130 // w1 is now as wide as the maximum dock width and the dock should get 1100 // w1 is now as wide as the maximum dock width and the dock should get
1131 // resized to the maximum width. 1101 // resized to the maximum width.
1132 EXPECT_EQ(max_width(), w1->bounds().width()); 1102 EXPECT_EQ(max_width(), w1->bounds().width());
1133 // Both windows should get resized since they both don't have min/max size. 1103 // Both windows should get resized since they both don't have min/max size.
1134 EXPECT_EQ(w1->bounds().width(), w2->bounds().width()); 1104 EXPECT_EQ(w1->bounds().width(), w2->bounds().width());
1135 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 1105 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
1136 // Desktop work area should shrink. 1106 // Desktop work area should shrink.
1137 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() - 1107 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() -
1138 docked_width(manager) - min_dock_gap(), 1108 docked_width(manager) - min_dock_gap(),
1139 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w2.get()).width()); 1109 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w2.get()).width());
1140 1110
1141 // Resize the first window right to get it completely inside the docked area. 1111 // Resize the first window right to get it completely inside the docked area.
1142 previous_width = w1->bounds().width(); 1112 previous_width = w1->bounds().width();
1143 const int kResizeSpan3 = 100; 1113 const int kResizeSpan3 = 100;
1144 ASSERT_NO_FATAL_FAILURE(ResizeStartAtOffsetFromWindowOrigin(w1.get(), 1114 ASSERT_NO_FATAL_FAILURE(
1145 0, 20, 1115 ResizeStartAtOffsetFromWindowOrigin(w1.get(), 0, 20, HTLEFT));
1146 HTLEFT));
1147 DragMove(kResizeSpan3, 0); 1116 DragMove(kResizeSpan3, 0);
1148 // Alignment set to "RIGHT" during the drag because dock has a window in it. 1117 // Alignment set to "RIGHT" during the drag because dock has a window in it.
1149 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1118 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1150 // Release the mouse and the window should be docked. 1119 // Release the mouse and the window should be docked.
1151 DragEnd(); 1120 DragEnd();
1152 // Dock should still have both windows in it. 1121 // Dock should still have both windows in it.
1153 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 1122 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
1154 EXPECT_EQ(kShellWindowId_DockedContainer, w2->parent()->id()); 1123 EXPECT_EQ(kShellWindowId_DockedContainer, w2->parent()->id());
1155 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1124 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1156 // w1 should be narrower than before by the length of the drag. 1125 // w1 should be narrower than before by the length of the drag.
1157 EXPECT_EQ(previous_width - kResizeSpan3, w1->bounds().width()); 1126 EXPECT_EQ(previous_width - kResizeSpan3, w1->bounds().width());
1158 // Both windows should get resized since they both don't have min/max size. 1127 // Both windows should get resized since they both don't have min/max size.
1159 EXPECT_EQ(w1->bounds().width(), w2->bounds().width()); 1128 EXPECT_EQ(w1->bounds().width(), w2->bounds().width());
1160 // The dock should be as wide as w1 or w2. 1129 // The dock should be as wide as w1 or w2.
1161 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 1130 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
1162 // Desktop work area should shrink. 1131 // Desktop work area should shrink.
1163 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() - 1132 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w2.get()).width() -
1164 docked_width(manager) - min_dock_gap(), 1133 docked_width(manager) - min_dock_gap(),
1165 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w2.get()).width()); 1134 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w2.get()).width());
1166 1135
1167 // Resize the first window left to be overhang again. 1136 // Resize the first window left to be overhang again.
1168 previous_width = w1->bounds().width(); 1137 previous_width = w1->bounds().width();
1169 ASSERT_NO_FATAL_FAILURE(ResizeStartAtOffsetFromWindowOrigin(w1.get(), 1138 ASSERT_NO_FATAL_FAILURE(
1170 0, 20, 1139 ResizeStartAtOffsetFromWindowOrigin(w1.get(), 0, 20, HTLEFT));
1171 HTLEFT));
1172 DragMove(-kResizeSpan3, 0); 1140 DragMove(-kResizeSpan3, 0);
1173 DragEnd(); 1141 DragEnd();
1174 EXPECT_EQ(previous_width + kResizeSpan3, w1->bounds().width()); 1142 EXPECT_EQ(previous_width + kResizeSpan3, w1->bounds().width());
1175 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 1143 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
1176 // Docked area should be as wide as possible (maximum) and same as w1. 1144 // Docked area should be as wide as possible (maximum) and same as w1.
1177 EXPECT_EQ(max_width(), docked_width(manager)); 1145 EXPECT_EQ(max_width(), docked_width(manager));
1178 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 1146 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
1179 1147
1180 // Undock the first window. Docked area should shrink to its ideal size. 1148 // Undock the first window. Docked area should shrink to its ideal size.
1181 ASSERT_NO_FATAL_FAILURE(DragStart(w1.get())); 1149 ASSERT_NO_FATAL_FAILURE(DragStart(w1.get()));
1182 // Drag up as well to avoid attaching panels to launcher shelf. 1150 // Drag up as well to avoid attaching panels to launcher shelf.
1183 DragMove(-(400 - 210), -100); 1151 DragMove(-(400 - 210), -100);
1184 // Alignment set to "RIGHT" since we have another window docked. 1152 // Alignment set to "RIGHT" since we have another window docked.
1185 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1153 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1186 // Release the mouse and the window should be no longer attached to the edge. 1154 // Release the mouse and the window should be no longer attached to the edge.
1187 DragEnd(); 1155 DragEnd();
1188 EXPECT_EQ(kShellWindowId_DefaultContainer, w1->parent()->id()); 1156 EXPECT_EQ(kShellWindowId_DefaultContainer, w1->parent()->id());
1189 // Dock should be as wide as w2 (and same as ideal width). 1157 // Dock should be as wide as w2 (and same as ideal width).
1190 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1158 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1191 EXPECT_EQ(ideal_width(), docked_width(manager)); 1159 EXPECT_EQ(ideal_width(), docked_width(manager));
1192 EXPECT_EQ(w2->bounds().width(), docked_width(manager)); 1160 EXPECT_EQ(w2->bounds().width(), docked_width(manager));
1193 // The second window should be still docked. 1161 // The second window should be still docked.
1194 EXPECT_EQ(kShellWindowId_DockedContainer, w2->parent()->id()); 1162 EXPECT_EQ(kShellWindowId_DockedContainer, w2->parent()->id());
1195 // Desktop work area should be inset. 1163 // Desktop work area should be inset.
1196 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w1.get()).width() - 1164 EXPECT_EQ(ScreenUtil::GetDisplayBoundsInParent(w1.get()).width() -
1197 docked_width(manager) - min_dock_gap(), 1165 docked_width(manager) - min_dock_gap(),
1198 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w1.get()).width()); 1166 ScreenUtil::GetDisplayWorkAreaBoundsInParent(w1.get()).width());
1199 } 1167 }
1200 1168
1201 // Dock a window, resize it and test that undocking it restores the pre-docked 1169 // Dock a window, resize it and test that undocking it restores the pre-docked
1202 // size. 1170 // size.
1203 TEST_P(DockedWindowResizerTest, ResizingKeepsSize) { 1171 TEST_P(DockedWindowResizerTest, ResizingKeepsSize) {
1204 if (!SupportsHostWindowResize()) 1172 if (!SupportsHostWindowResize())
1205 return; 1173 return;
1206 1174
1207 // Wider display to start since panels are limited to half the display width. 1175 // Wider display to start since panels are limited to half the display width.
1208 UpdateDisplay("1000x600"); 1176 UpdateDisplay("1000x600");
1209 const gfx::Size original_size(201, 201); 1177 const gfx::Size original_size(201, 201);
1210 std::unique_ptr<aura::Window> w1( 1178 std::unique_ptr<aura::Window> w1(
1211 CreateTestWindow(gfx::Rect(gfx::Point(), original_size))); 1179 CreateTestWindow(gfx::Rect(gfx::Point(), original_size)));
1212 1180
1213 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20); 1181 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20);
1214 // Window should be docked at the right edge. 1182 // Window should be docked at the right edge.
1215 EXPECT_EQ(w1->GetRootWindow()->GetBoundsInScreen().right(), 1183 EXPECT_EQ(w1->GetRootWindow()->GetBoundsInScreen().right(),
1216 w1->GetBoundsInScreen().right()); 1184 w1->GetBoundsInScreen().right());
1217 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 1185 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
1218 DockedWindowLayoutManager* manager = 1186 DockedWindowLayoutManager* manager =
1219 DockedWindowLayoutManager::Get(WmWindowAura::Get(w1.get())); 1187 DockedWindowLayoutManager::Get(WmWindowAura::Get(w1.get()));
1220 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1188 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1221 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 1189 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
1222 1190
1223 // Resize the window left by a bit and test that the dock expands. 1191 // Resize the window left by a bit and test that the dock expands.
1224 int previous_width = w1->bounds().width(); 1192 int previous_width = w1->bounds().width();
1225 const int kResizeSpan1 = 30; 1193 const int kResizeSpan1 = 30;
1226 ASSERT_NO_FATAL_FAILURE(ResizeStartAtOffsetFromWindowOrigin(w1.get(), 1194 ASSERT_NO_FATAL_FAILURE(
1227 0, 20, 1195 ResizeStartAtOffsetFromWindowOrigin(w1.get(), 0, 20, HTLEFT));
1228 HTLEFT));
1229 DragMove(-kResizeSpan1, 0); 1196 DragMove(-kResizeSpan1, 0);
1230 // Alignment stays "RIGHT" during the drag because the only docked window 1197 // Alignment stays "RIGHT" during the drag because the only docked window
1231 // is being resized. 1198 // is being resized.
1232 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1199 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1233 // Release the mouse and the window should be attached to the edge. 1200 // Release the mouse and the window should be attached to the edge.
1234 DragEnd(); 1201 DragEnd();
1235 // The window should get docked. 1202 // The window should get docked.
1236 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 1203 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
1237 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1204 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1238 // w1 is now wider and the dock should expand to be as wide as w1. 1205 // w1 is now wider and the dock should expand to be as wide as w1.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1270 w1->GetBoundsInScreen().right()); 1237 w1->GetBoundsInScreen().right());
1271 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 1238 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
1272 DockedWindowLayoutManager* manager = 1239 DockedWindowLayoutManager* manager =
1273 DockedWindowLayoutManager::Get(WmWindowAura::Get(w1.get())); 1240 DockedWindowLayoutManager::Get(WmWindowAura::Get(w1.get()));
1274 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1241 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1275 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 1242 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
1276 1243
1277 // Resize the window left by a bit and test that the dock expands. 1244 // Resize the window left by a bit and test that the dock expands.
1278 int previous_width = w1->bounds().width(); 1245 int previous_width = w1->bounds().width();
1279 const int kResizeSpan1 = 30; 1246 const int kResizeSpan1 = 30;
1280 ASSERT_NO_FATAL_FAILURE(ResizeStartAtOffsetFromWindowOrigin( 1247 ASSERT_NO_FATAL_FAILURE(
1281 w1.get(), 0, 20, HTLEFT)); 1248 ResizeStartAtOffsetFromWindowOrigin(w1.get(), 0, 20, HTLEFT));
1282 DragMove(-kResizeSpan1, 0); 1249 DragMove(-kResizeSpan1, 0);
1283 // Normally alignment would be reset to "NONE" during the drag when there is 1250 // Normally alignment would be reset to "NONE" during the drag when there is
1284 // only a single window docked and it is being dragged. However because that 1251 // only a single window docked and it is being dragged. However because that
1285 // window is being resized rather than moved the alignment is not changed. 1252 // window is being resized rather than moved the alignment is not changed.
1286 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1253 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1287 // Release the mouse and the window should be attached to the edge. 1254 // Release the mouse and the window should be attached to the edge.
1288 DragEnd(); 1255 DragEnd();
1289 // The window should stay docked. 1256 // The window should stay docked.
1290 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 1257 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
1291 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1258 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1330 EXPECT_EQ(kShellWindowId_DockedContainer, w2->parent()->id()); 1297 EXPECT_EQ(kShellWindowId_DockedContainer, w2->parent()->id());
1331 // Dock width should be set to ideal width. 1298 // Dock width should be set to ideal width.
1332 DockedWindowLayoutManager* manager = 1299 DockedWindowLayoutManager* manager =
1333 DockedWindowLayoutManager::Get(WmWindowAura::Get(w1.get())); 1300 DockedWindowLayoutManager::Get(WmWindowAura::Get(w1.get()));
1334 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager)); 1301 EXPECT_EQ(DOCKED_ALIGNMENT_RIGHT, docked_alignment(manager));
1335 EXPECT_EQ(ideal_width(), docked_width(manager)); 1302 EXPECT_EQ(ideal_width(), docked_width(manager));
1336 1303
1337 // Resize the first window left by a bit and test that the dock expands. 1304 // Resize the first window left by a bit and test that the dock expands.
1338 int previous_width = w1->bounds().width(); 1305 int previous_width = w1->bounds().width();
1339 const int kResizeSpan1 = 30; 1306 const int kResizeSpan1 = 30;
1340 ASSERT_NO_FATAL_FAILURE(ResizeStartAtOffsetFromWindowOrigin(w1.get(), 1307 ASSERT_NO_FATAL_FAILURE(
1341 0, 20, 1308 ResizeStartAtOffsetFromWindowOrigin(w1.get(), 0, 20, HTLEFT));
1342 HTLEFT));
1343 DragMove(-kResizeSpan1, 0); 1309 DragMove(-kResizeSpan1, 0);
1344 DragEnd(); 1310 DragEnd();
1345 // w1 is now wider than before. 1311 // w1 is now wider than before.
1346 EXPECT_EQ(previous_width + kResizeSpan1, w1->bounds().width()); 1312 EXPECT_EQ(previous_width + kResizeSpan1, w1->bounds().width());
1347 // Both windows should get resized since they both don't have min/max size. 1313 // Both windows should get resized since they both don't have min/max size.
1348 EXPECT_EQ(w1->bounds().width(), w2->bounds().width()); 1314 EXPECT_EQ(w1->bounds().width(), w2->bounds().width());
1349 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 1315 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
1350 1316
1351 // Resize the second window left by a bit more and test that the dock expands. 1317 // Resize the second window left by a bit more and test that the dock expands.
1352 previous_width = w2->bounds().width(); 1318 previous_width = w2->bounds().width();
1353 ASSERT_NO_FATAL_FAILURE(ResizeStartAtOffsetFromWindowOrigin(w2.get(), 1319 ASSERT_NO_FATAL_FAILURE(
1354 0, 20, 1320 ResizeStartAtOffsetFromWindowOrigin(w2.get(), 0, 20, HTLEFT));
1355 HTLEFT));
1356 DragMove(-kResizeSpan1, 0); 1321 DragMove(-kResizeSpan1, 0);
1357 DragEnd(); 1322 DragEnd();
1358 // w2 should get wider since it was resized by a user. 1323 // w2 should get wider since it was resized by a user.
1359 EXPECT_EQ(previous_width + kResizeSpan1, w2->bounds().width()); 1324 EXPECT_EQ(previous_width + kResizeSpan1, w2->bounds().width());
1360 // w1 should stay as wide as w2 since both were flush with the dock edge. 1325 // w1 should stay as wide as w2 since both were flush with the dock edge.
1361 EXPECT_EQ(w2->bounds().width(), w1->bounds().width()); 1326 EXPECT_EQ(w2->bounds().width(), w1->bounds().width());
1362 EXPECT_EQ(w2->bounds().width(), docked_width(manager)); 1327 EXPECT_EQ(w2->bounds().width(), docked_width(manager));
1363 1328
1364 // Undock w2 and then dock it back. 1329 // Undock w2 and then dock it back.
1365 DragToVerticalPositionRelativeToEdge(DOCKED_EDGE_RIGHT, w2.get(), -400, 100); 1330 DragToVerticalPositionRelativeToEdge(DOCKED_EDGE_RIGHT, w2.get(), -400, 100);
1366 EXPECT_EQ(kShellWindowId_DefaultContainer, w2->parent()->id()); 1331 EXPECT_EQ(kShellWindowId_DefaultContainer, w2->parent()->id());
1367 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 100); 1332 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 100);
1368 EXPECT_EQ(kShellWindowId_DockedContainer, w2->parent()->id()); 1333 EXPECT_EQ(kShellWindowId_DockedContainer, w2->parent()->id());
1369 // w2 should become same width as w1. 1334 // w2 should become same width as w1.
1370 EXPECT_EQ(w1->bounds().width(), w2->bounds().width()); 1335 EXPECT_EQ(w1->bounds().width(), w2->bounds().width());
1371 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 1336 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
1372 1337
1373 // Make w1 even wider. 1338 // Make w1 even wider.
1374 ASSERT_NO_FATAL_FAILURE(ResizeStartAtOffsetFromWindowOrigin(w1.get(), 1339 ASSERT_NO_FATAL_FAILURE(
1375 0, 20, 1340 ResizeStartAtOffsetFromWindowOrigin(w1.get(), 0, 20, HTLEFT));
1376 HTLEFT));
1377 DragMove(-kResizeSpan1, 0); 1341 DragMove(-kResizeSpan1, 0);
1378 DragEnd(); 1342 DragEnd();
1379 // Making w1 wider should make both windows wider since w2 no longer remembers 1343 // Making w1 wider should make both windows wider since w2 no longer remembers
1380 // user width. 1344 // user width.
1381 EXPECT_EQ(w1->bounds().width(), w2->bounds().width()); 1345 EXPECT_EQ(w1->bounds().width(), w2->bounds().width());
1382 EXPECT_EQ(w1->bounds().width(), docked_width(manager)); 1346 EXPECT_EQ(w1->bounds().width(), docked_width(manager));
1383 } 1347 }
1384 1348
1385 // Tests that dragging a window down to shelf attaches a panel but does not 1349 // Tests that dragging a window down to shelf attaches a panel but does not
1386 // attach a regular window. 1350 // attach a regular window.
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
1612 EXPECT_TRUE(window_state->IsMaximized()); 1576 EXPECT_TRUE(window_state->IsMaximized());
1613 } 1577 }
1614 1578
1615 // Tests run twice - on both panels and normal windows 1579 // Tests run twice - on both panels and normal windows
1616 INSTANTIATE_TEST_CASE_P(NormalOrPanel, 1580 INSTANTIATE_TEST_CASE_P(NormalOrPanel,
1617 DockedWindowResizerTest, 1581 DockedWindowResizerTest,
1618 testing::Values(ui::wm::WINDOW_TYPE_NORMAL, 1582 testing::Values(ui::wm::WINDOW_TYPE_NORMAL,
1619 ui::wm::WINDOW_TYPE_PANEL)); 1583 ui::wm::WINDOW_TYPE_PANEL));
1620 1584
1621 } // namespace ash 1585 } // namespace ash
OLDNEW
« no previous file with comments | « ash/wm/dock/docked_window_layout_manager_unittest.cc ('k') | ash/wm/drag_window_resizer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698