| Index: ash/wm/workspace/workspace_window_resizer_unittest.cc
|
| diff --git a/ash/wm/workspace/workspace_window_resizer_unittest.cc b/ash/wm/workspace/workspace_window_resizer_unittest.cc
|
| index 9fae0c950b5ec02b1feb6efb66f0ee286cc665fb..91264d200969a4075dac5067f2246995bb69d5a1 100644
|
| --- a/ash/wm/workspace/workspace_window_resizer_unittest.cc
|
| +++ b/ash/wm/workspace/workspace_window_resizer_unittest.cc
|
| @@ -420,6 +420,72 @@ TEST_F(WorkspaceWindowResizerTest, AttachedResize_BOTTOM_2) {
|
| EXPECT_EQ("0,250 200x100", window2_->bounds().ToString());
|
| }
|
|
|
| +// Tests that resizing a window to maximized bounds (or even close to them with
|
| +// magnetism) maximizes the window.
|
| +TEST_F(WorkspaceWindowResizerTest, WindowResizedToMaximizedBoundsIsMaximized) {
|
| + window_->SetBounds(gfx::Rect(100, 200, 20, 30));
|
| + window_->SetProperty(aura::client::kCanMaximizeKey, true);
|
| + {
|
| + // Resize |window_| to fit top left corner. Magnetism will adjust it to fit
|
| + // the corner exactly.
|
| + scoped_ptr<WindowResizer> resizer(CreateResizerForTest(
|
| + window_.get(), gfx::Point(), HTTOPLEFT));
|
| + ASSERT_TRUE(resizer.get());
|
| + resizer->Drag(CalculateDragPoint(*resizer, -100 + 2, -200 + 2), 0);
|
| + resizer->CompleteDrag();
|
| + }
|
| + gfx::Rect maximized_bounds = ScreenUtil::GetMaximizedWindowBoundsInParent(
|
| + window_.get());
|
| + {
|
| + // Resize |window_| to fit bottom right corner. Magnetism will adjust it to
|
| + // fit the corner exactly.
|
| + scoped_ptr<WindowResizer> resizer(CreateResizerForTest(
|
| + window_.get(), gfx::Point(), HTBOTTOMRIGHT));
|
| + ASSERT_TRUE(resizer.get());
|
| + gfx::Rect bounds = window_->bounds();
|
| + resizer->Drag(
|
| + CalculateDragPoint(*resizer,
|
| + maximized_bounds.right() - bounds.right() - 2,
|
| + maximized_bounds.bottom() - bounds.bottom() - 2), 0);
|
| + resizer->CompleteDrag();
|
| + }
|
| + // The window should be maximized and should have restore bounds set to its
|
| + // previous bounds.
|
| + EXPECT_EQ(maximized_bounds.ToString(), window_->bounds().ToString());
|
| + wm::WindowState* window_state = wm::GetWindowState(window_.get());
|
| + EXPECT_TRUE(window_state->IsMaximized());
|
| + ASSERT_TRUE(window_state->HasRestoreBounds());
|
| + EXPECT_EQ("0,0 120x230", window_state->GetRestoreBoundsInScreen().ToString());
|
| +}
|
| +
|
| +// Tests that dragging a window that has maximized size to top left screen
|
| +// corner maximizes the window.
|
| +TEST_F(WorkspaceWindowResizerTest, WindowDraggedToMaximizedBoundsIsMaximized) {
|
| + // Force an initial layout.
|
| + Shell::GetPrimaryRootWindowController()->GetShelfLayoutManager()->
|
| + LayoutShelf();
|
| + gfx::Rect maximized_bounds = ScreenUtil::GetMaximizedWindowBoundsInParent(
|
| + window_.get());
|
| + window_->SetBounds(gfx::Rect(gfx::Point(20, 30), maximized_bounds.size()));
|
| + window_->SetProperty(aura::client::kCanMaximizeKey, true);
|
| + // Grab a window and drag it to the top left corner. Do not grab too close to
|
| + // the window origin to avoid snapping.
|
| + scoped_ptr<WindowResizer> resizer(CreateResizerForTest(
|
| + window_.get(), gfx::Point(40, 5), HTCAPTION));
|
| + ASSERT_TRUE(resizer.get());
|
| + resizer->Drag(CalculateDragPoint(*resizer, -20, -30), 0);
|
| + resizer->CompleteDrag();
|
| +
|
| + // The window should be maximized and should have restore bounds set to its
|
| + // previous bounds.
|
| + EXPECT_EQ(maximized_bounds.ToString(), window_->bounds().ToString());
|
| + wm::WindowState* window_state = wm::GetWindowState(window_.get());
|
| + EXPECT_TRUE(window_state->IsMaximized());
|
| + ASSERT_TRUE(window_state->HasRestoreBounds());
|
| + EXPECT_EQ("20,30 " + maximized_bounds.size().ToString(),
|
| + window_state->GetRestoreBoundsInScreen().ToString());
|
| +}
|
| +
|
| #if defined(OS_WIN)
|
| // RootWindow and Display can't resize on Windows Ash. http://crbug.com/165962
|
| #define MAYBE_AttachedResize_BOTTOM_3 DISABLED_AttachedResize_BOTTOM_3
|
|
|