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

Unified Diff: ash/wm/workspace/workspace_window_resizer_unittest.cc

Issue 10008084: Add ctrl+drag feature for allowing resizing window with exact positioning. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix nits. Created 8 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/wm/workspace/workspace_window_resizer.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 d0bc8aa06c8ee5105cfbf2a504f75065bd8967be..1b3caad22cb1092e8a78a0e00ebcb5653f824f36 100644
--- a/ash/wm/workspace/workspace_window_resizer_unittest.cc
+++ b/ash/wm/workspace/workspace_window_resizer_unittest.cc
@@ -8,6 +8,7 @@
#include "ash/shell.h"
#include "ash/test/ash_test_base.h"
#include "ash/wm/property_util.h"
+#include "ash/wm/workspace_controller.h"
#include "base/string_number_conversions.h"
#include "ui/aura/root_window.h"
#include "ui/aura/test/test_window_delegate.h"
@@ -97,6 +98,10 @@ class WorkspaceWindowResizerTest : public test::AshTestBase {
}
protected:
+ void SetGridSize(int grid_size) {
+ Shell::TestApi shell_test(Shell::GetInstance());
+ shell_test.workspace_controller()->SetGridSize(grid_size);
+ }
gfx::Point CalculateDragPoint(const WorkspaceWindowResizer& resizer,
int delta_x,
int delta_y) const {
@@ -135,27 +140,28 @@ TEST_F(WorkspaceWindowResizerTest, AttachedResize_RIGHT_2) {
std::vector<aura::Window*> windows;
windows.push_back(window2_.get());
+ SetGridSize(0);
scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
- window_.get(), gfx::Point(), HTRIGHT, 0, windows));
+ window_.get(), gfx::Point(), HTRIGHT, windows));
ASSERT_TRUE(resizer.get());
// Move it 100 to the right, which should expand w1 and push w2.
- resizer->Drag(CalculateDragPoint(*resizer, 100, 10));
+ resizer->Drag(CalculateDragPoint(*resizer, 100, 10), 0);
EXPECT_EQ("0,300 500x300", window_->bounds().ToString());
EXPECT_EQ("500,200 100x200", window2_->bounds().ToString());
// Push off the screen, w2 should be resized to its min.
delegate2_.set_min_size(gfx::Size(20, 20));
- resizer->Drag(CalculateDragPoint(*resizer, 800, 20));
+ resizer->Drag(CalculateDragPoint(*resizer, 800, 20), 0);
EXPECT_EQ("0,300 780x300", window_->bounds().ToString());
EXPECT_EQ("780,200 20x200", window2_->bounds().ToString());
// Move back to 100 and verify w2 gets its original size.
- resizer->Drag(CalculateDragPoint(*resizer, 100, 10));
+ resizer->Drag(CalculateDragPoint(*resizer, 100, 10), 0);
EXPECT_EQ("0,300 500x300", window_->bounds().ToString());
EXPECT_EQ("500,200 100x200", window2_->bounds().ToString());
// Revert and make sure everything moves back.
- resizer->Drag(CalculateDragPoint(*resizer, 800, 20));
+ resizer->Drag(CalculateDragPoint(*resizer, 800, 20), 0);
resizer->RevertDrag();
EXPECT_EQ("0,300 400x300", window_->bounds().ToString());
EXPECT_EQ("400,200 100x200", window2_->bounds().ToString());
@@ -168,27 +174,28 @@ TEST_F(WorkspaceWindowResizerTest, AttachedResize_RIGHT_Compress) {
std::vector<aura::Window*> windows;
windows.push_back(window2_.get());
+ SetGridSize(0);
scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
- window_.get(), gfx::Point(), HTRIGHT, 0, windows));
+ window_.get(), gfx::Point(), HTRIGHT, windows));
ASSERT_TRUE(resizer.get());
// Move it 100 to the left, which should expand w2 and collapse w1.
- resizer->Drag(CalculateDragPoint(*resizer, -100, 10));
+ resizer->Drag(CalculateDragPoint(*resizer, -100, 10), 0);
EXPECT_EQ("0,300 300x300", window_->bounds().ToString());
EXPECT_EQ("300,200 200x200", window2_->bounds().ToString());
// Collapse all the way to w1's min.
delegate_.set_min_size(gfx::Size(20, 20));
- resizer->Drag(CalculateDragPoint(*resizer, -800, 20));
+ resizer->Drag(CalculateDragPoint(*resizer, -800, 20), 0);
EXPECT_EQ("0,300 20x300", window_->bounds().ToString());
EXPECT_EQ("20,200 480x200", window2_->bounds().ToString());
// Move 100 to the left.
- resizer->Drag(CalculateDragPoint(*resizer, 100, 10));
+ resizer->Drag(CalculateDragPoint(*resizer, 100, 10), 0);
EXPECT_EQ("0,300 500x300", window_->bounds().ToString());
EXPECT_EQ("500,200 100x200", window2_->bounds().ToString());
// Back to -100.
- resizer->Drag(CalculateDragPoint(*resizer, -100, 20));
+ resizer->Drag(CalculateDragPoint(*resizer, -100, 20), 0);
EXPECT_EQ("0,300 300x300", window_->bounds().ToString());
EXPECT_EQ("300,200 200x200", window2_->bounds().ToString());
}
@@ -205,23 +212,24 @@ TEST_F(WorkspaceWindowResizerTest, AttachedResize_RIGHT_3) {
std::vector<aura::Window*> windows;
windows.push_back(window2_.get());
windows.push_back(window3_.get());
+ SetGridSize(10);
scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
- window_.get(), gfx::Point(), HTRIGHT, 10, windows));
+ window_.get(), gfx::Point(), HTRIGHT, windows));
ASSERT_TRUE(resizer.get());
// Move it 100 to the right, which should expand w1 and push w2 and w3.
- resizer->Drag(CalculateDragPoint(*resizer, 100, -10));
+ resizer->Drag(CalculateDragPoint(*resizer, 100, -10), 0);
EXPECT_EQ("100,300 300x300", window_->bounds().ToString());
EXPECT_EQ("400,300 150x200", window2_->bounds().ToString());
EXPECT_EQ("550,300 100x200", window3_->bounds().ToString());
// Move it 296, which should now snap to grid and things should compress.
- resizer->Drag(CalculateDragPoint(*resizer, 296, -10));
+ resizer->Drag(CalculateDragPoint(*resizer, 296, -10), 0);
EXPECT_EQ("100,300 500x300", window_->bounds().ToString());
EXPECT_EQ("600,300 120x200", window2_->bounds().ToString());
EXPECT_EQ("720,300 80x200", window3_->bounds().ToString());
// Move it so much everything ends up at its min.
- resizer->Drag(CalculateDragPoint(*resizer, 798, 50));
+ resizer->Drag(CalculateDragPoint(*resizer, 798, 50), 0);
EXPECT_EQ("100,300 600x300", window_->bounds().ToString());
EXPECT_EQ("700,300 60x200", window2_->bounds().ToString());
EXPECT_EQ("760,300 40x200", window3_->bounds().ToString());
@@ -245,23 +253,24 @@ TEST_F(WorkspaceWindowResizerTest, AttachedResize_RIGHT_3_Compress) {
std::vector<aura::Window*> windows;
windows.push_back(window2_.get());
windows.push_back(window3_.get());
+ SetGridSize(10);
scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
- window_.get(), gfx::Point(), HTRIGHT, 10, windows));
+ window_.get(), gfx::Point(), HTRIGHT, windows));
ASSERT_TRUE(resizer.get());
// Move it -100 to the right, which should collapse w1 and expand w2 and w3.
- resizer->Drag(CalculateDragPoint(*resizer, -100, -10));
+ resizer->Drag(CalculateDragPoint(*resizer, -100, -10), 0);
EXPECT_EQ("100,300 100x300", window_->bounds().ToString());
EXPECT_EQ("200,300 270x200", window2_->bounds().ToString());
EXPECT_EQ("470,300 130x200", window3_->bounds().ToString());
// Move it 100 to the right.
- resizer->Drag(CalculateDragPoint(*resizer, 100, -10));
+ resizer->Drag(CalculateDragPoint(*resizer, 100, -10), 0);
EXPECT_EQ("100,300 300x300", window_->bounds().ToString());
EXPECT_EQ("400,300 200x200", window2_->bounds().ToString());
EXPECT_EQ("600,300 100x200", window3_->bounds().ToString());
// 100 to the left again.
- resizer->Drag(CalculateDragPoint(*resizer, -100, -10));
+ resizer->Drag(CalculateDragPoint(*resizer, -100, -10), 0);
EXPECT_EQ("100,300 100x300", window_->bounds().ToString());
EXPECT_EQ("200,300 270x200", window2_->bounds().ToString());
EXPECT_EQ("470,300 130x200", window3_->bounds().ToString());
@@ -274,27 +283,28 @@ TEST_F(WorkspaceWindowResizerTest, AttachedResize_BOTTOM_Compress) {
std::vector<aura::Window*> windows;
windows.push_back(window2_.get());
+ SetGridSize(0);
scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
- window_.get(), gfx::Point(), HTBOTTOM, 0, windows));
+ window_.get(), gfx::Point(), HTBOTTOM, windows));
ASSERT_TRUE(resizer.get());
// Move it up 100, which should expand w2 and collapse w1.
- resizer->Drag(CalculateDragPoint(*resizer, 10, -100));
+ resizer->Drag(CalculateDragPoint(*resizer, 10, -100), 0);
EXPECT_EQ("0,100 400x200", window_->bounds().ToString());
EXPECT_EQ("400,300 100x300", window2_->bounds().ToString());
// Collapse all the way to w1's min.
delegate_.set_min_size(gfx::Size(20, 20));
- resizer->Drag(CalculateDragPoint(*resizer, 20, -800));
+ resizer->Drag(CalculateDragPoint(*resizer, 20, -800), 0);
EXPECT_EQ("0,100 400x20", window_->bounds().ToString());
EXPECT_EQ("400,120 100x480", window2_->bounds().ToString());
// Move 100 down.
- resizer->Drag(CalculateDragPoint(*resizer, 10, 100));
+ resizer->Drag(CalculateDragPoint(*resizer, 10, 100), 0);
EXPECT_EQ("0,100 400x400", window_->bounds().ToString());
EXPECT_EQ("400,500 100x100", window2_->bounds().ToString());
// Back to -100.
- resizer->Drag(CalculateDragPoint(*resizer, 20, -100));
+ resizer->Drag(CalculateDragPoint(*resizer, 20, -100), 0);
EXPECT_EQ("0,100 400x200", window_->bounds().ToString());
EXPECT_EQ("400,300 100x300", window2_->bounds().ToString());
}
@@ -307,27 +317,28 @@ TEST_F(WorkspaceWindowResizerTest, AttachedResize_BOTTOM_2) {
std::vector<aura::Window*> windows;
windows.push_back(window2_.get());
+ SetGridSize(0);
scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
- window_.get(), gfx::Point(), HTBOTTOM, 0, windows));
+ window_.get(), gfx::Point(), HTBOTTOM, windows));
ASSERT_TRUE(resizer.get());
// Move it 100 to the bottom, which should expand w1 and push w2.
- resizer->Drag(CalculateDragPoint(*resizer, 10, 100));
+ resizer->Drag(CalculateDragPoint(*resizer, 10, 100), 0);
EXPECT_EQ("0,50 400x300", window_->bounds().ToString());
EXPECT_EQ("0,350 200x100", window2_->bounds().ToString());
// Push off the screen, w2 should be resized to its min.
delegate2_.set_min_size(gfx::Size(20, 20));
- resizer->Drag(CalculateDragPoint(*resizer, 50, 820));
+ resizer->Drag(CalculateDragPoint(*resizer, 50, 820), 0);
EXPECT_EQ("0,50 400x530", window_->bounds().ToString());
EXPECT_EQ("0,580 200x20", window2_->bounds().ToString());
// Move back to 100 and verify w2 gets its original size.
- resizer->Drag(CalculateDragPoint(*resizer, 10, 100));
+ resizer->Drag(CalculateDragPoint(*resizer, 10, 100), 0);
EXPECT_EQ("0,50 400x300", window_->bounds().ToString());
EXPECT_EQ("0,350 200x100", window2_->bounds().ToString());
// Revert and make sure everything moves back.
- resizer->Drag(CalculateDragPoint(*resizer, 800, 20));
+ resizer->Drag(CalculateDragPoint(*resizer, 800, 20), 0);
resizer->RevertDrag();
EXPECT_EQ("0,50 400x200", window_->bounds().ToString());
EXPECT_EQ("0,250 200x100", window2_->bounds().ToString());
@@ -353,23 +364,24 @@ TEST_F(WorkspaceWindowResizerTest, AttachedResize_BOTTOM_3) {
std::vector<aura::Window*> windows;
windows.push_back(window2_.get());
windows.push_back(window3_.get());
+ SetGridSize(10);
scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
- window_.get(), gfx::Point(), HTBOTTOM, 10, windows));
+ window_.get(), gfx::Point(), HTBOTTOM, windows));
ASSERT_TRUE(resizer.get());
// Move it 100 to the right, which should expand w1 and push w2 and w3.
- resizer->Drag(CalculateDragPoint(*resizer, -10, 100));
+ resizer->Drag(CalculateDragPoint(*resizer, -10, 100), 0);
EXPECT_EQ("300,100 300x300", window_->bounds().ToString());
EXPECT_EQ("300,400 200x150", window2_->bounds().ToString());
EXPECT_EQ("300,550 200x100", window3_->bounds().ToString());
// Move it 296, which should now snap to grid and things should compress.
- resizer->Drag(CalculateDragPoint(*resizer, -10, 296));
+ resizer->Drag(CalculateDragPoint(*resizer, -10, 296), 0);
EXPECT_EQ("300,100 300x500", window_->bounds().ToString());
EXPECT_EQ("300,600 200x120", window2_->bounds().ToString());
EXPECT_EQ("300,720 200x80", window3_->bounds().ToString());
// Move it so much everything ends up at its min.
- resizer->Drag(CalculateDragPoint(*resizer, 50, 798));
+ resizer->Drag(CalculateDragPoint(*resizer, 50, 798), 0);
EXPECT_EQ("300,100 300x600", window_->bounds().ToString());
EXPECT_EQ("300,700 200x60", window2_->bounds().ToString());
EXPECT_EQ("300,760 200x40", window3_->bounds().ToString());
@@ -393,23 +405,24 @@ TEST_F(WorkspaceWindowResizerTest, AttachedResize_BOTTOM_3_Compress) {
std::vector<aura::Window*> windows;
windows.push_back(window2_.get());
windows.push_back(window3_.get());
+ SetGridSize(10);
scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
- window_.get(), gfx::Point(), HTBOTTOM, 10, windows));
+ window_.get(), gfx::Point(), HTBOTTOM, windows));
ASSERT_TRUE(resizer.get());
// Move it 100 up, which should collapse w1 and expand w2 and w3.
- resizer->Drag(CalculateDragPoint(*resizer, -10, -100));
+ resizer->Drag(CalculateDragPoint(*resizer, -10, -100), 0);
EXPECT_EQ("0,0 200x100", window_->bounds().ToString());
EXPECT_EQ("10,100 200x270", window2_->bounds().ToString());
EXPECT_EQ("20,370 100x130", window3_->bounds().ToString());
// Move it 100 down.
- resizer->Drag(CalculateDragPoint(*resizer, 10, 100));
+ resizer->Drag(CalculateDragPoint(*resizer, 10, 100), 0);
EXPECT_EQ("0,0 200x300", window_->bounds().ToString());
EXPECT_EQ("10,300 200x200", window2_->bounds().ToString());
EXPECT_EQ("20,500 100x100", window3_->bounds().ToString());
// 100 up again.
- resizer->Drag(CalculateDragPoint(*resizer, -10, -100));
+ resizer->Drag(CalculateDragPoint(*resizer, -10, -100), 0);
EXPECT_EQ("0,0 200x100", window_->bounds().ToString());
EXPECT_EQ("10,100 200x270", window2_->bounds().ToString());
EXPECT_EQ("20,370 100x130", window3_->bounds().ToString());
@@ -421,11 +434,12 @@ TEST_F(WorkspaceWindowResizerTest, Edge) {
ScreenAsh::GetUnmaximizedWorkAreaBounds(window_.get()).bottom();
window_->SetBounds(gfx::Rect(20, 30, 50, 60));
{
+ SetGridSize(0);
scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
- window_.get(), gfx::Point(), HTCAPTION, 0, empty_windows()));
+ window_.get(), gfx::Point(), HTCAPTION, empty_windows()));
ASSERT_TRUE(resizer.get());
- resizer->Drag(CalculateDragPoint(*resizer, 0, 10));
- resizer->CompleteDrag();
+ resizer->Drag(CalculateDragPoint(*resizer, 0, 10), 0);
+ resizer->CompleteDrag(0);
EXPECT_EQ("0,0 400x" + base::IntToString(bottom),
window_->bounds().ToString());
ASSERT_TRUE(GetRestoreBounds(window_.get()));
@@ -433,11 +447,12 @@ TEST_F(WorkspaceWindowResizerTest, Edge) {
}
// Try the same with the right side.
+ SetGridSize(0);
scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
- window_.get(), gfx::Point(), HTCAPTION, 0, empty_windows()));
+ window_.get(), gfx::Point(), HTCAPTION, empty_windows()));
ASSERT_TRUE(resizer.get());
- resizer->Drag(CalculateDragPoint(*resizer, 800, 10));
- resizer->CompleteDrag();
+ resizer->Drag(CalculateDragPoint(*resizer, 800, 10), 0);
+ resizer->CompleteDrag(0);
EXPECT_EQ("400,0 400x" + base::IntToString(bottom),
window_->bounds().ToString());
ASSERT_TRUE(GetRestoreBounds(window_.get()));
@@ -453,11 +468,12 @@ TEST_F(WorkspaceWindowResizerTest, RestackAttached) {
{
std::vector<aura::Window*> windows;
windows.push_back(window2_.get());
+ SetGridSize(10);
scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
- window_.get(), gfx::Point(), HTRIGHT, 10, windows));
+ window_.get(), gfx::Point(), HTRIGHT, windows));
ASSERT_TRUE(resizer.get());
// Move it 100 to the right, which should expand w1 and push w2 and w3.
- resizer->Drag(CalculateDragPoint(*resizer, 100, -10));
+ resizer->Drag(CalculateDragPoint(*resizer, 100, -10), 0);
// 2 should be topmost since it's initially the highest in the stack.
EXPECT_EQ("2 1 3", WindowOrderAsString());
@@ -466,11 +482,12 @@ TEST_F(WorkspaceWindowResizerTest, RestackAttached) {
{
std::vector<aura::Window*> windows;
windows.push_back(window3_.get());
+ SetGridSize(10);
scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
- window2_.get(), gfx::Point(), HTRIGHT, 10, windows));
+ window2_.get(), gfx::Point(), HTRIGHT, windows));
ASSERT_TRUE(resizer.get());
// Move it 100 to the right, which should expand w1 and push w2 and w3.
- resizer->Drag(CalculateDragPoint(*resizer, 100, -10));
+ resizer->Drag(CalculateDragPoint(*resizer, 100, -10), 0);
// 2 should be topmost since it's initially the highest in the stack.
EXPECT_EQ("2 3 1", WindowOrderAsString());
@@ -483,10 +500,11 @@ TEST_F(WorkspaceWindowResizerTest, DontDragOffBottom) {
Shell::GetInstance()->GetRootWindow(), gfx::Insets(0, 0, 10, 0));
window_->SetBounds(gfx::Rect(100, 200, 300, 400));
+ SetGridSize(0);
scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
- window_.get(), gfx::Point(), HTCAPTION, 0, empty_windows()));
+ window_.get(), gfx::Point(), HTCAPTION, empty_windows()));
ASSERT_TRUE(resizer.get());
- resizer->Drag(CalculateDragPoint(*resizer, 0, 600));
+ resizer->Drag(CalculateDragPoint(*resizer, 0, 600), 0);
int expected_y =
kRootHeight - WorkspaceWindowResizer::kMinOnscreenHeight - 10;
EXPECT_EQ("100," + base::IntToString(expected_y) + " 300x400",
@@ -499,10 +517,11 @@ TEST_F(WorkspaceWindowResizerTest, DontDragOffTop) {
Shell::GetInstance()->GetRootWindow(), gfx::Insets(10, 0, 0, 0));
window_->SetBounds(gfx::Rect(100, 200, 300, 400));
+ SetGridSize(0);
scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
- window_.get(), gfx::Point(), HTCAPTION, 0, empty_windows()));
+ window_.get(), gfx::Point(), HTCAPTION, empty_windows()));
ASSERT_TRUE(resizer.get());
- resizer->Drag(CalculateDragPoint(*resizer, 0, -600));
+ resizer->Drag(CalculateDragPoint(*resizer, 0, -600), 0);
EXPECT_EQ("100,10 300x400", window_->bounds().ToString());
}
@@ -511,10 +530,11 @@ TEST_F(WorkspaceWindowResizerTest, ResizeBottomOutsideWorkArea) {
Shell::GetInstance()->GetRootWindow(), gfx::Insets(0, 0, 50, 0));
window_->SetBounds(gfx::Rect(100, 200, 300, 380));
+ SetGridSize(10);
scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
- window_.get(), gfx::Point(), HTTOP, 10, empty_windows()));
+ window_.get(), gfx::Point(), HTTOP, empty_windows()));
ASSERT_TRUE(resizer.get());
- resizer->Drag(CalculateDragPoint(*resizer, 8, 0));
+ resizer->Drag(CalculateDragPoint(*resizer, 8, 0), 0);
EXPECT_EQ("100,200 300x380", window_->bounds().ToString());
}
@@ -523,49 +543,50 @@ TEST_F(WorkspaceWindowResizerTest, SnapToEdge) {
Shell::GetInstance()->SetShelfAutoHideBehavior(
SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
window_->SetBounds(gfx::Rect(96, 112, 320, 160));
+ SetGridSize(16);
scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
- window_.get(), gfx::Point(), HTCAPTION, 16, empty_windows()));
+ window_.get(), gfx::Point(), HTCAPTION, empty_windows()));
ASSERT_TRUE(resizer.get());
// Move to an x-coordinate of 15, which should not snap.
- resizer->Drag(CalculateDragPoint(*resizer, -81, 0));
+ resizer->Drag(CalculateDragPoint(*resizer, -81, 0), 0);
// An x-coordinate of 7 should snap.
- resizer->Drag(CalculateDragPoint(*resizer, -89, 0));
+ resizer->Drag(CalculateDragPoint(*resizer, -89, 0), 0);
EXPECT_EQ("0,112 320x160", window_->bounds().ToString());
// Move to -20, should still snap to 0.
- resizer->Drag(CalculateDragPoint(*resizer, -116, 0));
+ resizer->Drag(CalculateDragPoint(*resizer, -116, 0), 0);
EXPECT_EQ("0,112 320x160", window_->bounds().ToString());
// At -32 should move past snap points.
- resizer->Drag(CalculateDragPoint(*resizer, -128, 0));
+ resizer->Drag(CalculateDragPoint(*resizer, -128, 0), 0);
EXPECT_EQ("-32,112 320x160", window_->bounds().ToString());
- resizer->Drag(CalculateDragPoint(*resizer, -129, 0));
+ resizer->Drag(CalculateDragPoint(*resizer, -129, 0), 0);
EXPECT_EQ("-33,112 320x160", window_->bounds().ToString());
// Right side should similarly snap.
- resizer->Drag(CalculateDragPoint(*resizer, 800 - 320 - 96 - 15, 0));
+ resizer->Drag(CalculateDragPoint(*resizer, 800 - 320 - 96 - 15, 0), 0);
EXPECT_EQ("465,112 320x160", window_->bounds().ToString());
- resizer->Drag(CalculateDragPoint(*resizer, 800 - 320 - 96 - 7, 0));
+ resizer->Drag(CalculateDragPoint(*resizer, 800 - 320 - 96 - 7, 0), 0);
EXPECT_EQ("480,112 320x160", window_->bounds().ToString());
- resizer->Drag(CalculateDragPoint(*resizer, 800 - 320 - 96 + 20, 0));
+ resizer->Drag(CalculateDragPoint(*resizer, 800 - 320 - 96 + 20, 0), 0);
EXPECT_EQ("480,112 320x160", window_->bounds().ToString());
- resizer->Drag(CalculateDragPoint(*resizer, 800 - 320 - 96 + 32, 0));
+ resizer->Drag(CalculateDragPoint(*resizer, 800 - 320 - 96 + 32, 0), 0);
EXPECT_EQ("512,112 320x160", window_->bounds().ToString());
- resizer->Drag(CalculateDragPoint(*resizer, 800 - 320 - 96 + 33, 0));
+ resizer->Drag(CalculateDragPoint(*resizer, 800 - 320 - 96 + 33, 0), 0);
EXPECT_EQ("513,112 320x160", window_->bounds().ToString());
// And the bottom should snap too.
- resizer->Drag(CalculateDragPoint(*resizer, 0, 600 - 160 - 112 - 15));
+ resizer->Drag(CalculateDragPoint(*resizer, 0, 600 - 160 - 112 - 15), 0);
EXPECT_EQ("96,432 320x160", window_->bounds().ToString());
- resizer->Drag(CalculateDragPoint(*resizer, 0, 600 - 160 - 112 + 20));
+ resizer->Drag(CalculateDragPoint(*resizer, 0, 600 - 160 - 112 + 20), 0);
EXPECT_EQ("96,432 320x160", window_->bounds().ToString());
- resizer->Drag(CalculateDragPoint(*resizer, 0, 600 - 160 - 112 + 32));
+ resizer->Drag(CalculateDragPoint(*resizer, 0, 600 - 160 - 112 + 32), 0);
EXPECT_EQ("96,472 320x160", window_->bounds().ToString());
- resizer->Drag(CalculateDragPoint(*resizer, 0, 600 - 160 - 112 + 33));
+ resizer->Drag(CalculateDragPoint(*resizer, 0, 600 - 160 - 112 + 33), 0);
EXPECT_EQ("96,473 320x160", window_->bounds().ToString());
// And the top should snap too.
- resizer->Drag(CalculateDragPoint(*resizer, 0, -112 + 20));
+ resizer->Drag(CalculateDragPoint(*resizer, 0, -112 + 20), 0);
EXPECT_EQ("96,20 320x160", window_->bounds().ToString());
- resizer->Drag(CalculateDragPoint(*resizer, 0, -112 + 7));
+ resizer->Drag(CalculateDragPoint(*resizer, 0, -112 + 7), 0);
EXPECT_EQ("96,0 320x160", window_->bounds().ToString());
// No need to test dragging < 0 as we force that to 0.
}
@@ -577,12 +598,63 @@ TEST_F(WorkspaceWindowResizerTest, TallWindow) {
Shell::GetInstance()->SetMonitorWorkAreaInsets(
root, gfx::Insets(0, 0, 50, 0));
window_->SetBounds(gfx::Rect(0, 0, 320, 560));
+ SetGridSize(16);
scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
- window_.get(), gfx::Point(), HTCAPTION, 16, empty_windows()));
- resizer->Drag(CalculateDragPoint(*resizer, 0, 9));
+ window_.get(), gfx::Point(), HTCAPTION, empty_windows()));
+ resizer->Drag(CalculateDragPoint(*resizer, 0, 9), 0);
EXPECT_EQ("0,9 320x560", window_->bounds().ToString());
}
+TEST_F(WorkspaceWindowResizerTest, DragResizeSnapToGrid) {
+ window_->SetBounds(gfx::Rect(96, 112, 320, 160));
+ SetGridSize(16);
+ scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
+ window_.get(), gfx::Point(), HTBOTTOMRIGHT, empty_windows()));
+ ASSERT_TRUE(resizer.get());
+ // Resize the right bottom to add 10 in width, 12 in height.
+ resizer->Drag(CalculateDragPoint(*resizer, 10, 12), 0);
+ // Both bottom and right sides should snap to grids.
+ EXPECT_EQ("96,112 336x176", window_->bounds().ToString());
+}
+
+TEST_F(WorkspaceWindowResizerTest, CtrlDragResizeToExactPosition) {
+ window_->SetBounds(gfx::Rect(96, 112, 320, 160));
+ SetGridSize(16);
+ scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
+ window_.get(), gfx::Point(), HTBOTTOMRIGHT, empty_windows()));
+ ASSERT_TRUE(resizer.get());
+ // Resize the right bottom to add 10 in width, 12 in height.
+ resizer->Drag(CalculateDragPoint(*resizer, 10, 12), ui::EF_CONTROL_DOWN);
+ // Both bottom and right sides to resize to exact size requested.
+ EXPECT_EQ("96,112 330x172", window_->bounds().ToString());
+}
+
+TEST_F(WorkspaceWindowResizerTest, CompleteDragMoveSnapToGrid) {
+ window_->SetBounds(gfx::Rect(96, 112, 320, 160));
+ SetGridSize(16);
+ scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
+ window_.get(), gfx::Point(), HTCAPTION, empty_windows()));
+ ASSERT_TRUE(resizer.get());
+ // Drag the window to new poistion by adding (10, 12) to original point,
+ // the window should snap to the closed grid.
+ resizer->Drag(CalculateDragPoint(*resizer, 10, 12), 0);
+ resizer->CompleteDrag(0);
+ EXPECT_EQ("112,128 320x160", window_->bounds().ToString());
+}
+
+TEST_F(WorkspaceWindowResizerTest, CtrlCompleteDragMoveToExactPosition) {
+ window_->SetBounds(gfx::Rect(96, 112, 320, 160));
+ SetGridSize(16);
+ scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create(
+ window_.get(), gfx::Point(), HTCAPTION, empty_windows()));
+ ASSERT_TRUE(resizer.get());
+ // Ctrl + drag the window to new poistion by adding (10, 12) to its origin,
+ // the window should move to the exact position.
+ resizer->Drag(CalculateDragPoint(*resizer, 10, 12), 0);
+ resizer->CompleteDrag(ui::EF_CONTROL_DOWN);
+ EXPECT_EQ("106,124 320x160", window_->bounds().ToString());
+}
+
#endif
} // namespace
« no previous file with comments | « ash/wm/workspace/workspace_window_resizer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698