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

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

Issue 15008002: Make touch-resizing windows to screen edge possible (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added test coverage Created 7 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 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 a0a8561f51e7ad676b0b71758201827669367994..6773ac1c2dbf99d84d36f4ffc14801beee86b5eb 100644
--- a/ash/wm/workspace/workspace_window_resizer_unittest.cc
+++ b/ash/wm/workspace/workspace_window_resizer_unittest.cc
@@ -4,6 +4,7 @@
#include "ash/wm/workspace/workspace_window_resizer.h"
+#include "ash/ash_constants.h"
#include "ash/ash_switches.h"
#include "ash/display/display_controller.h"
#include "ash/root_window_controller.h"
@@ -22,6 +23,7 @@
#include "base/strings/string_number_conversions.h"
#include "ui/aura/client/aura_constants.h"
#include "ui/aura/root_window.h"
+#include "ui/aura/test/event_generator.h"
#include "ui/aura/test/test_window_delegate.h"
#include "ui/base/hit_test.h"
#include "ui/gfx/insets.h"
@@ -113,6 +115,7 @@ class WorkspaceWindowResizerTest : public test::AshTestBase {
window2_.reset();
window3_.reset();
window4_.reset();
+ touch_resize_window_.reset();
AshTestBase::TearDown();
}
@@ -151,6 +154,22 @@ class WorkspaceWindowResizerTest : public test::AshTestBase {
return Shell::GetPrimaryRootWindowController()->GetShelfLayoutManager();
}
+ void InitTouchResizeWindow(const gfx::Rect& bounds, int window_component) {
+ touch_resize_delegate_.set_window_component(window_component);
+ touch_resize_window_.reset(
+ CreateTestWindowInShellWithDelegate(&touch_resize_delegate_, 0,
+ bounds));
+ gfx::Insets mouse_insets = gfx::Insets(-ash::kResizeOutsideBoundsSize,
+ -ash::kResizeOutsideBoundsSize,
+ -ash::kResizeOutsideBoundsSize,
+ -ash::kResizeOutsideBoundsSize);
+ gfx::Insets touch_insets = mouse_insets.Scale(
+ ash::kResizeOutsideBoundsScaleForTouch);
+ touch_resize_window_->SetHitTestBoundsOverrideOuter(mouse_insets,
+ touch_insets);
+ touch_resize_window_->set_hit_test_bounds_override_inner(mouse_insets);
+ }
+
TestWindowDelegate delegate_;
TestWindowDelegate delegate2_;
TestWindowDelegate delegate3_;
@@ -160,6 +179,9 @@ class WorkspaceWindowResizerTest : public test::AshTestBase {
scoped_ptr<aura::Window> window3_;
scoped_ptr<aura::Window> window4_;
+ TestWindowDelegate touch_resize_delegate_;
+ scoped_ptr<aura::Window> touch_resize_window_;
+
private:
DISALLOW_COPY_AND_ASSIGN(WorkspaceWindowResizerTest);
};
@@ -1605,5 +1627,154 @@ TEST_F(WorkspaceWindowResizerTest, MainWindowHonoursMinWidth) {
EXPECT_EQ("299,100 101x100", window3_->bounds().ToString());
}
+// The following variants test that windows are resized correctly to the edges
+// of the screen using touch, when touch point is off of the window border.
+TEST_F(WorkspaceWindowResizerTest, TouchResizeToEdge_RIGHT) {
+ shelf_layout_manager()->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN);
+
+ InitTouchResizeWindow(gfx::Rect(100, 100, 600, kRootHeight - 200), HTRIGHT);
+ int expected_height = kRootHeight - 200;
+ EXPECT_EQ("100,100 600x" + base::IntToString(expected_height),
sadrul 2013/06/04 19:17:24 This is better done using gfx::Rect(100, 100, 600,
mohsen 2013/06/04 19:30:08 What about directly comparing the gfx::Rects, inst
sadrul 2013/06/04 19:42:46 Direct Rect-comparisons don't show human-readable
mohsen 2013/06/04 20:13:33 I see. Done.
+ touch_resize_window_->bounds().ToString());
+
+ aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow(),
+ touch_resize_window_.get());
+
+ // Drag out of the right border and resize leftward.
+ generator.GestureScrollSequence(gfx::Point(720, kRootHeight / 2),
+ gfx::Point(670, kRootHeight / 2),
+ base::TimeDelta::FromMilliseconds(100),
+ 1);
+ expected_height = kRootHeight - 200;
+ EXPECT_EQ("100,100 550x" + base::IntToString(expected_height),
+ touch_resize_window_->bounds().ToString());
+ // Drag out of the right border and resize rightward.
+ generator.GestureScrollSequence(gfx::Point(670, kRootHeight / 2),
+ gfx::Point(770, kRootHeight / 2),
+ base::TimeDelta::FromMilliseconds(100),
+ 1);
+ expected_height = kRootHeight - 200;
+ EXPECT_EQ("100,100 666x" + base::IntToString(expected_height),
sadrul 2013/06/04 19:17:24 Why should the height change when dragging towards
mohsen 2013/06/04 19:30:08 The height is not changing. It just depends on kRo
sadrul 2013/06/04 19:42:46 I mean in line 1656
mohsen 2013/06/04 20:13:33 I'm talking about the same line! The height of the
+ touch_resize_window_->bounds().ToString());
+ // Drag the right border and resize rightward to snap.
+ generator.GestureScrollSequence(gfx::Point(766, kRootHeight / 2),
+ gfx::Point(785, kRootHeight / 2),
+ base::TimeDelta::FromMilliseconds(100),
+ 1);
+ expected_height = kRootHeight - 200;
+ EXPECT_EQ("100,100 700x" + base::IntToString(expected_height),
+ touch_resize_window_->bounds().ToString());
+}
+
+TEST_F(WorkspaceWindowResizerTest, TouchResizeToEdge_LEFT) {
+ shelf_layout_manager()->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN);
+
+ InitTouchResizeWindow(gfx::Rect(100, 100, 600, kRootHeight - 200), HTLEFT);
+ int expected_height = kRootHeight - 200;
+ EXPECT_EQ("100,100 600x" + base::IntToString(expected_height),
+ touch_resize_window_->bounds().ToString());
+
+ aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow(),
+ touch_resize_window_.get());
+
+ // Drag out of the left border and resize rightward.
+ generator.GestureScrollSequence(gfx::Point(80, kRootHeight / 2),
+ gfx::Point(130, kRootHeight / 2),
+ base::TimeDelta::FromMilliseconds(100),
+ 1);
+ expected_height = kRootHeight - 200;
+ EXPECT_EQ("150,100 550x" + base::IntToString(expected_height),
+ touch_resize_window_->bounds().ToString());
+ // Drag out of the left border and resize leftward.
+ generator.GestureScrollSequence(gfx::Point(130, kRootHeight / 2),
+ gfx::Point(30, kRootHeight / 2),
+ base::TimeDelta::FromMilliseconds(100),
+ 1);
+ expected_height = kRootHeight - 200;
+ EXPECT_EQ("34,100 666x" + base::IntToString(expected_height),
+ touch_resize_window_->bounds().ToString());
+ // Drag the left border and resize leftward to snap.
+ generator.GestureScrollSequence(gfx::Point(34, kRootHeight / 2),
+ gfx::Point(15, kRootHeight / 2),
+ base::TimeDelta::FromMilliseconds(100),
+ 1);
+ expected_height = kRootHeight - 200;
+ EXPECT_EQ("0,100 700x" + base::IntToString(expected_height),
+ touch_resize_window_->bounds().ToString());
+}
+
+TEST_F(WorkspaceWindowResizerTest, TouchResizeToEdge_TOP) {
+ shelf_layout_manager()->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN);
+
+ InitTouchResizeWindow(gfx::Rect(100, 100, 600, kRootHeight - 200), HTTOP);
+ int expected_height = kRootHeight - 200;
+ EXPECT_EQ("100,100 600x" + base::IntToString(expected_height),
+ touch_resize_window_->bounds().ToString());
+
+ aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow(),
+ touch_resize_window_.get());
+
+ // Drag out of the top border and resize downward.
+ generator.GestureScrollSequence(gfx::Point(400, 80),
+ gfx::Point(400, 130),
+ base::TimeDelta::FromMilliseconds(100),
+ 1);
+ expected_height = kRootHeight - 250;
+ EXPECT_EQ("100,150 600x" + base::IntToString(expected_height),
+ touch_resize_window_->bounds().ToString());
+ // Drag out of the top border and resize upward.
+ generator.GestureScrollSequence(gfx::Point(400, 130),
+ gfx::Point(400, 30),
+ base::TimeDelta::FromMilliseconds(100),
+ 1);
+ expected_height = kRootHeight - 134;
+ EXPECT_EQ("100,34 600x" + base::IntToString(expected_height),
+ touch_resize_window_->bounds().ToString());
+ // Drag the top border and resize upward to snap.
+ generator.GestureScrollSequence(gfx::Point(400, 34),
+ gfx::Point(400, 15),
+ base::TimeDelta::FromMilliseconds(100),
+ 1);
+ expected_height = kRootHeight - 100;
+ EXPECT_EQ("100,0 600x" + base::IntToString(expected_height),
+ touch_resize_window_->bounds().ToString());
+}
+
+TEST_F(WorkspaceWindowResizerTest, TouchResizeToEdge_BOTTOM) {
+ shelf_layout_manager()->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN);
+
+ InitTouchResizeWindow(gfx::Rect(100, 100, 600, kRootHeight - 200), HTBOTTOM);
+ int expected_height = kRootHeight - 200;
+ EXPECT_EQ("100,100 600x" + base::IntToString(expected_height),
+ touch_resize_window_->bounds().ToString());
+
+ aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow(),
+ touch_resize_window_.get());
+
+ // Drag out of the bottom border and resize upward.
+ generator.GestureScrollSequence(gfx::Point(400, kRootHeight - 80),
+ gfx::Point(400, kRootHeight - 130),
+ base::TimeDelta::FromMilliseconds(100),
+ 1);
+ expected_height = kRootHeight - 250;
+ EXPECT_EQ("100,100 600x" + base::IntToString(expected_height),
+ touch_resize_window_->bounds().ToString());
+ // Drag out of the bottom border and resize downward.
+ generator.GestureScrollSequence(gfx::Point(400, kRootHeight - 130),
+ gfx::Point(400, kRootHeight - 30),
+ base::TimeDelta::FromMilliseconds(100),
+ 1);
+ expected_height = kRootHeight - 134;
+ EXPECT_EQ("100,100 600x" + base::IntToString(expected_height),
+ touch_resize_window_->bounds().ToString());
+ // Drag the bottom border and resize downward to snap.
+ generator.GestureScrollSequence(gfx::Point(400, kRootHeight - 34),
+ gfx::Point(400, kRootHeight - 15),
+ base::TimeDelta::FromMilliseconds(100),
+ 1);
+ expected_height = kRootHeight - 100;
+ EXPECT_EQ("100,100 600x" + base::IntToString(expected_height),
+ touch_resize_window_->bounds().ToString());
+}
} // namespace internal
} // namespace ash
« 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