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

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

Issue 2370913002: Removes AshTestBase::SupportsHostWindowResize (Closed)
Patch Set: feedback Created 4 years, 2 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/test/ash_test_helper.cc ('k') | ash/wm/dock/docked_window_resizer_unittest.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_layout_manager.h" 5 #include "ash/common/wm/dock/docked_window_layout_manager.h"
6 6
7 #include "ash/aura/wm_window_aura.h" 7 #include "ash/aura/wm_window_aura.h"
8 #include "ash/common/shelf/wm_shelf.h" 8 #include "ash/common/shelf/wm_shelf.h"
9 #include "ash/common/shell_window_ids.h" 9 #include "ash/common/shell_window_ids.h"
10 #include "ash/common/wm/panels/panel_layout_manager.h" 10 #include "ash/common/wm/panels/panel_layout_manager.h"
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 201
202 // Location at start of the drag in |window->parent()|'s coordinates. 202 // Location at start of the drag in |window->parent()|'s coordinates.
203 gfx::Point initial_location_in_parent_; 203 gfx::Point initial_location_in_parent_;
204 204
205 DISALLOW_COPY_AND_ASSIGN(DockedWindowLayoutManagerTest); 205 DISALLOW_COPY_AND_ASSIGN(DockedWindowLayoutManagerTest);
206 }; 206 };
207 207
208 // Tests that a created window is successfully added to the dock 208 // Tests that a created window is successfully added to the dock
209 // layout manager. 209 // layout manager.
210 TEST_P(DockedWindowLayoutManagerTest, AddOneWindow) { 210 TEST_P(DockedWindowLayoutManagerTest, AddOneWindow) {
211 if (!SupportsHostWindowResize())
212 return;
213
214 gfx::Rect bounds(0, 0, 201, 201); 211 gfx::Rect bounds(0, 0, 201, 201);
215 std::unique_ptr<aura::Window> window(CreateTestWindow(bounds)); 212 std::unique_ptr<aura::Window> window(CreateTestWindow(bounds));
216 DragRelativeToEdge(DOCKED_EDGE_RIGHT, window.get(), 0); 213 DragRelativeToEdge(DOCKED_EDGE_RIGHT, window.get(), 0);
217 214
218 // The window should be attached and docked at the right edge. 215 // The window should be attached and docked at the right edge.
219 // Its width should shrink or grow to ideal width. 216 // Its width should shrink or grow to ideal width.
220 EXPECT_EQ(window->GetRootWindow()->bounds().right(), 217 EXPECT_EQ(window->GetRootWindow()->bounds().right(),
221 window->GetBoundsInScreen().right()); 218 window->GetBoundsInScreen().right());
222 EXPECT_EQ(ideal_width(), window->bounds().width()); 219 EXPECT_EQ(ideal_width(), window->bounds().width());
223 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id()); 220 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id());
224 } 221 }
225 222
226 // Tests that a docked window's bounds cannot be changed programmatically. 223 // Tests that a docked window's bounds cannot be changed programmatically.
227 TEST_P(DockedWindowLayoutManagerTest, DockedWindowBoundsDontChange) { 224 TEST_P(DockedWindowLayoutManagerTest, DockedWindowBoundsDontChange) {
228 if (!SupportsHostWindowResize())
229 return;
230
231 gfx::Rect bounds(0, 0, 201, 201); 225 gfx::Rect bounds(0, 0, 201, 201);
232 std::unique_ptr<aura::Window> window(CreateTestWindow(bounds)); 226 std::unique_ptr<aura::Window> window(CreateTestWindow(bounds));
233 DragRelativeToEdge(DOCKED_EDGE_RIGHT, window.get(), 0); 227 DragRelativeToEdge(DOCKED_EDGE_RIGHT, window.get(), 0);
234 228
235 // The window should be attached and docked at the right edge. 229 // The window should be attached and docked at the right edge.
236 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id()); 230 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id());
237 231
238 bounds = window->GetBoundsInScreen(); 232 bounds = window->GetBoundsInScreen();
239 window->SetBounds(gfx::Rect(210, 210, 210, 210)); 233 window->SetBounds(gfx::Rect(210, 210, 210, 210));
240 EXPECT_EQ(bounds.ToString(), window->GetBoundsInScreen().ToString()); 234 EXPECT_EQ(bounds.ToString(), window->GetBoundsInScreen().ToString());
241 } 235 }
242 236
243 // Tests that with a window docked on the left the auto-placing logic in 237 // Tests that with a window docked on the left the auto-placing logic in
244 // RearrangeVisibleWindowOnShow places windows flush with work area edges. 238 // RearrangeVisibleWindowOnShow places windows flush with work area edges.
245 TEST_P(DockedWindowLayoutManagerTest, AutoPlacingLeft) { 239 TEST_P(DockedWindowLayoutManagerTest, AutoPlacingLeft) {
246 if (!SupportsHostWindowResize())
247 return;
248
249 gfx::Rect bounds(0, 0, 201, 201); 240 gfx::Rect bounds(0, 0, 201, 201);
250 std::unique_ptr<aura::Window> window(CreateTestWindow(bounds)); 241 std::unique_ptr<aura::Window> window(CreateTestWindow(bounds));
251 DragRelativeToEdge(DOCKED_EDGE_LEFT, window.get(), 0); 242 DragRelativeToEdge(DOCKED_EDGE_LEFT, window.get(), 0);
252 243
253 // The window should be attached and snapped to the right side of the screen. 244 // The window should be attached and snapped to the right side of the screen.
254 EXPECT_EQ(window->GetRootWindow()->bounds().x(), 245 EXPECT_EQ(window->GetRootWindow()->bounds().x(),
255 window->GetBoundsInScreen().x()); 246 window->GetBoundsInScreen().x());
256 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id()); 247 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id());
257 248
258 DockedWindowLayoutManager* manager = 249 DockedWindowLayoutManager* manager =
(...skipping 28 matching lines...) Expand all
287 window1->bounds().ToString()); 278 window1->bounds().ToString());
288 EXPECT_EQ( 279 EXPECT_EQ(
289 base::IntToString(desktop_area.width() - window2->bounds().width()) + 280 base::IntToString(desktop_area.width() - window2->bounds().width()) +
290 ",48 150x300", 281 ",48 150x300",
291 window2->bounds().ToString()); 282 window2->bounds().ToString());
292 } 283 }
293 284
294 // Tests that with a window docked on the right the auto-placing logic in 285 // Tests that with a window docked on the right the auto-placing logic in
295 // RearrangeVisibleWindowOnShow places windows flush with work area edges. 286 // RearrangeVisibleWindowOnShow places windows flush with work area edges.
296 TEST_P(DockedWindowLayoutManagerTest, AutoPlacingRight) { 287 TEST_P(DockedWindowLayoutManagerTest, AutoPlacingRight) {
297 if (!SupportsHostWindowResize())
298 return;
299
300 gfx::Rect bounds(0, 0, 201, 201); 288 gfx::Rect bounds(0, 0, 201, 201);
301 std::unique_ptr<aura::Window> window(CreateTestWindow(bounds)); 289 std::unique_ptr<aura::Window> window(CreateTestWindow(bounds));
302 DragRelativeToEdge(DOCKED_EDGE_RIGHT, window.get(), 0); 290 DragRelativeToEdge(DOCKED_EDGE_RIGHT, window.get(), 0);
303 291
304 // The window should be attached and snapped to the right side of the screen. 292 // The window should be attached and snapped to the right side of the screen.
305 EXPECT_EQ(window->GetRootWindow()->bounds().right(), 293 EXPECT_EQ(window->GetRootWindow()->bounds().right(),
306 window->GetBoundsInScreen().right()); 294 window->GetBoundsInScreen().right());
307 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id()); 295 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id());
308 296
309 DockedWindowLayoutManager* manager = 297 DockedWindowLayoutManager* manager =
(...skipping 27 matching lines...) Expand all
337 EXPECT_EQ(base::IntToString(desktop_area.width() - window2->bounds().width() - 325 EXPECT_EQ(base::IntToString(desktop_area.width() - window2->bounds().width() -
338 docked_width(manager) - min_dock_gap()) + 326 docked_width(manager) - min_dock_gap()) +
339 ",48 256x512", 327 ",48 256x512",
340 window2->bounds().ToString()); 328 window2->bounds().ToString());
341 } 329 }
342 330
343 // Tests that with a window docked on the right the auto-placing logic in 331 // Tests that with a window docked on the right the auto-placing logic in
344 // RearrangeVisibleWindowOnShow places windows flush with work area edges. 332 // RearrangeVisibleWindowOnShow places windows flush with work area edges.
345 // Test case for the secondary screen. 333 // Test case for the secondary screen.
346 TEST_P(DockedWindowLayoutManagerTest, AutoPlacingRightSecondScreen) { 334 TEST_P(DockedWindowLayoutManagerTest, AutoPlacingRightSecondScreen) {
347 if (!SupportsMultipleDisplays() || !SupportsHostWindowResize()) 335 if (!SupportsMultipleDisplays())
348 return; 336 return;
349 337
350 // Create a dual screen layout. 338 // Create a dual screen layout.
351 UpdateDisplay("600x600,600x600"); 339 UpdateDisplay("600x600,600x600");
352 340
353 gfx::Rect bounds(600, 0, 201, 201); 341 gfx::Rect bounds(600, 0, 201, 201);
354 std::unique_ptr<aura::Window> window(CreateTestWindow(bounds)); 342 std::unique_ptr<aura::Window> window(CreateTestWindow(bounds));
355 // Drag pointer to the right edge of the second screen. 343 // Drag pointer to the right edge of the second screen.
356 DragRelativeToEdge(DOCKED_EDGE_RIGHT, window.get(), 0); 344 DragRelativeToEdge(DOCKED_EDGE_RIGHT, window.get(), 0);
357 345
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 EXPECT_EQ("600,32 231x320", window1->GetBoundsInScreen().ToString()); 381 EXPECT_EQ("600,32 231x320", window1->GetBoundsInScreen().ToString());
394 EXPECT_EQ( 382 EXPECT_EQ(
395 base::IntToString(600 + desktop_area.width() - window2->bounds().width() - 383 base::IntToString(600 + desktop_area.width() - window2->bounds().width() -
396 docked_width(manager) - min_dock_gap()) + 384 docked_width(manager) - min_dock_gap()) +
397 ",48 256x512", 385 ",48 256x512",
398 window2->GetBoundsInScreen().ToString()); 386 window2->GetBoundsInScreen().ToString());
399 } 387 }
400 388
401 // Adds two windows and tests that the gaps are evenly distributed. 389 // Adds two windows and tests that the gaps are evenly distributed.
402 TEST_P(DockedWindowLayoutManagerTest, AddTwoWindows) { 390 TEST_P(DockedWindowLayoutManagerTest, AddTwoWindows) {
403 if (!SupportsHostWindowResize())
404 return;
405
406 std::unique_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201))); 391 std::unique_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201)));
407 std::unique_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 202))); 392 std::unique_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 202)));
408 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20); 393 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20);
409 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 300); 394 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 300);
410 395
411 // The windows should be attached and snapped to the right side of the screen. 396 // The windows should be attached and snapped to the right side of the screen.
412 EXPECT_EQ(w1->GetRootWindow()->bounds().right(), 397 EXPECT_EQ(w1->GetRootWindow()->bounds().right(),
413 w1->GetBoundsInScreen().right()); 398 w1->GetBoundsInScreen().right());
414 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 399 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
415 EXPECT_EQ(w2->GetRootWindow()->bounds().right(), 400 EXPECT_EQ(w2->GetRootWindow()->bounds().right(),
416 w2->GetBoundsInScreen().right()); 401 w2->GetBoundsInScreen().right());
417 EXPECT_EQ(kShellWindowId_DockedContainer, w2->parent()->id()); 402 EXPECT_EQ(kShellWindowId_DockedContainer, w2->parent()->id());
418 403
419 // Test that the gaps differ at most by a single pixel. 404 // Test that the gaps differ at most by a single pixel.
420 gfx::Rect work_area = display::Screen::GetScreen() 405 gfx::Rect work_area = display::Screen::GetScreen()
421 ->GetDisplayNearestWindow(w1.get()) 406 ->GetDisplayNearestWindow(w1.get())
422 .work_area(); 407 .work_area();
423 int gap1 = w1->GetBoundsInScreen().y(); 408 int gap1 = w1->GetBoundsInScreen().y();
424 int gap2 = w2->GetBoundsInScreen().y() - w1->GetBoundsInScreen().bottom(); 409 int gap2 = w2->GetBoundsInScreen().y() - w1->GetBoundsInScreen().bottom();
425 int gap3 = work_area.bottom() - w2->GetBoundsInScreen().bottom(); 410 int gap3 = work_area.bottom() - w2->GetBoundsInScreen().bottom();
426 EXPECT_EQ(0, gap1); 411 EXPECT_EQ(0, gap1);
427 EXPECT_NEAR(gap2, min_dock_gap(), 1); 412 EXPECT_NEAR(gap2, min_dock_gap(), 1);
428 EXPECT_EQ(0, gap3); 413 EXPECT_EQ(0, gap3);
429 } 414 }
430 415
431 // Adds two non-overlapping windows and tests layout after a drag. 416 // Adds two non-overlapping windows and tests layout after a drag.
432 TEST_P(DockedWindowLayoutManagerTest, TwoWindowsDragging) { 417 TEST_P(DockedWindowLayoutManagerTest, TwoWindowsDragging) {
433 if (!SupportsHostWindowResize())
434 return;
435
436 std::unique_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201))); 418 std::unique_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201)));
437 std::unique_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 202))); 419 std::unique_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 202)));
438 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20); 420 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20);
439 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 300); 421 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 300);
440 422
441 // The windows should be attached and snapped to the right side of the screen. 423 // The windows should be attached and snapped to the right side of the screen.
442 EXPECT_EQ(w1->GetRootWindow()->bounds().right(), 424 EXPECT_EQ(w1->GetRootWindow()->bounds().right(),
443 w1->GetBoundsInScreen().right()); 425 w1->GetBoundsInScreen().right());
444 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 426 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
445 EXPECT_EQ(w2->GetRootWindow()->bounds().right(), 427 EXPECT_EQ(w2->GetRootWindow()->bounds().right(),
(...skipping 12 matching lines...) Expand all
458 int gap1 = w2->GetBoundsInScreen().y() - work_area.y(); 440 int gap1 = w2->GetBoundsInScreen().y() - work_area.y();
459 int gap2 = w1->GetBoundsInScreen().y() - w2->GetBoundsInScreen().bottom(); 441 int gap2 = w1->GetBoundsInScreen().y() - w2->GetBoundsInScreen().bottom();
460 int gap3 = work_area.bottom() - w1->GetBoundsInScreen().bottom(); 442 int gap3 = work_area.bottom() - w1->GetBoundsInScreen().bottom();
461 EXPECT_EQ(0, gap1); 443 EXPECT_EQ(0, gap1);
462 EXPECT_NEAR(gap2, min_dock_gap(), 1); 444 EXPECT_NEAR(gap2, min_dock_gap(), 1);
463 EXPECT_EQ(0, gap3); 445 EXPECT_EQ(0, gap3);
464 } 446 }
465 447
466 // Adds three overlapping windows and tests layout after a drag. 448 // Adds three overlapping windows and tests layout after a drag.
467 TEST_P(DockedWindowLayoutManagerTest, ThreeWindowsDragging) { 449 TEST_P(DockedWindowLayoutManagerTest, ThreeWindowsDragging) {
468 if (!SupportsHostWindowResize())
469 return;
470 UpdateDisplay("600x1000"); 450 UpdateDisplay("600x1000");
471 451
472 std::unique_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 310))); 452 std::unique_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 310)));
473 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20); 453 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20);
474 std::unique_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 310))); 454 std::unique_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 310)));
475 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 500); 455 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 500);
476 std::unique_ptr<aura::Window> w3(CreateTestWindow(gfx::Rect(0, 0, 220, 310))); 456 std::unique_ptr<aura::Window> w3(CreateTestWindow(gfx::Rect(0, 0, 220, 310)));
477 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w3.get(), 600); 457 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w3.get(), 600);
478 458
479 // All windows should be attached and snapped to the right side of the screen. 459 // All windows should be attached and snapped to the right side of the screen.
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 gap3 = w3->GetBoundsInScreen().y() - w1->GetBoundsInScreen().bottom(); 501 gap3 = w3->GetBoundsInScreen().y() - w1->GetBoundsInScreen().bottom();
522 gap4 = work_area.bottom() - w3->GetBoundsInScreen().bottom(); 502 gap4 = work_area.bottom() - w3->GetBoundsInScreen().bottom();
523 EXPECT_EQ(0, gap1); 503 EXPECT_EQ(0, gap1);
524 EXPECT_NEAR(gap2, min_dock_gap(), 1); 504 EXPECT_NEAR(gap2, min_dock_gap(), 1);
525 EXPECT_NEAR(gap3, min_dock_gap(), 1); 505 EXPECT_NEAR(gap3, min_dock_gap(), 1);
526 EXPECT_EQ(0, gap4); 506 EXPECT_EQ(0, gap4);
527 } 507 }
528 508
529 // Adds three windows in bottom display and tests layout after a drag. 509 // Adds three windows in bottom display and tests layout after a drag.
530 TEST_P(DockedWindowLayoutManagerTest, ThreeWindowsDraggingSecondScreen) { 510 TEST_P(DockedWindowLayoutManagerTest, ThreeWindowsDraggingSecondScreen) {
531 if (!SupportsMultipleDisplays() || !SupportsHostWindowResize()) 511 if (!SupportsMultipleDisplays())
532 return; 512 return;
533 513
534 // Create two screen vertical layout. 514 // Create two screen vertical layout.
535 UpdateDisplay("600x1000,600x1000"); 515 UpdateDisplay("600x1000,600x1000");
536 // Layout the secondary display to the bottom of the primary. 516 // Layout the secondary display to the bottom of the primary.
537 ASSERT_GT(display::Screen::GetScreen()->GetNumDisplays(), 1); 517 ASSERT_GT(display::Screen::GetScreen()->GetNumDisplays(), 1);
538 Shell::GetInstance()->display_manager()->SetLayoutForCurrentDisplays( 518 Shell::GetInstance()->display_manager()->SetLayoutForCurrentDisplays(
539 test::CreateDisplayLayout(display::DisplayPlacement::BOTTOM, 0)); 519 test::CreateDisplayLayout(display::DisplayPlacement::BOTTOM, 0));
540 520
541 std::unique_ptr<aura::Window> w1( 521 std::unique_ptr<aura::Window> w1(
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 gap3 = w3->GetBoundsInScreen().y() - w1->GetBoundsInScreen().bottom(); 573 gap3 = w3->GetBoundsInScreen().y() - w1->GetBoundsInScreen().bottom();
594 gap4 = work_area.bottom() - w3->GetBoundsInScreen().bottom(); 574 gap4 = work_area.bottom() - w3->GetBoundsInScreen().bottom();
595 EXPECT_EQ(0, gap1); 575 EXPECT_EQ(0, gap1);
596 EXPECT_NEAR(gap2, min_dock_gap(), 1); 576 EXPECT_NEAR(gap2, min_dock_gap(), 1);
597 EXPECT_NEAR(gap3, min_dock_gap(), 1); 577 EXPECT_NEAR(gap3, min_dock_gap(), 1);
598 EXPECT_EQ(0, gap4); 578 EXPECT_EQ(0, gap4);
599 } 579 }
600 580
601 // Tests that a second window added to the dock is resized to match. 581 // Tests that a second window added to the dock is resized to match.
602 TEST_P(DockedWindowLayoutManagerTest, TwoWindowsWidthNew) { 582 TEST_P(DockedWindowLayoutManagerTest, TwoWindowsWidthNew) {
603 if (!SupportsHostWindowResize())
604 return;
605
606 std::unique_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201))); 583 std::unique_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201)));
607 std::unique_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 280, 202))); 584 std::unique_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 280, 202)));
608 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20); 585 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20);
609 // The first window should get resized to ideal width. 586 // The first window should get resized to ideal width.
610 EXPECT_EQ(ideal_width(), w1->bounds().width()); 587 EXPECT_EQ(ideal_width(), w1->bounds().width());
611 588
612 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 300); 589 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 300);
613 // The second window should get resized to the existing dock. 590 // The second window should get resized to the existing dock.
614 EXPECT_EQ(ideal_width(), w2->bounds().width()); 591 EXPECT_EQ(ideal_width(), w2->bounds().width());
615 } 592 }
616 593
617 // Tests that a first non-resizable window added to the dock is not resized. 594 // Tests that a first non-resizable window added to the dock is not resized.
618 TEST_P(DockedWindowLayoutManagerTest, TwoWindowsWidthNonResizableFirst) { 595 TEST_P(DockedWindowLayoutManagerTest, TwoWindowsWidthNonResizableFirst) {
619 if (!SupportsHostWindowResize())
620 return;
621
622 std::unique_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201))); 596 std::unique_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201)));
623 w1->SetProperty(aura::client::kCanResizeKey, false); 597 w1->SetProperty(aura::client::kCanResizeKey, false);
624 std::unique_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 280, 202))); 598 std::unique_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 280, 202)));
625 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20); 599 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20);
626 // The first window should not get resized. 600 // The first window should not get resized.
627 EXPECT_EQ(201, w1->bounds().width()); 601 EXPECT_EQ(201, w1->bounds().width());
628 602
629 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 300); 603 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 300);
630 // The second window should get resized to the first window's width. 604 // The second window should get resized to the first window's width.
631 EXPECT_EQ(w1->bounds().width(), w2->bounds().width()); 605 EXPECT_EQ(w1->bounds().width(), w2->bounds().width());
632 } 606 }
633 607
634 // Tests that a second non-resizable window added to the dock is not resized. 608 // Tests that a second non-resizable window added to the dock is not resized.
635 TEST_P(DockedWindowLayoutManagerTest, TwoWindowsWidthNonResizableSecond) { 609 TEST_P(DockedWindowLayoutManagerTest, TwoWindowsWidthNonResizableSecond) {
636 if (!SupportsHostWindowResize())
637 return;
638
639 std::unique_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201))); 610 std::unique_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201)));
640 std::unique_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 280, 202))); 611 std::unique_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 280, 202)));
641 w2->SetProperty(aura::client::kCanResizeKey, false); 612 w2->SetProperty(aura::client::kCanResizeKey, false);
642 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20); 613 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20);
643 // The first window should get resized to ideal width. 614 // The first window should get resized to ideal width.
644 EXPECT_EQ(ideal_width(), w1->bounds().width()); 615 EXPECT_EQ(ideal_width(), w1->bounds().width());
645 616
646 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 300); 617 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 300);
647 // The second window should not get resized. 618 // The second window should not get resized.
648 EXPECT_EQ(280, w2->bounds().width()); 619 EXPECT_EQ(280, w2->bounds().width());
649 620
650 // The first window should get resized again - to match the second window. 621 // The first window should get resized again - to match the second window.
651 EXPECT_EQ(w1->bounds().width(), w2->bounds().width()); 622 EXPECT_EQ(w1->bounds().width(), w2->bounds().width());
652 } 623 }
653 624
654 // Test that restrictions on minimum and maximum width of windows are honored. 625 // Test that restrictions on minimum and maximum width of windows are honored.
655 TEST_P(DockedWindowLayoutManagerTest, TwoWindowsWidthRestrictions) { 626 TEST_P(DockedWindowLayoutManagerTest, TwoWindowsWidthRestrictions) {
656 if (!SupportsHostWindowResize())
657 return;
658
659 aura::test::TestWindowDelegate delegate1; 627 aura::test::TestWindowDelegate delegate1;
660 delegate1.set_maximum_size(gfx::Size(240, 0)); 628 delegate1.set_maximum_size(gfx::Size(240, 0));
661 std::unique_ptr<aura::Window> w1( 629 std::unique_ptr<aura::Window> w1(
662 CreateTestWindowWithDelegate(gfx::Rect(0, 0, 201, 201), &delegate1)); 630 CreateTestWindowWithDelegate(gfx::Rect(0, 0, 201, 201), &delegate1));
663 aura::test::TestWindowDelegate delegate2; 631 aura::test::TestWindowDelegate delegate2;
664 delegate2.set_minimum_size(gfx::Size(260, 0)); 632 delegate2.set_minimum_size(gfx::Size(260, 0));
665 std::unique_ptr<aura::Window> w2( 633 std::unique_ptr<aura::Window> w2(
666 CreateTestWindowWithDelegate(gfx::Rect(0, 0, 280, 202), &delegate2)); 634 CreateTestWindowWithDelegate(gfx::Rect(0, 0, 280, 202), &delegate2));
667 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20); 635 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20);
668 // The first window should get resized to its maximum width. 636 // The first window should get resized to its maximum width.
669 EXPECT_EQ(240, w1->bounds().width()); 637 EXPECT_EQ(240, w1->bounds().width());
670 638
671 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 300); 639 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 300);
672 // The second window should get resized to its minimum width. 640 // The second window should get resized to its minimum width.
673 EXPECT_EQ(260, w2->bounds().width()); 641 EXPECT_EQ(260, w2->bounds().width());
674 642
675 // The first window should be centered relative to the second. 643 // The first window should be centered relative to the second.
676 EXPECT_EQ(w1->bounds().CenterPoint().x(), w2->bounds().CenterPoint().x()); 644 EXPECT_EQ(w1->bounds().CenterPoint().x(), w2->bounds().CenterPoint().x());
677 } 645 }
678 646
679 // Test that restrictions on minimum width of windows are honored. 647 // Test that restrictions on minimum width of windows are honored.
680 TEST_P(DockedWindowLayoutManagerTest, WidthMoreThanMax) { 648 TEST_P(DockedWindowLayoutManagerTest, WidthMoreThanMax) {
681 if (!SupportsHostWindowResize())
682 return;
683
684 aura::test::TestWindowDelegate delegate; 649 aura::test::TestWindowDelegate delegate;
685 delegate.set_minimum_size(gfx::Size(400, 0)); 650 delegate.set_minimum_size(gfx::Size(400, 0));
686 std::unique_ptr<aura::Window> window( 651 std::unique_ptr<aura::Window> window(
687 CreateTestWindowWithDelegate(gfx::Rect(0, 0, 400, 201), &delegate)); 652 CreateTestWindowWithDelegate(gfx::Rect(0, 0, 400, 201), &delegate));
688 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, window.get(), 20); 653 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, window.get(), 20);
689 654
690 // Secondary drag ensures that we are testing the minimum size restriction 655 // Secondary drag ensures that we are testing the minimum size restriction
691 // and not just failure to get past the tiling step in SnapSizer. 656 // and not just failure to get past the tiling step in SnapSizer.
692 ASSERT_NO_FATAL_FAILURE( 657 ASSERT_NO_FATAL_FAILURE(
693 DragStartAtOffsetFromwindowOrigin(window.get(), 25, 5)); 658 DragStartAtOffsetFromwindowOrigin(window.get(), 25, 5));
694 DragMove(150, 0); 659 DragMove(150, 0);
695 DragEnd(); 660 DragEnd();
696 661
697 // The window should not get docked even though it is dragged past the edge. 662 // The window should not get docked even though it is dragged past the edge.
698 EXPECT_NE(window->GetRootWindow()->bounds().right(), 663 EXPECT_NE(window->GetRootWindow()->bounds().right(),
699 window->GetBoundsInScreen().right()); 664 window->GetBoundsInScreen().right());
700 EXPECT_NE(kShellWindowId_DockedContainer, window->parent()->id()); 665 EXPECT_NE(kShellWindowId_DockedContainer, window->parent()->id());
701 } 666 }
702 667
703 // Docks three windows and tests that the very first window gets minimized. 668 // Docks three windows and tests that the very first window gets minimized.
704 TEST_P(DockedWindowLayoutManagerTest, ThreeWindowsMinimize) { 669 TEST_P(DockedWindowLayoutManagerTest, ThreeWindowsMinimize) {
705 if (!SupportsHostWindowResize())
706 return;
707
708 std::unique_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201))); 670 std::unique_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201)));
709 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20); 671 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20);
710 std::unique_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 202))); 672 std::unique_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 202)));
711 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 200); 673 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 200);
712 std::unique_ptr<aura::Window> w3(CreateTestWindow(gfx::Rect(0, 0, 220, 204))); 674 std::unique_ptr<aura::Window> w3(CreateTestWindow(gfx::Rect(0, 0, 220, 204)));
713 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w3.get(), 300); 675 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w3.get(), 300);
714 676
715 // The last two windows should be attached and snapped to the right edge. 677 // The last two windows should be attached and snapped to the right edge.
716 EXPECT_EQ(w2->GetRootWindow()->bounds().right(), 678 EXPECT_EQ(w2->GetRootWindow()->bounds().right(),
717 w2->GetBoundsInScreen().right()); 679 w2->GetBoundsInScreen().right());
(...skipping 13 matching lines...) Expand all
731 // The other two windows should be still docked. 693 // The other two windows should be still docked.
732 EXPECT_FALSE(wm::GetWindowState(w2.get())->IsMinimized()); 694 EXPECT_FALSE(wm::GetWindowState(w2.get())->IsMinimized());
733 EXPECT_TRUE(wm::GetWindowState(w2.get())->IsDocked()); 695 EXPECT_TRUE(wm::GetWindowState(w2.get())->IsDocked());
734 EXPECT_FALSE(wm::GetWindowState(w3.get())->IsMinimized()); 696 EXPECT_FALSE(wm::GetWindowState(w3.get())->IsMinimized());
735 EXPECT_TRUE(wm::GetWindowState(w3.get())->IsDocked()); 697 EXPECT_TRUE(wm::GetWindowState(w3.get())->IsDocked());
736 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 698 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
737 } 699 }
738 700
739 // Docks up to three windows and tests that they split vertical space. 701 // Docks up to three windows and tests that they split vertical space.
740 TEST_P(DockedWindowLayoutManagerTest, ThreeWindowsSplitHeightEvenly) { 702 TEST_P(DockedWindowLayoutManagerTest, ThreeWindowsSplitHeightEvenly) {
741 if (!SupportsHostWindowResize())
742 return;
743
744 UpdateDisplay("600x1000"); 703 UpdateDisplay("600x1000");
745 std::unique_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201))); 704 std::unique_ptr<aura::Window> w1(CreateTestWindow(gfx::Rect(0, 0, 201, 201)));
746 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20); 705 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w1.get(), 20);
747 std::unique_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 202))); 706 std::unique_ptr<aura::Window> w2(CreateTestWindow(gfx::Rect(0, 0, 210, 202)));
748 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 200); 707 DragToVerticalPositionAndToEdge(DOCKED_EDGE_RIGHT, w2.get(), 200);
749 708
750 // The two windows should be attached and snapped to the right edge. 709 // The two windows should be attached and snapped to the right edge.
751 EXPECT_EQ(w1->GetRootWindow()->bounds().right(), 710 EXPECT_EQ(w1->GetRootWindow()->bounds().right(),
752 w1->GetBoundsInScreen().right()); 711 w1->GetBoundsInScreen().right());
753 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id()); 712 EXPECT_EQ(kShellWindowId_DockedContainer, w1->parent()->id());
(...skipping 23 matching lines...) Expand all
777 EXPECT_NEAR(w1->GetBoundsInScreen().height(), 736 EXPECT_NEAR(w1->GetBoundsInScreen().height(),
778 w2->GetBoundsInScreen().height(), 1); 737 w2->GetBoundsInScreen().height(), 1);
779 EXPECT_NEAR(w2->GetBoundsInScreen().height(), 738 EXPECT_NEAR(w2->GetBoundsInScreen().height(),
780 w3->GetBoundsInScreen().height(), 1); 739 w3->GetBoundsInScreen().height(), 1);
781 EXPECT_NEAR(work_area.height() / 3, w1->GetBoundsInScreen().height(), 740 EXPECT_NEAR(work_area.height() / 3, w1->GetBoundsInScreen().height(),
782 min_dock_gap() * 2); 741 min_dock_gap() * 2);
783 } 742 }
784 743
785 // Docks two windows and tests that restrictions on vertical size are honored. 744 // Docks two windows and tests that restrictions on vertical size are honored.
786 TEST_P(DockedWindowLayoutManagerTest, TwoWindowsHeightRestrictions) { 745 TEST_P(DockedWindowLayoutManagerTest, TwoWindowsHeightRestrictions) {
787 if (!SupportsHostWindowResize())
788 return;
789
790 // The first window is fixed height. 746 // The first window is fixed height.
791 aura::test::TestWindowDelegate delegate1; 747 aura::test::TestWindowDelegate delegate1;
792 delegate1.set_minimum_size(gfx::Size(0, 300)); 748 delegate1.set_minimum_size(gfx::Size(0, 300));
793 delegate1.set_maximum_size(gfx::Size(0, 300)); 749 delegate1.set_maximum_size(gfx::Size(0, 300));
794 std::unique_ptr<aura::Window> w1( 750 std::unique_ptr<aura::Window> w1(
795 CreateTestWindowWithDelegate(gfx::Rect(0, 0, 201, 300), &delegate1)); 751 CreateTestWindowWithDelegate(gfx::Rect(0, 0, 201, 300), &delegate1));
796 // The second window has maximum height. 752 // The second window has maximum height.
797 aura::test::TestWindowDelegate delegate2; 753 aura::test::TestWindowDelegate delegate2;
798 delegate2.set_maximum_size(gfx::Size(0, 100)); 754 delegate2.set_maximum_size(gfx::Size(0, 100));
799 std::unique_ptr<aura::Window> w2( 755 std::unique_ptr<aura::Window> w2(
(...skipping 19 matching lines...) Expand all
819 gfx::Rect work_area = display::Screen::GetScreen() 775 gfx::Rect work_area = display::Screen::GetScreen()
820 ->GetDisplayNearestWindow(w1.get()) 776 ->GetDisplayNearestWindow(w1.get())
821 .work_area(); 777 .work_area();
822 EXPECT_GT(w1->GetBoundsInScreen().height(), work_area.height() / 2 + 10); 778 EXPECT_GT(w1->GetBoundsInScreen().height(), work_area.height() / 2 + 10);
823 EXPECT_LT(w2->GetBoundsInScreen().height(), work_area.height() / 2 - 10); 779 EXPECT_LT(w2->GetBoundsInScreen().height(), work_area.height() / 2 - 10);
824 } 780 }
825 781
826 // Tests that a docked window is moved to primary display when secondary display 782 // Tests that a docked window is moved to primary display when secondary display
827 // is disconnected and that it stays docked and properly positioned. 783 // is disconnected and that it stays docked and properly positioned.
828 TEST_P(DockedWindowLayoutManagerTest, DisplayDisconnectionMovesDocked) { 784 TEST_P(DockedWindowLayoutManagerTest, DisplayDisconnectionMovesDocked) {
829 if (!SupportsMultipleDisplays() || !SupportsHostWindowResize()) 785 if (!SupportsMultipleDisplays())
830 return; 786 return;
831 787
832 // Create a dual screen layout. 788 // Create a dual screen layout.
833 UpdateDisplay("600x700,800x600"); 789 UpdateDisplay("600x700,800x600");
834 790
835 gfx::Rect bounds(600, 0, 201, 201); 791 gfx::Rect bounds(600, 0, 201, 201);
836 std::unique_ptr<aura::Window> window(CreateTestWindow(bounds)); 792 std::unique_ptr<aura::Window> window(CreateTestWindow(bounds));
837 // Drag pointer to the right edge of the second screen. 793 // Drag pointer to the right edge of the second screen.
838 DragRelativeToEdge(DOCKED_EDGE_RIGHT, window.get(), 0); 794 DragRelativeToEdge(DOCKED_EDGE_RIGHT, window.get(), 0);
839 795
(...skipping 12 matching lines...) Expand all
852 EXPECT_EQ(work_area.height(), window->GetBoundsInScreen().height()); 808 EXPECT_EQ(work_area.height(), window->GetBoundsInScreen().height());
853 } 809 }
854 810
855 // Tests run twice - on both panels and normal windows 811 // Tests run twice - on both panels and normal windows
856 INSTANTIATE_TEST_CASE_P(NormalOrPanel, 812 INSTANTIATE_TEST_CASE_P(NormalOrPanel,
857 DockedWindowLayoutManagerTest, 813 DockedWindowLayoutManagerTest,
858 testing::Values(ui::wm::WINDOW_TYPE_NORMAL, 814 testing::Values(ui::wm::WINDOW_TYPE_NORMAL,
859 ui::wm::WINDOW_TYPE_PANEL)); 815 ui::wm::WINDOW_TYPE_PANEL));
860 816
861 } // namespace ash 817 } // namespace ash
OLDNEW
« no previous file with comments | « ash/test/ash_test_helper.cc ('k') | ash/wm/dock/docked_window_resizer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698