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

Side by Side Diff: ash/wm/workspace/workspace_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/workspace/workspace_layout_manager_unittest.cc ('k') | ash/wm/workspace_controller.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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/workspace/workspace_window_resizer.h" 5 #include "ash/common/wm/workspace/workspace_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/shell_window_ids.h" 8 #include "ash/common/shell_window_ids.h"
9 #include "ash/common/wm/window_positioning_utils.h" 9 #include "ash/common/wm/window_positioning_utils.h"
10 #include "ash/common/wm/window_state.h" 10 #include "ash/common/wm/window_state.h"
(...skipping 27 matching lines...) Expand all
38 38
39 const int kRootHeight = 600; 39 const int kRootHeight = 600;
40 40
41 Shelf* GetShelf() { 41 Shelf* GetShelf() {
42 return Shelf::ForPrimaryDisplay(); 42 return Shelf::ForPrimaryDisplay();
43 } 43 }
44 44
45 // A simple window delegate that returns the specified min size. 45 // A simple window delegate that returns the specified min size.
46 class TestWindowDelegate : public aura::test::TestWindowDelegate { 46 class TestWindowDelegate : public aura::test::TestWindowDelegate {
47 public: 47 public:
48 TestWindowDelegate() { 48 TestWindowDelegate() {}
49 }
50 ~TestWindowDelegate() override {} 49 ~TestWindowDelegate() override {}
51 50
52 void set_min_size(const gfx::Size& size) { 51 void set_min_size(const gfx::Size& size) { min_size_ = size; }
53 min_size_ = size;
54 }
55 52
56 void set_max_size(const gfx::Size& size) { 53 void set_max_size(const gfx::Size& size) { max_size_ = size; }
57 max_size_ = size;
58 }
59 54
60 private: 55 private:
61 // Overridden from aura::Test::TestWindowDelegate: 56 // Overridden from aura::Test::TestWindowDelegate:
62 gfx::Size GetMinimumSize() const override { return min_size_; } 57 gfx::Size GetMinimumSize() const override { return min_size_; }
63 58
64 gfx::Size GetMaximumSize() const override { return max_size_; } 59 gfx::Size GetMaximumSize() const override { return max_size_; }
65 60
66 gfx::Size min_size_; 61 gfx::Size min_size_;
67 gfx::Size max_size_; 62 gfx::Size max_size_;
68 63
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 if (*i == window_.get() || *i == window2_.get() || *i == window3_.get()) { 132 if (*i == window_.get() || *i == window2_.get() || *i == window3_.get()) {
138 if (!result.empty()) 133 if (!result.empty())
139 result += " "; 134 result += " ";
140 result += base::IntToString((*i)->id()); 135 result += base::IntToString((*i)->id());
141 } 136 }
142 } 137 }
143 return result; 138 return result;
144 } 139 }
145 140
146 protected: 141 protected:
147 WindowResizer* CreateResizerForTest( 142 WindowResizer* CreateResizerForTest(aura::Window* window,
148 aura::Window* window, 143 const gfx::Point& point_in_parent,
149 const gfx::Point& point_in_parent, 144 int window_component) {
150 int window_component) {
151 WindowResizer* resizer = 145 WindowResizer* resizer =
152 CreateWindowResizer(WmWindowAura::Get(window), point_in_parent, 146 CreateWindowResizer(WmWindowAura::Get(window), point_in_parent,
153 window_component, 147 window_component,
154 aura::client::WINDOW_MOVE_SOURCE_MOUSE) 148 aura::client::WINDOW_MOVE_SOURCE_MOUSE)
155 .release(); 149 .release();
156 workspace_resizer_ = WorkspaceWindowResizer::GetInstanceForTest(); 150 workspace_resizer_ = WorkspaceWindowResizer::GetInstanceForTest();
157 return resizer; 151 return resizer;
158 } 152 }
159 WorkspaceWindowResizer* CreateWorkspaceResizerForTest( 153 WorkspaceWindowResizer* CreateWorkspaceResizerForTest(
160 aura::Window* window, 154 aura::Window* window,
(...skipping 19 matching lines...) Expand all
180 location.set_y(location.y() + delta_y); 174 location.set_y(location.y() + delta_y);
181 return location; 175 return location;
182 } 176 }
183 177
184 std::vector<aura::Window*> empty_windows() const { 178 std::vector<aura::Window*> empty_windows() const {
185 return std::vector<aura::Window*>(); 179 return std::vector<aura::Window*>();
186 } 180 }
187 181
188 void InitTouchResizeWindow(const gfx::Rect& bounds, int window_component) { 182 void InitTouchResizeWindow(const gfx::Rect& bounds, int window_component) {
189 touch_resize_delegate_.set_window_component(window_component); 183 touch_resize_delegate_.set_window_component(window_component);
190 touch_resize_window_.reset( 184 touch_resize_window_.reset(CreateTestWindowInShellWithDelegate(
191 CreateTestWindowInShellWithDelegate(&touch_resize_delegate_, 0, 185 &touch_resize_delegate_, 0, bounds));
192 bounds));
193 } 186 }
194 187
195 TestWindowDelegate delegate_; 188 TestWindowDelegate delegate_;
196 TestWindowDelegate delegate2_; 189 TestWindowDelegate delegate2_;
197 TestWindowDelegate delegate3_; 190 TestWindowDelegate delegate3_;
198 TestWindowDelegate delegate4_; 191 TestWindowDelegate delegate4_;
199 std::unique_ptr<aura::Window> window_; 192 std::unique_ptr<aura::Window> window_;
200 std::unique_ptr<aura::Window> window2_; 193 std::unique_ptr<aura::Window> window2_;
201 std::unique_ptr<aura::Window> window3_; 194 std::unique_ptr<aura::Window> window3_;
202 std::unique_ptr<aura::Window> window4_; 195 std::unique_ptr<aura::Window> window4_;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 232
240 // Revert and make sure everything moves back. 233 // Revert and make sure everything moves back.
241 resizer->Drag(CalculateDragPoint(*resizer, 800, 20), 0); 234 resizer->Drag(CalculateDragPoint(*resizer, 800, 20), 0);
242 resizer->RevertDrag(); 235 resizer->RevertDrag();
243 EXPECT_EQ("0,300 400x300", window_->bounds().ToString()); 236 EXPECT_EQ("0,300 400x300", window_->bounds().ToString());
244 EXPECT_EQ("400,200 100x200", window2_->bounds().ToString()); 237 EXPECT_EQ("400,200 100x200", window2_->bounds().ToString());
245 } 238 }
246 239
247 // Assertions around collapsing and expanding. 240 // Assertions around collapsing and expanding.
248 TEST_F(WorkspaceWindowResizerTest, AttachedResize_RIGHT_Compress) { 241 TEST_F(WorkspaceWindowResizerTest, AttachedResize_RIGHT_Compress) {
249 window_->SetBounds(gfx::Rect( 0, 300, 400, 300)); 242 window_->SetBounds(gfx::Rect(0, 300, 400, 300));
250 window2_->SetBounds(gfx::Rect(400, 200, 100, 200)); 243 window2_->SetBounds(gfx::Rect(400, 200, 100, 200));
251 244
252 std::vector<aura::Window*> windows; 245 std::vector<aura::Window*> windows;
253 windows.push_back(window2_.get()); 246 windows.push_back(window2_.get());
254 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest( 247 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest(
255 window_.get(), gfx::Point(), HTRIGHT, 248 window_.get(), gfx::Point(), HTRIGHT,
256 aura::client::WINDOW_MOVE_SOURCE_MOUSE, windows)); 249 aura::client::WINDOW_MOVE_SOURCE_MOUSE, windows));
257 ASSERT_TRUE(resizer.get()); 250 ASSERT_TRUE(resizer.get());
258 // Move it 100 to the left, which should expand w2 and collapse w1. 251 // Move it 100 to the left, which should expand w2 and collapse w1.
259 resizer->Drag(CalculateDragPoint(*resizer, -100, 10), 0); 252 resizer->Drag(CalculateDragPoint(*resizer, -100, 10), 0);
(...skipping 18 matching lines...) Expand all
278 271
279 // Back to -100. 272 // Back to -100.
280 resizer->Drag(CalculateDragPoint(*resizer, -100, 20), 0); 273 resizer->Drag(CalculateDragPoint(*resizer, -100, 20), 0);
281 EXPECT_EQ("0,300 300x300", window_->bounds().ToString()); 274 EXPECT_EQ("0,300 300x300", window_->bounds().ToString());
282 EXPECT_EQ("300,200 200x200", window2_->bounds().ToString()); 275 EXPECT_EQ("300,200 200x200", window2_->bounds().ToString());
283 } 276 }
284 277
285 // Assertions around attached window resize dragging from the right with 3 278 // Assertions around attached window resize dragging from the right with 3
286 // windows. 279 // windows.
287 TEST_F(WorkspaceWindowResizerTest, AttachedResize_RIGHT_3) { 280 TEST_F(WorkspaceWindowResizerTest, AttachedResize_RIGHT_3) {
288 window_->SetBounds(gfx::Rect( 100, 300, 200, 300)); 281 window_->SetBounds(gfx::Rect(100, 300, 200, 300));
289 window2_->SetBounds(gfx::Rect(300, 300, 150, 200)); 282 window2_->SetBounds(gfx::Rect(300, 300, 150, 200));
290 window3_->SetBounds(gfx::Rect(450, 300, 100, 200)); 283 window3_->SetBounds(gfx::Rect(450, 300, 100, 200));
291 delegate2_.set_min_size(gfx::Size(52, 50)); 284 delegate2_.set_min_size(gfx::Size(52, 50));
292 delegate3_.set_min_size(gfx::Size(38, 50)); 285 delegate3_.set_min_size(gfx::Size(38, 50));
293 286
294 std::vector<aura::Window*> windows; 287 std::vector<aura::Window*> windows;
295 windows.push_back(window2_.get()); 288 windows.push_back(window2_.get());
296 windows.push_back(window3_.get()); 289 windows.push_back(window3_.get());
297 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest( 290 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest(
298 window_.get(), gfx::Point(), HTRIGHT, 291 window_.get(), gfx::Point(), HTRIGHT,
(...skipping 20 matching lines...) Expand all
319 // Revert and make sure everything moves back. 312 // Revert and make sure everything moves back.
320 resizer->RevertDrag(); 313 resizer->RevertDrag();
321 EXPECT_EQ("100,300 200x300", window_->bounds().ToString()); 314 EXPECT_EQ("100,300 200x300", window_->bounds().ToString());
322 EXPECT_EQ("300,300 150x200", window2_->bounds().ToString()); 315 EXPECT_EQ("300,300 150x200", window2_->bounds().ToString());
323 EXPECT_EQ("450,300 100x200", window3_->bounds().ToString()); 316 EXPECT_EQ("450,300 100x200", window3_->bounds().ToString());
324 } 317 }
325 318
326 // Assertions around attached window resizing (collapsing and expanding) with 319 // Assertions around attached window resizing (collapsing and expanding) with
327 // 3 windows. 320 // 3 windows.
328 TEST_F(WorkspaceWindowResizerTest, AttachedResize_RIGHT_3_Compress) { 321 TEST_F(WorkspaceWindowResizerTest, AttachedResize_RIGHT_3_Compress) {
329 window_->SetBounds(gfx::Rect( 100, 300, 200, 300)); 322 window_->SetBounds(gfx::Rect(100, 300, 200, 300));
330 window2_->SetBounds(gfx::Rect(300, 300, 200, 200)); 323 window2_->SetBounds(gfx::Rect(300, 300, 200, 200));
331 window3_->SetBounds(gfx::Rect(450, 300, 100, 200)); 324 window3_->SetBounds(gfx::Rect(450, 300, 100, 200));
332 delegate2_.set_min_size(gfx::Size(52, 50)); 325 delegate2_.set_min_size(gfx::Size(52, 50));
333 delegate3_.set_min_size(gfx::Size(38, 50)); 326 delegate3_.set_min_size(gfx::Size(38, 50));
334 327
335 std::vector<aura::Window*> windows; 328 std::vector<aura::Window*> windows;
336 windows.push_back(window2_.get()); 329 windows.push_back(window2_.get());
337 windows.push_back(window3_.get()); 330 windows.push_back(window3_.get());
338 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest( 331 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest(
339 window_.get(), gfx::Point(), HTRIGHT, 332 window_.get(), gfx::Point(), HTRIGHT,
(...skipping 13 matching lines...) Expand all
353 346
354 // 100 to the left again. 347 // 100 to the left again.
355 resizer->Drag(CalculateDragPoint(*resizer, -100, -10), 0); 348 resizer->Drag(CalculateDragPoint(*resizer, -100, -10), 0);
356 EXPECT_EQ("100,300 100x300", window_->bounds().ToString()); 349 EXPECT_EQ("100,300 100x300", window_->bounds().ToString());
357 EXPECT_EQ("200,300 266x200", window2_->bounds().ToString()); 350 EXPECT_EQ("200,300 266x200", window2_->bounds().ToString());
358 EXPECT_EQ("466,300 134x200", window3_->bounds().ToString()); 351 EXPECT_EQ("466,300 134x200", window3_->bounds().ToString());
359 } 352 }
360 353
361 // Assertions around collapsing and expanding from the bottom. 354 // Assertions around collapsing and expanding from the bottom.
362 TEST_F(WorkspaceWindowResizerTest, AttachedResize_BOTTOM_Compress) { 355 TEST_F(WorkspaceWindowResizerTest, AttachedResize_BOTTOM_Compress) {
363 window_->SetBounds(gfx::Rect( 0, 100, 400, 300)); 356 window_->SetBounds(gfx::Rect(0, 100, 400, 300));
364 window2_->SetBounds(gfx::Rect(400, 400, 100, 200)); 357 window2_->SetBounds(gfx::Rect(400, 400, 100, 200));
365 358
366 std::vector<aura::Window*> windows; 359 std::vector<aura::Window*> windows;
367 windows.push_back(window2_.get()); 360 windows.push_back(window2_.get());
368 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest( 361 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest(
369 window_.get(), gfx::Point(), HTBOTTOM, 362 window_.get(), gfx::Point(), HTBOTTOM,
370 aura::client::WINDOW_MOVE_SOURCE_MOUSE, windows)); 363 aura::client::WINDOW_MOVE_SOURCE_MOUSE, windows));
371 ASSERT_TRUE(resizer.get()); 364 ASSERT_TRUE(resizer.get());
372 // Move it up 100, which should expand w2 and collapse w1. 365 // Move it up 100, which should expand w2 and collapse w1.
373 resizer->Drag(CalculateDragPoint(*resizer, 10, -100), 0); 366 resizer->Drag(CalculateDragPoint(*resizer, 10, -100), 0);
(...skipping 13 matching lines...) Expand all
387 380
388 // Back to -100. 381 // Back to -100.
389 resizer->Drag(CalculateDragPoint(*resizer, 20, -100), 0); 382 resizer->Drag(CalculateDragPoint(*resizer, 20, -100), 0);
390 EXPECT_EQ("0,100 400x200", window_->bounds().ToString()); 383 EXPECT_EQ("0,100 400x200", window_->bounds().ToString());
391 EXPECT_EQ("400,300 100x300", window2_->bounds().ToString()); 384 EXPECT_EQ("400,300 100x300", window2_->bounds().ToString());
392 } 385 }
393 386
394 // Assertions around attached window resize dragging from the bottom with 2 387 // Assertions around attached window resize dragging from the bottom with 2
395 // windows. 388 // windows.
396 TEST_F(WorkspaceWindowResizerTest, AttachedResize_BOTTOM_2) { 389 TEST_F(WorkspaceWindowResizerTest, AttachedResize_BOTTOM_2) {
397 window_->SetBounds(gfx::Rect( 0, 50, 400, 200)); 390 window_->SetBounds(gfx::Rect(0, 50, 400, 200));
398 window2_->SetBounds(gfx::Rect(0, 250, 200, 100)); 391 window2_->SetBounds(gfx::Rect(0, 250, 200, 100));
399 392
400 std::vector<aura::Window*> windows; 393 std::vector<aura::Window*> windows;
401 windows.push_back(window2_.get()); 394 windows.push_back(window2_.get());
402 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest( 395 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest(
403 window_.get(), gfx::Point(), HTBOTTOM, 396 window_.get(), gfx::Point(), HTBOTTOM,
404 aura::client::WINDOW_MOVE_SOURCE_MOUSE, windows)); 397 aura::client::WINDOW_MOVE_SOURCE_MOUSE, windows));
405 ASSERT_TRUE(resizer.get()); 398 ASSERT_TRUE(resizer.get());
406 // Move it 100 to the bottom, which should expand w1 and push w2. 399 // Move it 100 to the bottom, which should expand w1 and push w2.
407 resizer->Drag(CalculateDragPoint(*resizer, 10, 100), 0); 400 resizer->Drag(CalculateDragPoint(*resizer, 10, 100), 0);
(...skipping 25 matching lines...) Expand all
433 #define MAYBE_AttachedResize_BOTTOM_3 AttachedResize_BOTTOM_3 426 #define MAYBE_AttachedResize_BOTTOM_3 AttachedResize_BOTTOM_3
434 #endif 427 #endif
435 428
436 // Assertions around attached window resize dragging from the bottom with 3 429 // Assertions around attached window resize dragging from the bottom with 3
437 // windows. 430 // windows.
438 TEST_F(WorkspaceWindowResizerTest, MAYBE_AttachedResize_BOTTOM_3) { 431 TEST_F(WorkspaceWindowResizerTest, MAYBE_AttachedResize_BOTTOM_3) {
439 UpdateDisplay("600x800"); 432 UpdateDisplay("600x800");
440 aura::Window* root = Shell::GetPrimaryRootWindow(); 433 aura::Window* root = Shell::GetPrimaryRootWindow();
441 Shell::GetInstance()->SetDisplayWorkAreaInsets(root, gfx::Insets()); 434 Shell::GetInstance()->SetDisplayWorkAreaInsets(root, gfx::Insets());
442 435
443 window_->SetBounds(gfx::Rect( 300, 100, 300, 200)); 436 window_->SetBounds(gfx::Rect(300, 100, 300, 200));
444 window2_->SetBounds(gfx::Rect(300, 300, 200, 150)); 437 window2_->SetBounds(gfx::Rect(300, 300, 200, 150));
445 window3_->SetBounds(gfx::Rect(300, 450, 200, 100)); 438 window3_->SetBounds(gfx::Rect(300, 450, 200, 100));
446 delegate2_.set_min_size(gfx::Size(50, 52)); 439 delegate2_.set_min_size(gfx::Size(50, 52));
447 delegate3_.set_min_size(gfx::Size(50, 38)); 440 delegate3_.set_min_size(gfx::Size(50, 38));
448 441
449 std::vector<aura::Window*> windows; 442 std::vector<aura::Window*> windows;
450 windows.push_back(window2_.get()); 443 windows.push_back(window2_.get());
451 windows.push_back(window3_.get()); 444 windows.push_back(window3_.get());
452 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest( 445 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest(
453 window_.get(), gfx::Point(), HTBOTTOM, 446 window_.get(), gfx::Point(), HTBOTTOM,
(...skipping 20 matching lines...) Expand all
474 // Revert and make sure everything moves back. 467 // Revert and make sure everything moves back.
475 resizer->RevertDrag(); 468 resizer->RevertDrag();
476 EXPECT_EQ("300,100 300x200", window_->bounds().ToString()); 469 EXPECT_EQ("300,100 300x200", window_->bounds().ToString());
477 EXPECT_EQ("300,300 200x150", window2_->bounds().ToString()); 470 EXPECT_EQ("300,300 200x150", window2_->bounds().ToString());
478 EXPECT_EQ("300,450 200x100", window3_->bounds().ToString()); 471 EXPECT_EQ("300,450 200x100", window3_->bounds().ToString());
479 } 472 }
480 473
481 // Assertions around attached window resizing (collapsing and expanding) with 474 // Assertions around attached window resizing (collapsing and expanding) with
482 // 3 windows. 475 // 3 windows.
483 TEST_F(WorkspaceWindowResizerTest, AttachedResize_BOTTOM_3_Compress) { 476 TEST_F(WorkspaceWindowResizerTest, AttachedResize_BOTTOM_3_Compress) {
484 window_->SetBounds(gfx::Rect( 0, 0, 200, 200)); 477 window_->SetBounds(gfx::Rect(0, 0, 200, 200));
485 window2_->SetBounds(gfx::Rect(10, 200, 200, 200)); 478 window2_->SetBounds(gfx::Rect(10, 200, 200, 200));
486 window3_->SetBounds(gfx::Rect(20, 400, 100, 100)); 479 window3_->SetBounds(gfx::Rect(20, 400, 100, 100));
487 delegate2_.set_min_size(gfx::Size(52, 50)); 480 delegate2_.set_min_size(gfx::Size(52, 50));
488 delegate3_.set_min_size(gfx::Size(38, 50)); 481 delegate3_.set_min_size(gfx::Size(38, 50));
489 482
490 std::vector<aura::Window*> windows; 483 std::vector<aura::Window*> windows;
491 windows.push_back(window2_.get()); 484 windows.push_back(window2_.get());
492 windows.push_back(window3_.get()); 485 windows.push_back(window3_.get());
493 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest( 486 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest(
494 window_.get(), gfx::Point(), HTBOTTOM, 487 window_.get(), gfx::Point(), HTBOTTOM,
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
756 EXPECT_EQ(wm::WINDOW_STATE_TYPE_NORMAL, window_state->GetStateType()); 749 EXPECT_EQ(wm::WINDOW_STATE_TYPE_NORMAL, window_state->GetStateType());
757 gfx::Rect expected_bounds(snapped_bounds); 750 gfx::Rect expected_bounds(snapped_bounds);
758 expected_bounds.Inset(0, 0, 0, 10); 751 expected_bounds.Inset(0, 0, 0, 10);
759 EXPECT_EQ(expected_bounds.ToString(), window_->bounds().ToString()); 752 EXPECT_EQ(expected_bounds.ToString(), window_->bounds().ToString());
760 EXPECT_FALSE(window_state->HasRestoreBounds()); 753 EXPECT_FALSE(window_state->HasRestoreBounds());
761 } 754 }
762 } 755 }
763 756
764 // Verifies windows are correctly restacked when reordering multiple windows. 757 // Verifies windows are correctly restacked when reordering multiple windows.
765 TEST_F(WorkspaceWindowResizerTest, RestackAttached) { 758 TEST_F(WorkspaceWindowResizerTest, RestackAttached) {
766 window_->SetBounds(gfx::Rect( 0, 0, 200, 300)); 759 window_->SetBounds(gfx::Rect(0, 0, 200, 300));
767 window2_->SetBounds(gfx::Rect(200, 0, 100, 200)); 760 window2_->SetBounds(gfx::Rect(200, 0, 100, 200));
768 window3_->SetBounds(gfx::Rect(300, 0, 100, 100)); 761 window3_->SetBounds(gfx::Rect(300, 0, 100, 100));
769 762
770 { 763 {
771 std::vector<aura::Window*> windows; 764 std::vector<aura::Window*> windows;
772 windows.push_back(window2_.get()); 765 windows.push_back(window2_.get());
773 std::unique_ptr<WorkspaceWindowResizer> resizer( 766 std::unique_ptr<WorkspaceWindowResizer> resizer(
774 CreateWorkspaceResizerForTest(window_.get(), gfx::Point(), HTRIGHT, 767 CreateWorkspaceResizerForTest(window_.get(), gfx::Point(), HTRIGHT,
775 aura::client::WINDOW_MOVE_SOURCE_MOUSE, 768 aura::client::WINDOW_MOVE_SOURCE_MOUSE,
776 windows)); 769 windows));
(...skipping 16 matching lines...) Expand all
793 // Move it 100 to the right, which should expand w1 and push w2 and w3. 786 // Move it 100 to the right, which should expand w1 and push w2 and w3.
794 resizer->Drag(CalculateDragPoint(*resizer, 100, -10), 0); 787 resizer->Drag(CalculateDragPoint(*resizer, 100, -10), 0);
795 788
796 // 2 should be topmost since it's initially the highest in the stack. 789 // 2 should be topmost since it's initially the highest in the stack.
797 EXPECT_EQ("2 3 1", WindowOrderAsString(window_->parent())); 790 EXPECT_EQ("2 3 1", WindowOrderAsString(window_->parent()));
798 } 791 }
799 } 792 }
800 793
801 // Makes sure we don't allow dragging below the work area. 794 // Makes sure we don't allow dragging below the work area.
802 TEST_F(WorkspaceWindowResizerTest, DontDragOffBottom) { 795 TEST_F(WorkspaceWindowResizerTest, DontDragOffBottom) {
803 Shell::GetInstance()->SetDisplayWorkAreaInsets( 796 Shell::GetInstance()->SetDisplayWorkAreaInsets(Shell::GetPrimaryRootWindow(),
804 Shell::GetPrimaryRootWindow(), gfx::Insets(0, 0, 10, 0)); 797 gfx::Insets(0, 0, 10, 0));
805 798
806 ASSERT_EQ(1, display::Screen::GetScreen()->GetNumDisplays()); 799 ASSERT_EQ(1, display::Screen::GetScreen()->GetNumDisplays());
807 800
808 window_->SetBounds(gfx::Rect(100, 200, 300, 400)); 801 window_->SetBounds(gfx::Rect(100, 200, 300, 400));
809 std::unique_ptr<WindowResizer> resizer( 802 std::unique_ptr<WindowResizer> resizer(
810 CreateResizerForTest(window_.get(), gfx::Point(), HTCAPTION)); 803 CreateResizerForTest(window_.get(), gfx::Point(), HTCAPTION));
811 ASSERT_TRUE(resizer.get()); 804 ASSERT_TRUE(resizer.get());
812 resizer->Drag(CalculateDragPoint(*resizer, 0, 600), 0); 805 resizer->Drag(CalculateDragPoint(*resizer, 0, 600), 0);
813 int expected_y = 806 int expected_y =
814 kRootHeight - WorkspaceWindowResizer::kMinOnscreenHeight - 10; 807 kRootHeight - WorkspaceWindowResizer::kMinOnscreenHeight - 10;
815 EXPECT_EQ("100," + base::IntToString(expected_y) + " 300x400", 808 EXPECT_EQ("100," + base::IntToString(expected_y) + " 300x400",
816 window_->bounds().ToString()); 809 window_->bounds().ToString());
817 } 810 }
818 811
819 // Makes sure we don't allow dragging on the work area with multidisplay. 812 // Makes sure we don't allow dragging on the work area with multidisplay.
820 TEST_F(WorkspaceWindowResizerTest, DontDragOffBottomWithMultiDisplay) { 813 TEST_F(WorkspaceWindowResizerTest, DontDragOffBottomWithMultiDisplay) {
821 if (!SupportsMultipleDisplays()) 814 if (!SupportsMultipleDisplays())
822 return; 815 return;
823 816
824 UpdateDisplay("800x600,800x600"); 817 UpdateDisplay("800x600,800x600");
825 ASSERT_EQ(2, display::Screen::GetScreen()->GetNumDisplays()); 818 ASSERT_EQ(2, display::Screen::GetScreen()->GetNumDisplays());
826 819
827 Shell::GetInstance()->SetDisplayWorkAreaInsets( 820 Shell::GetInstance()->SetDisplayWorkAreaInsets(Shell::GetPrimaryRootWindow(),
828 Shell::GetPrimaryRootWindow(), gfx::Insets(0, 0, 10, 0)); 821 gfx::Insets(0, 0, 10, 0));
829 822
830 // Positions the secondary display at the bottom the primary display. 823 // Positions the secondary display at the bottom the primary display.
831 Shell::GetInstance()->display_manager()->SetLayoutForCurrentDisplays( 824 Shell::GetInstance()->display_manager()->SetLayoutForCurrentDisplays(
832 test::CreateDisplayLayout(display::DisplayPlacement::BOTTOM, 0)); 825 test::CreateDisplayLayout(display::DisplayPlacement::BOTTOM, 0));
833 826
834 { 827 {
835 window_->SetBounds(gfx::Rect(100, 200, 300, 20)); 828 window_->SetBounds(gfx::Rect(100, 200, 300, 20));
836 DCHECK_LT(window_->bounds().height(), 829 DCHECK_LT(window_->bounds().height(),
837 WorkspaceWindowResizer::kMinOnscreenHeight); 830 WorkspaceWindowResizer::kMinOnscreenHeight);
838 // Drag down avoiding dragging along the edge as that would side-snap. 831 // Drag down avoiding dragging along the edge as that would side-snap.
839 std::unique_ptr<WindowResizer> resizer( 832 std::unique_ptr<WindowResizer> resizer(
840 CreateResizerForTest(window_.get(), gfx::Point(10, 0), HTCAPTION)); 833 CreateResizerForTest(window_.get(), gfx::Point(10, 0), HTCAPTION));
841 ASSERT_TRUE(resizer.get()); 834 ASSERT_TRUE(resizer.get());
842 resizer->Drag(CalculateDragPoint(*resizer, 0, 400), 0); 835 resizer->Drag(CalculateDragPoint(*resizer, 0, 400), 0);
843 int expected_y = kRootHeight - window_->bounds().height() - 10; 836 int expected_y = kRootHeight - window_->bounds().height() - 10;
844 // When the mouse cursor is in the primary display, the window cannot move 837 // When the mouse cursor is in the primary display, the window cannot move
845 // on non-work area but can get all the way towards the bottom, 838 // on non-work area but can get all the way towards the bottom,
846 // restricted only by the window height. 839 // restricted only by the window height.
847 EXPECT_EQ("100," + base::IntToString(expected_y) + " 300x20", 840 EXPECT_EQ("100," + base::IntToString(expected_y) + " 300x20",
848 window_->bounds().ToString()); 841 window_->bounds().ToString());
849 // Revert the drag in order to not remember the restore bounds. 842 // Revert the drag in order to not remember the restore bounds.
850 resizer->RevertDrag(); 843 resizer->RevertDrag();
851 } 844 }
852 845
853 Shell::GetInstance()->SetDisplayWorkAreaInsets( 846 Shell::GetInstance()->SetDisplayWorkAreaInsets(Shell::GetPrimaryRootWindow(),
854 Shell::GetPrimaryRootWindow(), gfx::Insets(0, 0, 10, 0)); 847 gfx::Insets(0, 0, 10, 0));
855 { 848 {
856 window_->SetBounds(gfx::Rect(100, 200, 300, 400)); 849 window_->SetBounds(gfx::Rect(100, 200, 300, 400));
857 std::unique_ptr<WindowResizer> resizer( 850 std::unique_ptr<WindowResizer> resizer(
858 CreateResizerForTest(window_.get(), gfx::Point(10, 0), HTCAPTION)); 851 CreateResizerForTest(window_.get(), gfx::Point(10, 0), HTCAPTION));
859 ASSERT_TRUE(resizer.get()); 852 ASSERT_TRUE(resizer.get());
860 // Drag down avoiding dragging along the edge as that would side-snap. 853 // Drag down avoiding dragging along the edge as that would side-snap.
861 resizer->Drag(CalculateDragPoint(*resizer, 0, 400), 0); 854 resizer->Drag(CalculateDragPoint(*resizer, 0, 400), 0);
862 int expected_y = 855 int expected_y =
863 kRootHeight - WorkspaceWindowResizer::kMinOnscreenHeight - 10; 856 kRootHeight - WorkspaceWindowResizer::kMinOnscreenHeight - 10;
864 // When the mouse cursor is in the primary display, the window cannot move 857 // When the mouse cursor is in the primary display, the window cannot move
(...skipping 12 matching lines...) Expand all
877 resizer->Drag(CalculateDragPoint(*resizer, 0, 500), 0); 870 resizer->Drag(CalculateDragPoint(*resizer, 0, 500), 0);
878 // The window can move to the secondary display beyond non-work area of 871 // The window can move to the secondary display beyond non-work area of
879 // the primary display. 872 // the primary display.
880 EXPECT_EQ("100,700 300x400", window_->bounds().ToString()); 873 EXPECT_EQ("100,700 300x400", window_->bounds().ToString());
881 resizer->CompleteDrag(); 874 resizer->CompleteDrag();
882 } 875 }
883 } 876 }
884 877
885 // Makes sure we don't allow dragging off the top of the work area. 878 // Makes sure we don't allow dragging off the top of the work area.
886 TEST_F(WorkspaceWindowResizerTest, DontDragOffTop) { 879 TEST_F(WorkspaceWindowResizerTest, DontDragOffTop) {
887 Shell::GetInstance()->SetDisplayWorkAreaInsets( 880 Shell::GetInstance()->SetDisplayWorkAreaInsets(Shell::GetPrimaryRootWindow(),
888 Shell::GetPrimaryRootWindow(), gfx::Insets(10, 0, 0, 0)); 881 gfx::Insets(10, 0, 0, 0));
889 882
890 window_->SetBounds(gfx::Rect(100, 200, 300, 400)); 883 window_->SetBounds(gfx::Rect(100, 200, 300, 400));
891 std::unique_ptr<WindowResizer> resizer( 884 std::unique_ptr<WindowResizer> resizer(
892 CreateResizerForTest(window_.get(), gfx::Point(), HTCAPTION)); 885 CreateResizerForTest(window_.get(), gfx::Point(), HTCAPTION));
893 ASSERT_TRUE(resizer.get()); 886 ASSERT_TRUE(resizer.get());
894 resizer->Drag(CalculateDragPoint(*resizer, 0, -600), 0); 887 resizer->Drag(CalculateDragPoint(*resizer, 0, -600), 0);
895 EXPECT_EQ("100,10 300x400", window_->bounds().ToString()); 888 EXPECT_EQ("100,10 300x400", window_->bounds().ToString());
896 } 889 }
897 890
898 TEST_F(WorkspaceWindowResizerTest, ResizeBottomOutsideWorkArea) { 891 TEST_F(WorkspaceWindowResizerTest, ResizeBottomOutsideWorkArea) {
899 Shell::GetInstance()->SetDisplayWorkAreaInsets( 892 Shell::GetInstance()->SetDisplayWorkAreaInsets(Shell::GetPrimaryRootWindow(),
900 Shell::GetPrimaryRootWindow(), gfx::Insets(0, 0, 50, 0)); 893 gfx::Insets(0, 0, 50, 0));
901 894
902 window_->SetBounds(gfx::Rect(100, 200, 300, 380)); 895 window_->SetBounds(gfx::Rect(100, 200, 300, 380));
903 std::unique_ptr<WindowResizer> resizer( 896 std::unique_ptr<WindowResizer> resizer(
904 CreateResizerForTest(window_.get(), gfx::Point(), HTTOP)); 897 CreateResizerForTest(window_.get(), gfx::Point(), HTTOP));
905 ASSERT_TRUE(resizer.get()); 898 ASSERT_TRUE(resizer.get());
906 resizer->Drag(CalculateDragPoint(*resizer, 8, 0), 0); 899 resizer->Drag(CalculateDragPoint(*resizer, 8, 0), 0);
907 EXPECT_EQ("100,200 300x380", window_->bounds().ToString()); 900 EXPECT_EQ("100,200 300x380", window_->bounds().ToString());
908 } 901 }
909 902
910 TEST_F(WorkspaceWindowResizerTest, ResizeWindowOutsideLeftWorkArea) { 903 TEST_F(WorkspaceWindowResizerTest, ResizeWindowOutsideLeftWorkArea) {
911 Shell::GetInstance()->SetDisplayWorkAreaInsets( 904 Shell::GetInstance()->SetDisplayWorkAreaInsets(Shell::GetPrimaryRootWindow(),
912 Shell::GetPrimaryRootWindow(), gfx::Insets(0, 0, 50, 0)); 905 gfx::Insets(0, 0, 50, 0));
913 int left = ScreenUtil::GetDisplayWorkAreaBoundsInParent(window_.get()).x(); 906 int left = ScreenUtil::GetDisplayWorkAreaBoundsInParent(window_.get()).x();
914 int pixels_to_left_border = 50; 907 int pixels_to_left_border = 50;
915 int window_width = 300; 908 int window_width = 300;
916 int window_x = left - window_width + pixels_to_left_border; 909 int window_x = left - window_width + pixels_to_left_border;
917 window_->SetBounds(gfx::Rect(window_x, 100, window_width, 380)); 910 window_->SetBounds(gfx::Rect(window_x, 100, window_width, 380));
918 std::unique_ptr<WindowResizer> resizer(CreateResizerForTest( 911 std::unique_ptr<WindowResizer> resizer(CreateResizerForTest(
919 window_.get(), gfx::Point(pixels_to_left_border, 0), HTRIGHT)); 912 window_.get(), gfx::Point(pixels_to_left_border, 0), HTRIGHT));
920 ASSERT_TRUE(resizer.get()); 913 ASSERT_TRUE(resizer.get());
921 resizer->Drag(CalculateDragPoint(*resizer, -window_width, 0), 0); 914 resizer->Drag(CalculateDragPoint(*resizer, -window_width, 0), 0);
922 EXPECT_EQ(base::IntToString(window_x) + ",100 " + 915 EXPECT_EQ(base::IntToString(window_x) + ",100 " +
923 base::IntToString(wm::kMinimumOnScreenArea - window_x) + "x380", 916 base::IntToString(wm::kMinimumOnScreenArea - window_x) + "x380",
924 window_->bounds().ToString()); 917 window_->bounds().ToString());
925 } 918 }
926 919
927 TEST_F(WorkspaceWindowResizerTest, ResizeWindowOutsideRightWorkArea) { 920 TEST_F(WorkspaceWindowResizerTest, ResizeWindowOutsideRightWorkArea) {
928 Shell::GetInstance()->SetDisplayWorkAreaInsets( 921 Shell::GetInstance()->SetDisplayWorkAreaInsets(Shell::GetPrimaryRootWindow(),
929 Shell::GetPrimaryRootWindow(), gfx::Insets(0, 0, 50, 0)); 922 gfx::Insets(0, 0, 50, 0));
930 int right = ScreenUtil::GetDisplayWorkAreaBoundsInParent( 923 int right =
931 window_.get()).right(); 924 ScreenUtil::GetDisplayWorkAreaBoundsInParent(window_.get()).right();
932 int pixels_to_right_border = 50; 925 int pixels_to_right_border = 50;
933 int window_width = 300; 926 int window_width = 300;
934 int window_x = right - pixels_to_right_border; 927 int window_x = right - pixels_to_right_border;
935 window_->SetBounds(gfx::Rect(window_x, 100, window_width, 380)); 928 window_->SetBounds(gfx::Rect(window_x, 100, window_width, 380));
936 std::unique_ptr<WindowResizer> resizer( 929 std::unique_ptr<WindowResizer> resizer(
937 CreateResizerForTest(window_.get(), gfx::Point(window_x, 0), HTLEFT)); 930 CreateResizerForTest(window_.get(), gfx::Point(window_x, 0), HTLEFT));
938 ASSERT_TRUE(resizer.get()); 931 ASSERT_TRUE(resizer.get());
939 resizer->Drag(CalculateDragPoint(*resizer, window_width, 0), 0); 932 resizer->Drag(CalculateDragPoint(*resizer, window_width, 0), 0);
940 EXPECT_EQ(base::IntToString(right - wm::kMinimumOnScreenArea) + ",100 " + 933 EXPECT_EQ(base::IntToString(right - wm::kMinimumOnScreenArea) + ",100 " +
941 base::IntToString(window_width - pixels_to_right_border + 934 base::IntToString(window_width - pixels_to_right_border +
942 wm::kMinimumOnScreenArea) + 935 wm::kMinimumOnScreenArea) +
943 "x380", 936 "x380",
944 window_->bounds().ToString()); 937 window_->bounds().ToString());
945 } 938 }
946 939
947 TEST_F(WorkspaceWindowResizerTest, ResizeWindowOutsideBottomWorkArea) { 940 TEST_F(WorkspaceWindowResizerTest, ResizeWindowOutsideBottomWorkArea) {
948 Shell::GetInstance()->SetDisplayWorkAreaInsets( 941 Shell::GetInstance()->SetDisplayWorkAreaInsets(Shell::GetPrimaryRootWindow(),
949 Shell::GetPrimaryRootWindow(), gfx::Insets(0, 0, 50, 0)); 942 gfx::Insets(0, 0, 50, 0));
950 int bottom = ScreenUtil::GetDisplayWorkAreaBoundsInParent( 943 int bottom =
951 window_.get()).bottom(); 944 ScreenUtil::GetDisplayWorkAreaBoundsInParent(window_.get()).bottom();
952 int delta_to_bottom = 50; 945 int delta_to_bottom = 50;
953 int height = 380; 946 int height = 380;
954 window_->SetBounds(gfx::Rect(100, bottom - delta_to_bottom, 300, height)); 947 window_->SetBounds(gfx::Rect(100, bottom - delta_to_bottom, 300, height));
955 std::unique_ptr<WindowResizer> resizer(CreateResizerForTest( 948 std::unique_ptr<WindowResizer> resizer(CreateResizerForTest(
956 window_.get(), gfx::Point(0, bottom - delta_to_bottom), HTTOP)); 949 window_.get(), gfx::Point(0, bottom - delta_to_bottom), HTTOP));
957 ASSERT_TRUE(resizer.get()); 950 ASSERT_TRUE(resizer.get());
958 resizer->Drag(CalculateDragPoint(*resizer, 0, bottom), 0); 951 resizer->Drag(CalculateDragPoint(*resizer, 0, bottom), 0);
959 EXPECT_EQ("100," + base::IntToString(bottom - wm::kMinimumOnScreenArea) + 952 EXPECT_EQ("100," + base::IntToString(bottom - wm::kMinimumOnScreenArea) +
960 " 300x" + 953 " 300x" +
961 base::IntToString(height - 954 base::IntToString(height -
962 (delta_to_bottom - wm::kMinimumOnScreenArea)), 955 (delta_to_bottom - wm::kMinimumOnScreenArea)),
963 window_->bounds().ToString()); 956 window_->bounds().ToString());
964 } 957 }
965 958
966 // Verifies that 'outside' check of the resizer take into account the extended 959 // Verifies that 'outside' check of the resizer take into account the extended
967 // desktop in case of repositions. 960 // desktop in case of repositions.
968 TEST_F(WorkspaceWindowResizerTest, DragWindowOutsideRightToSecondaryDisplay) { 961 TEST_F(WorkspaceWindowResizerTest, DragWindowOutsideRightToSecondaryDisplay) {
969 // Only primary display. Changes the window position to fit within the 962 // Only primary display. Changes the window position to fit within the
970 // display. 963 // display.
971 Shell::GetInstance()->SetDisplayWorkAreaInsets( 964 Shell::GetInstance()->SetDisplayWorkAreaInsets(Shell::GetPrimaryRootWindow(),
972 Shell::GetPrimaryRootWindow(), gfx::Insets(0, 0, 50, 0)); 965 gfx::Insets(0, 0, 50, 0));
973 int right = ScreenUtil::GetDisplayWorkAreaBoundsInParent( 966 int right =
974 window_.get()).right(); 967 ScreenUtil::GetDisplayWorkAreaBoundsInParent(window_.get()).right();
975 int pixels_to_right_border = 50; 968 int pixels_to_right_border = 50;
976 int window_width = 300; 969 int window_width = 300;
977 int window_x = right - pixels_to_right_border; 970 int window_x = right - pixels_to_right_border;
978 window_->SetBounds(gfx::Rect(window_x, 100, window_width, 380)); 971 window_->SetBounds(gfx::Rect(window_x, 100, window_width, 380));
979 std::unique_ptr<WindowResizer> resizer( 972 std::unique_ptr<WindowResizer> resizer(
980 CreateResizerForTest(window_.get(), gfx::Point(window_x, 0), HTCAPTION)); 973 CreateResizerForTest(window_.get(), gfx::Point(window_x, 0), HTCAPTION));
981 ASSERT_TRUE(resizer.get()); 974 ASSERT_TRUE(resizer.get());
982 resizer->Drag(CalculateDragPoint(*resizer, window_width, 0), 0); 975 resizer->Drag(CalculateDragPoint(*resizer, window_width, 0), 0);
983 EXPECT_EQ(base::IntToString(right - wm::kMinimumOnScreenArea) + ",100 " + 976 EXPECT_EQ(base::IntToString(right - wm::kMinimumOnScreenArea) + ",100 " +
984 base::IntToString(window_width) + "x380", 977 base::IntToString(window_width) + "x380",
985 window_->bounds().ToString()); 978 window_->bounds().ToString());
986 979
987 if (!SupportsMultipleDisplays()) 980 if (!SupportsMultipleDisplays())
988 return; 981 return;
989 982
990 // With secondary display. Operation itself is same but doesn't change 983 // With secondary display. Operation itself is same but doesn't change
991 // the position because the window is still within the secondary display. 984 // the position because the window is still within the secondary display.
992 UpdateDisplay("1000x600,600x400"); 985 UpdateDisplay("1000x600,600x400");
993 Shell::GetInstance()->SetDisplayWorkAreaInsets( 986 Shell::GetInstance()->SetDisplayWorkAreaInsets(Shell::GetPrimaryRootWindow(),
994 Shell::GetPrimaryRootWindow(), gfx::Insets(0, 0, 50, 0)); 987 gfx::Insets(0, 0, 50, 0));
995 window_->SetBounds(gfx::Rect(window_x, 100, window_width, 380)); 988 window_->SetBounds(gfx::Rect(window_x, 100, window_width, 380));
996 resizer->Drag(CalculateDragPoint(*resizer, window_width, 0), 0); 989 resizer->Drag(CalculateDragPoint(*resizer, window_width, 0), 0);
997 EXPECT_EQ(base::IntToString(window_x + window_width) + 990 EXPECT_EQ(base::IntToString(window_x + window_width) + ",100 " +
998 ",100 " + 991 base::IntToString(window_width) + "x380",
999 base::IntToString(window_width) + 992 window_->bounds().ToString());
1000 "x380", window_->bounds().ToString());
1001 } 993 }
1002 994
1003 // Verifies snapping to edges works. 995 // Verifies snapping to edges works.
1004 TEST_F(WorkspaceWindowResizerTest, SnapToEdge) { 996 TEST_F(WorkspaceWindowResizerTest, SnapToEdge) {
1005 GetShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); 997 GetShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
1006 window_->SetBounds(gfx::Rect(96, 112, 320, 160)); 998 window_->SetBounds(gfx::Rect(96, 112, 320, 160));
1007 // Click 50px to the right so that the mouse pointer does not leave the 999 // Click 50px to the right so that the mouse pointer does not leave the
1008 // workspace ensuring sticky behavior. 1000 // workspace ensuring sticky behavior.
1009 std::unique_ptr<WindowResizer> resizer(CreateResizerForTest( 1001 std::unique_ptr<WindowResizer> resizer(CreateResizerForTest(
1010 window_.get(), window_->bounds().origin() + gfx::Vector2d(50, 0), 1002 window_.get(), window_->bounds().origin() + gfx::Vector2d(50, 0),
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1046 resizer->Drag(CalculateDragPoint(*resizer, 0, 600 - 160 - 112 - 2 + 33), 0); 1038 resizer->Drag(CalculateDragPoint(*resizer, 0, 600 - 160 - 112 - 2 + 33), 0);
1047 EXPECT_EQ("96,471 320x160", window_->bounds().ToString()); 1039 EXPECT_EQ("96,471 320x160", window_->bounds().ToString());
1048 1040
1049 // And the top should snap too. 1041 // And the top should snap too.
1050 resizer->Drag(CalculateDragPoint(*resizer, 0, -112 + 20), 0); 1042 resizer->Drag(CalculateDragPoint(*resizer, 0, -112 + 20), 0);
1051 EXPECT_EQ("96,20 320x160", window_->bounds().ToString()); 1043 EXPECT_EQ("96,20 320x160", window_->bounds().ToString());
1052 resizer->Drag(CalculateDragPoint(*resizer, 0, -112 + 7), 0); 1044 resizer->Drag(CalculateDragPoint(*resizer, 0, -112 + 7), 0);
1053 EXPECT_EQ("96,0 320x160", window_->bounds().ToString()); 1045 EXPECT_EQ("96,0 320x160", window_->bounds().ToString());
1054 1046
1055 // And bottom/left should snap too. 1047 // And bottom/left should snap too.
1056 resizer->Drag( 1048 resizer->Drag(CalculateDragPoint(*resizer, 7 - 96, 600 - 160 - 112 - 3 - 7),
1057 CalculateDragPoint(*resizer, 7 - 96, 600 - 160 - 112 - 3 - 7), 0); 1049 0);
1058 EXPECT_EQ("0,437 320x160", window_->bounds().ToString()); 1050 EXPECT_EQ("0,437 320x160", window_->bounds().ToString());
1059 resizer->Drag( 1051 resizer->Drag(
1060 CalculateDragPoint(*resizer, -15 - 96, 600 - 160 - 112 - 3 + 15), 0); 1052 CalculateDragPoint(*resizer, -15 - 96, 600 - 160 - 112 - 3 + 15), 0);
1061 EXPECT_EQ("0,437 320x160", window_->bounds().ToString()); 1053 EXPECT_EQ("0,437 320x160", window_->bounds().ToString());
1062 // should move past snap points. 1054 // should move past snap points.
1063 resizer->Drag( 1055 resizer->Drag(
1064 CalculateDragPoint(*resizer, -32 - 96, 600 - 160 - 112 - 2 + 32), 0); 1056 CalculateDragPoint(*resizer, -32 - 96, 600 - 160 - 112 - 2 + 32), 0);
1065 EXPECT_EQ("-32,470 320x160", window_->bounds().ToString()); 1057 EXPECT_EQ("-32,470 320x160", window_->bounds().ToString());
1066 resizer->Drag( 1058 resizer->Drag(
1067 CalculateDragPoint(*resizer, -33 - 96, 600 - 160 - 112 - 2 + 33), 0); 1059 CalculateDragPoint(*resizer, -33 - 96, 600 - 160 - 112 - 2 + 33), 0);
1068 EXPECT_EQ("-33,471 320x160", window_->bounds().ToString()); 1060 EXPECT_EQ("-33,471 320x160", window_->bounds().ToString());
1069 1061
1070 // No need to test dragging < 0 as we force that to 0. 1062 // No need to test dragging < 0 as we force that to 0.
1071 } 1063 }
1072 1064
1073 // Verifies a resize snap when dragging TOPLEFT. 1065 // Verifies a resize snap when dragging TOPLEFT.
1074 TEST_F(WorkspaceWindowResizerTest, SnapToWorkArea_TOPLEFT) { 1066 TEST_F(WorkspaceWindowResizerTest, SnapToWorkArea_TOPLEFT) {
1075 window_->SetBounds(gfx::Rect(100, 200, 20, 30)); 1067 window_->SetBounds(gfx::Rect(100, 200, 20, 30));
1076 std::unique_ptr<WindowResizer> resizer( 1068 std::unique_ptr<WindowResizer> resizer(
1077 CreateResizerForTest(window_.get(), gfx::Point(), HTTOPLEFT)); 1069 CreateResizerForTest(window_.get(), gfx::Point(), HTTOPLEFT));
1078 ASSERT_TRUE(resizer.get()); 1070 ASSERT_TRUE(resizer.get());
1079 resizer->Drag(CalculateDragPoint(*resizer, -98, -199), 0); 1071 resizer->Drag(CalculateDragPoint(*resizer, -98, -199), 0);
1080 EXPECT_EQ("0,0 120x230", window_->bounds().ToString()); 1072 EXPECT_EQ("0,0 120x230", window_->bounds().ToString());
1081 } 1073 }
1082 1074
1083 // Verifies a resize snap when dragging TOPRIGHT. 1075 // Verifies a resize snap when dragging TOPRIGHT.
1084 TEST_F(WorkspaceWindowResizerTest, SnapToWorkArea_TOPRIGHT) { 1076 TEST_F(WorkspaceWindowResizerTest, SnapToWorkArea_TOPRIGHT) {
1085 window_->SetBounds(gfx::Rect(100, 200, 20, 30)); 1077 window_->SetBounds(gfx::Rect(100, 200, 20, 30));
1086 gfx::Rect work_area(ScreenUtil::GetDisplayWorkAreaBoundsInParent( 1078 gfx::Rect work_area(
1087 window_.get())); 1079 ScreenUtil::GetDisplayWorkAreaBoundsInParent(window_.get()));
1088 std::unique_ptr<WindowResizer> resizer( 1080 std::unique_ptr<WindowResizer> resizer(
1089 CreateResizerForTest(window_.get(), gfx::Point(), HTTOPRIGHT)); 1081 CreateResizerForTest(window_.get(), gfx::Point(), HTTOPRIGHT));
1090 ASSERT_TRUE(resizer.get()); 1082 ASSERT_TRUE(resizer.get());
1091 resizer->Drag( 1083 resizer->Drag(CalculateDragPoint(*resizer, work_area.right() - 120 - 1, -199),
1092 CalculateDragPoint(*resizer, work_area.right() - 120 - 1, -199), 0); 1084 0);
1093 EXPECT_EQ(100, window_->bounds().x()); 1085 EXPECT_EQ(100, window_->bounds().x());
1094 EXPECT_EQ(work_area.y(), window_->bounds().y()); 1086 EXPECT_EQ(work_area.y(), window_->bounds().y());
1095 EXPECT_EQ(work_area.right() - 100, window_->bounds().width()); 1087 EXPECT_EQ(work_area.right() - 100, window_->bounds().width());
1096 EXPECT_EQ(230, window_->bounds().height()); 1088 EXPECT_EQ(230, window_->bounds().height());
1097 } 1089 }
1098 1090
1099 // Verifies a resize snap when dragging BOTTOMRIGHT. 1091 // Verifies a resize snap when dragging BOTTOMRIGHT.
1100 TEST_F(WorkspaceWindowResizerTest, SnapToWorkArea_BOTTOMRIGHT) { 1092 TEST_F(WorkspaceWindowResizerTest, SnapToWorkArea_BOTTOMRIGHT) {
1101 window_->SetBounds(gfx::Rect(100, 200, 20, 30)); 1093 window_->SetBounds(gfx::Rect(100, 200, 20, 30));
1102 gfx::Rect work_area(ScreenUtil::GetDisplayWorkAreaBoundsInParent( 1094 gfx::Rect work_area(
1103 window_.get())); 1095 ScreenUtil::GetDisplayWorkAreaBoundsInParent(window_.get()));
1104 std::unique_ptr<WindowResizer> resizer( 1096 std::unique_ptr<WindowResizer> resizer(
1105 CreateResizerForTest(window_.get(), gfx::Point(), HTBOTTOMRIGHT)); 1097 CreateResizerForTest(window_.get(), gfx::Point(), HTBOTTOMRIGHT));
1106 ASSERT_TRUE(resizer.get()); 1098 ASSERT_TRUE(resizer.get());
1107 resizer->Drag( 1099 resizer->Drag(CalculateDragPoint(*resizer, work_area.right() - 120 - 1,
1108 CalculateDragPoint(*resizer, work_area.right() - 120 - 1, 1100 work_area.bottom() - 220 - 2),
1109 work_area.bottom() - 220 - 2), 0); 1101 0);
1110 EXPECT_EQ(100, window_->bounds().x()); 1102 EXPECT_EQ(100, window_->bounds().x());
1111 EXPECT_EQ(200, window_->bounds().y()); 1103 EXPECT_EQ(200, window_->bounds().y());
1112 EXPECT_EQ(work_area.right() - 100, window_->bounds().width()); 1104 EXPECT_EQ(work_area.right() - 100, window_->bounds().width());
1113 EXPECT_EQ(work_area.bottom() - 200, window_->bounds().height()); 1105 EXPECT_EQ(work_area.bottom() - 200, window_->bounds().height());
1114 } 1106 }
1115 1107
1116 // Verifies a resize snap when dragging BOTTOMLEFT. 1108 // Verifies a resize snap when dragging BOTTOMLEFT.
1117 TEST_F(WorkspaceWindowResizerTest, SnapToWorkArea_BOTTOMLEFT) { 1109 TEST_F(WorkspaceWindowResizerTest, SnapToWorkArea_BOTTOMLEFT) {
1118 window_->SetBounds(gfx::Rect(100, 200, 20, 30)); 1110 window_->SetBounds(gfx::Rect(100, 200, 20, 30));
1119 gfx::Rect work_area(ScreenUtil::GetDisplayWorkAreaBoundsInParent( 1111 gfx::Rect work_area(
1120 window_.get())); 1112 ScreenUtil::GetDisplayWorkAreaBoundsInParent(window_.get()));
1121 std::unique_ptr<WindowResizer> resizer( 1113 std::unique_ptr<WindowResizer> resizer(
1122 CreateResizerForTest(window_.get(), gfx::Point(), HTBOTTOMLEFT)); 1114 CreateResizerForTest(window_.get(), gfx::Point(), HTBOTTOMLEFT));
1123 ASSERT_TRUE(resizer.get()); 1115 ASSERT_TRUE(resizer.get());
1124 resizer->Drag( 1116 resizer->Drag(CalculateDragPoint(*resizer, -98, work_area.bottom() - 220 - 2),
1125 CalculateDragPoint(*resizer, -98, work_area.bottom() - 220 - 2), 0); 1117 0);
1126 EXPECT_EQ(0, window_->bounds().x()); 1118 EXPECT_EQ(0, window_->bounds().x());
1127 EXPECT_EQ(200, window_->bounds().y()); 1119 EXPECT_EQ(200, window_->bounds().y());
1128 EXPECT_EQ(120, window_->bounds().width()); 1120 EXPECT_EQ(120, window_->bounds().width());
1129 EXPECT_EQ(work_area.bottom() - 200, window_->bounds().height()); 1121 EXPECT_EQ(work_area.bottom() - 200, window_->bounds().height());
1130 } 1122 }
1131 1123
1132 // Verifies window sticks to both window and work area. 1124 // Verifies window sticks to both window and work area.
1133 TEST_F(WorkspaceWindowResizerTest, StickToBothEdgeAndWindow) { 1125 TEST_F(WorkspaceWindowResizerTest, StickToBothEdgeAndWindow) {
1134 window_->SetBounds(gfx::Rect(10, 10, 20, 50)); 1126 window_->SetBounds(gfx::Rect(10, 10, 20, 50));
1135 window_->Show(); 1127 window_->Show();
1136 window2_->SetBounds(gfx::Rect(150, 160, 25, 1000)); 1128 window2_->SetBounds(gfx::Rect(150, 160, 25, 1000));
1137 window2_->Show(); 1129 window2_->Show();
1138 1130
1139 std::unique_ptr<WindowResizer> resizer( 1131 std::unique_ptr<WindowResizer> resizer(
1140 CreateResizerForTest(window_.get(), gfx::Point(10, 10), HTCAPTION)); 1132 CreateResizerForTest(window_.get(), gfx::Point(10, 10), HTCAPTION));
1141 ASSERT_TRUE(resizer.get()); 1133 ASSERT_TRUE(resizer.get());
1142 1134
1143 // Move |window| one pixel to the left of |window2|. Should snap to right. 1135 // Move |window| one pixel to the left of |window2|. Should snap to right.
1144 resizer->Drag(CalculateDragPoint(*resizer, 119, 145), 0); 1136 resizer->Drag(CalculateDragPoint(*resizer, 119, 145), 0);
1145 gfx::Rect expected(130, 160, 20, 50); 1137 gfx::Rect expected(130, 160, 20, 50);
1146 EXPECT_EQ(expected.ToString(), window_->bounds().ToString()); 1138 EXPECT_EQ(expected.ToString(), window_->bounds().ToString());
1147 1139
1148 gfx::Rect work_area(ScreenUtil::GetDisplayWorkAreaBoundsInParent( 1140 gfx::Rect work_area(
1149 window_.get())); 1141 ScreenUtil::GetDisplayWorkAreaBoundsInParent(window_.get()));
1150 1142
1151 // The initial y position of |window_|. 1143 // The initial y position of |window_|.
1152 int initial_y = 10; 1144 int initial_y = 10;
1153 // The drag position where the window is exactly attached to the bottom. 1145 // The drag position where the window is exactly attached to the bottom.
1154 int attach_y = work_area.bottom() - window_->bounds().height() - initial_y; 1146 int attach_y = work_area.bottom() - window_->bounds().height() - initial_y;
1155 1147
1156 // Dragging 10px above should not attach to the bottom. 1148 // Dragging 10px above should not attach to the bottom.
1157 resizer->Drag(CalculateDragPoint(*resizer, 119, attach_y - 10), 0); 1149 resizer->Drag(CalculateDragPoint(*resizer, 119, attach_y - 10), 0);
1158 expected.set_y(attach_y + initial_y - 10); 1150 expected.set_y(attach_y + initial_y - 10);
1159 EXPECT_EQ(expected.ToString(), window_->bounds().ToString()); 1151 EXPECT_EQ(expected.ToString(), window_->bounds().ToString());
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
1414 1406
1415 std::unique_ptr<WindowResizer> resizer( 1407 std::unique_ptr<WindowResizer> resizer(
1416 CreateResizerForTest(window_.get(), gfx::Point(), HTLEFT)); 1408 CreateResizerForTest(window_.get(), gfx::Point(), HTLEFT));
1417 ASSERT_TRUE(resizer.get()); 1409 ASSERT_TRUE(resizer.get());
1418 resizer->Drag(CalculateDragPoint(*resizer, 0, 0), 0); 1410 resizer->Drag(CalculateDragPoint(*resizer, 0, 0), 0);
1419 EXPECT_EQ("99,200 21x30", window_->bounds().ToString()); 1411 EXPECT_EQ("99,200 21x30", window_->bounds().ToString());
1420 } 1412 }
1421 1413
1422 // Test that the user user moved window flag is getting properly set. 1414 // Test that the user user moved window flag is getting properly set.
1423 TEST_F(WorkspaceWindowResizerTest, CheckUserWindowManagedFlags) { 1415 TEST_F(WorkspaceWindowResizerTest, CheckUserWindowManagedFlags) {
1424 window_->SetBounds(gfx::Rect( 0, 50, 400, 200)); 1416 window_->SetBounds(gfx::Rect(0, 50, 400, 200));
1425 window_->SetProperty(aura::client::kCanMaximizeKey, true); 1417 window_->SetProperty(aura::client::kCanMaximizeKey, true);
1426 1418
1427 std::vector<aura::Window*> no_attached_windows; 1419 std::vector<aura::Window*> no_attached_windows;
1428 // Check that an abort doesn't change anything. 1420 // Check that an abort doesn't change anything.
1429 { 1421 {
1430 std::unique_ptr<WindowResizer> resizer( 1422 std::unique_ptr<WindowResizer> resizer(
1431 CreateResizerForTest(window_.get(), gfx::Point(), HTCAPTION)); 1423 CreateResizerForTest(window_.get(), gfx::Point(), HTCAPTION));
1432 ASSERT_TRUE(resizer.get()); 1424 ASSERT_TRUE(resizer.get());
1433 // Move it 100 to the bottom. 1425 // Move it 100 to the bottom.
1434 resizer->Drag(CalculateDragPoint(*resizer, 0, 100), 0); 1426 resizer->Drag(CalculateDragPoint(*resizer, 0, 100), 0);
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
1516 resizer->RevertDrag(); 1508 resizer->RevertDrag();
1517 } 1509 }
1518 } 1510 }
1519 1511
1520 TEST_F(WorkspaceWindowResizerTest, DontRewardRightmostWindowForOverflows) { 1512 TEST_F(WorkspaceWindowResizerTest, DontRewardRightmostWindowForOverflows) {
1521 UpdateDisplay("600x800"); 1513 UpdateDisplay("600x800");
1522 aura::Window* root = Shell::GetPrimaryRootWindow(); 1514 aura::Window* root = Shell::GetPrimaryRootWindow();
1523 Shell::GetInstance()->SetDisplayWorkAreaInsets(root, gfx::Insets()); 1515 Shell::GetInstance()->SetDisplayWorkAreaInsets(root, gfx::Insets());
1524 1516
1525 // Four 100x100 windows flush against eachother, starting at 100,100. 1517 // Four 100x100 windows flush against eachother, starting at 100,100.
1526 window_->SetBounds(gfx::Rect( 100, 100, 100, 100)); 1518 window_->SetBounds(gfx::Rect(100, 100, 100, 100));
1527 window2_->SetBounds(gfx::Rect(200, 100, 100, 100)); 1519 window2_->SetBounds(gfx::Rect(200, 100, 100, 100));
1528 window3_->SetBounds(gfx::Rect(300, 100, 100, 100)); 1520 window3_->SetBounds(gfx::Rect(300, 100, 100, 100));
1529 window4_->SetBounds(gfx::Rect(400, 100, 100, 100)); 1521 window4_->SetBounds(gfx::Rect(400, 100, 100, 100));
1530 delegate2_.set_max_size(gfx::Size(101, 0)); 1522 delegate2_.set_max_size(gfx::Size(101, 0));
1531 1523
1532 std::vector<aura::Window*> windows; 1524 std::vector<aura::Window*> windows;
1533 windows.push_back(window2_.get()); 1525 windows.push_back(window2_.get());
1534 windows.push_back(window3_.get()); 1526 windows.push_back(window3_.get());
1535 windows.push_back(window4_.get()); 1527 windows.push_back(window4_.get());
1536 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest( 1528 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest(
(...skipping 10 matching lines...) Expand all
1547 EXPECT_EQ("250,100 125x100", window3_->bounds().ToString()); 1539 EXPECT_EQ("250,100 125x100", window3_->bounds().ToString());
1548 EXPECT_EQ("375,100 125x100", window4_->bounds().ToString()); 1540 EXPECT_EQ("375,100 125x100", window4_->bounds().ToString());
1549 } 1541 }
1550 1542
1551 TEST_F(WorkspaceWindowResizerTest, DontExceedMaxWidth) { 1543 TEST_F(WorkspaceWindowResizerTest, DontExceedMaxWidth) {
1552 UpdateDisplay("600x800"); 1544 UpdateDisplay("600x800");
1553 aura::Window* root = Shell::GetPrimaryRootWindow(); 1545 aura::Window* root = Shell::GetPrimaryRootWindow();
1554 Shell::GetInstance()->SetDisplayWorkAreaInsets(root, gfx::Insets()); 1546 Shell::GetInstance()->SetDisplayWorkAreaInsets(root, gfx::Insets());
1555 1547
1556 // Four 100x100 windows flush against eachother, starting at 100,100. 1548 // Four 100x100 windows flush against eachother, starting at 100,100.
1557 window_->SetBounds(gfx::Rect( 100, 100, 100, 100)); 1549 window_->SetBounds(gfx::Rect(100, 100, 100, 100));
1558 window2_->SetBounds(gfx::Rect(200, 100, 100, 100)); 1550 window2_->SetBounds(gfx::Rect(200, 100, 100, 100));
1559 window3_->SetBounds(gfx::Rect(300, 100, 100, 100)); 1551 window3_->SetBounds(gfx::Rect(300, 100, 100, 100));
1560 window4_->SetBounds(gfx::Rect(400, 100, 100, 100)); 1552 window4_->SetBounds(gfx::Rect(400, 100, 100, 100));
1561 delegate2_.set_max_size(gfx::Size(101, 0)); 1553 delegate2_.set_max_size(gfx::Size(101, 0));
1562 delegate3_.set_max_size(gfx::Size(101, 0)); 1554 delegate3_.set_max_size(gfx::Size(101, 0));
1563 1555
1564 std::vector<aura::Window*> windows; 1556 std::vector<aura::Window*> windows;
1565 windows.push_back(window2_.get()); 1557 windows.push_back(window2_.get());
1566 windows.push_back(window3_.get()); 1558 windows.push_back(window3_.get());
1567 windows.push_back(window4_.get()); 1559 windows.push_back(window4_.get());
1568 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest( 1560 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest(
1569 window_.get(), gfx::Point(), HTRIGHT, 1561 window_.get(), gfx::Point(), HTRIGHT,
1570 aura::client::WINDOW_MOVE_SOURCE_MOUSE, windows)); 1562 aura::client::WINDOW_MOVE_SOURCE_MOUSE, windows));
1571 ASSERT_TRUE(resizer.get()); 1563 ASSERT_TRUE(resizer.get());
1572 // Move it 52 to the left, which should contract w1 and expand w2-4. 1564 // Move it 52 to the left, which should contract w1 and expand w2-4.
1573 resizer->Drag(CalculateDragPoint(*resizer, -52, 0), 0); 1565 resizer->Drag(CalculateDragPoint(*resizer, -52, 0), 0);
1574 EXPECT_EQ("100,100 48x100", window_->bounds().ToString()); 1566 EXPECT_EQ("100,100 48x100", window_->bounds().ToString());
1575 EXPECT_EQ("148,100 101x100", window2_->bounds().ToString()); 1567 EXPECT_EQ("148,100 101x100", window2_->bounds().ToString());
1576 EXPECT_EQ("249,100 101x100", window3_->bounds().ToString()); 1568 EXPECT_EQ("249,100 101x100", window3_->bounds().ToString());
1577 EXPECT_EQ("350,100 150x100", window4_->bounds().ToString()); 1569 EXPECT_EQ("350,100 150x100", window4_->bounds().ToString());
1578 } 1570 }
1579 1571
1580 TEST_F(WorkspaceWindowResizerTest, DontExceedMaxHeight) { 1572 TEST_F(WorkspaceWindowResizerTest, DontExceedMaxHeight) {
1581 UpdateDisplay("600x800"); 1573 UpdateDisplay("600x800");
1582 aura::Window* root = Shell::GetPrimaryRootWindow(); 1574 aura::Window* root = Shell::GetPrimaryRootWindow();
1583 Shell::GetInstance()->SetDisplayWorkAreaInsets(root, gfx::Insets()); 1575 Shell::GetInstance()->SetDisplayWorkAreaInsets(root, gfx::Insets());
1584 1576
1585 // Four 100x100 windows flush against eachother, starting at 100,100. 1577 // Four 100x100 windows flush against eachother, starting at 100,100.
1586 window_->SetBounds(gfx::Rect( 100, 100, 100, 100)); 1578 window_->SetBounds(gfx::Rect(100, 100, 100, 100));
1587 window2_->SetBounds(gfx::Rect(100, 200, 100, 100)); 1579 window2_->SetBounds(gfx::Rect(100, 200, 100, 100));
1588 window3_->SetBounds(gfx::Rect(100, 300, 100, 100)); 1580 window3_->SetBounds(gfx::Rect(100, 300, 100, 100));
1589 window4_->SetBounds(gfx::Rect(100, 400, 100, 100)); 1581 window4_->SetBounds(gfx::Rect(100, 400, 100, 100));
1590 delegate2_.set_max_size(gfx::Size(0, 101)); 1582 delegate2_.set_max_size(gfx::Size(0, 101));
1591 delegate3_.set_max_size(gfx::Size(0, 101)); 1583 delegate3_.set_max_size(gfx::Size(0, 101));
1592 1584
1593 std::vector<aura::Window*> windows; 1585 std::vector<aura::Window*> windows;
1594 windows.push_back(window2_.get()); 1586 windows.push_back(window2_.get());
1595 windows.push_back(window3_.get()); 1587 windows.push_back(window3_.get());
1596 windows.push_back(window4_.get()); 1588 windows.push_back(window4_.get());
(...skipping 15 matching lines...) Expand all
1612 #else 1604 #else
1613 #define MAYBE_DontExceedMinHeight DontExceedMinHeight 1605 #define MAYBE_DontExceedMinHeight DontExceedMinHeight
1614 #endif 1606 #endif
1615 1607
1616 TEST_F(WorkspaceWindowResizerTest, MAYBE_DontExceedMinHeight) { 1608 TEST_F(WorkspaceWindowResizerTest, MAYBE_DontExceedMinHeight) {
1617 UpdateDisplay("600x500"); 1609 UpdateDisplay("600x500");
1618 aura::Window* root = Shell::GetPrimaryRootWindow(); 1610 aura::Window* root = Shell::GetPrimaryRootWindow();
1619 Shell::GetInstance()->SetDisplayWorkAreaInsets(root, gfx::Insets()); 1611 Shell::GetInstance()->SetDisplayWorkAreaInsets(root, gfx::Insets());
1620 1612
1621 // Four 100x100 windows flush against eachother, starting at 100,100. 1613 // Four 100x100 windows flush against eachother, starting at 100,100.
1622 window_->SetBounds(gfx::Rect( 100, 100, 100, 100)); 1614 window_->SetBounds(gfx::Rect(100, 100, 100, 100));
1623 window2_->SetBounds(gfx::Rect(100, 200, 100, 100)); 1615 window2_->SetBounds(gfx::Rect(100, 200, 100, 100));
1624 window3_->SetBounds(gfx::Rect(100, 300, 100, 100)); 1616 window3_->SetBounds(gfx::Rect(100, 300, 100, 100));
1625 window4_->SetBounds(gfx::Rect(100, 400, 100, 100)); 1617 window4_->SetBounds(gfx::Rect(100, 400, 100, 100));
1626 delegate2_.set_min_size(gfx::Size(0, 99)); 1618 delegate2_.set_min_size(gfx::Size(0, 99));
1627 delegate3_.set_min_size(gfx::Size(0, 99)); 1619 delegate3_.set_min_size(gfx::Size(0, 99));
1628 1620
1629 std::vector<aura::Window*> windows; 1621 std::vector<aura::Window*> windows;
1630 windows.push_back(window2_.get()); 1622 windows.push_back(window2_.get());
1631 windows.push_back(window3_.get()); 1623 windows.push_back(window3_.get());
1632 windows.push_back(window4_.get()); 1624 windows.push_back(window4_.get());
1633 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest( 1625 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest(
1634 window_.get(), gfx::Point(), HTBOTTOM, 1626 window_.get(), gfx::Point(), HTBOTTOM,
1635 aura::client::WINDOW_MOVE_SOURCE_MOUSE, windows)); 1627 aura::client::WINDOW_MOVE_SOURCE_MOUSE, windows));
1636 ASSERT_TRUE(resizer.get()); 1628 ASSERT_TRUE(resizer.get());
1637 // Move it 52 down, which should expand w1 and contract w2-4. 1629 // Move it 52 down, which should expand w1 and contract w2-4.
1638 resizer->Drag(CalculateDragPoint(*resizer, 0, 52), 0); 1630 resizer->Drag(CalculateDragPoint(*resizer, 0, 52), 0);
1639 EXPECT_EQ("100,100 100x152", window_->bounds().ToString()); 1631 EXPECT_EQ("100,100 100x152", window_->bounds().ToString());
1640 EXPECT_EQ("100,252 100x99", window2_->bounds().ToString()); 1632 EXPECT_EQ("100,252 100x99", window2_->bounds().ToString());
1641 EXPECT_EQ("100,351 100x99", window3_->bounds().ToString()); 1633 EXPECT_EQ("100,351 100x99", window3_->bounds().ToString());
1642 EXPECT_EQ("100,450 100x50", window4_->bounds().ToString()); 1634 EXPECT_EQ("100,450 100x50", window4_->bounds().ToString());
1643 } 1635 }
1644 1636
1645 TEST_F(WorkspaceWindowResizerTest, DontExpandRightmostPastMaxWidth) { 1637 TEST_F(WorkspaceWindowResizerTest, DontExpandRightmostPastMaxWidth) {
1646 UpdateDisplay("600x800"); 1638 UpdateDisplay("600x800");
1647 aura::Window* root = Shell::GetPrimaryRootWindow(); 1639 aura::Window* root = Shell::GetPrimaryRootWindow();
1648 Shell::GetInstance()->SetDisplayWorkAreaInsets(root, gfx::Insets()); 1640 Shell::GetInstance()->SetDisplayWorkAreaInsets(root, gfx::Insets());
1649 1641
1650 // Three 100x100 windows flush against eachother, starting at 100,100. 1642 // Three 100x100 windows flush against eachother, starting at 100,100.
1651 window_->SetBounds(gfx::Rect( 100, 100, 100, 100)); 1643 window_->SetBounds(gfx::Rect(100, 100, 100, 100));
1652 window2_->SetBounds(gfx::Rect(200, 100, 100, 100)); 1644 window2_->SetBounds(gfx::Rect(200, 100, 100, 100));
1653 window3_->SetBounds(gfx::Rect(300, 100, 100, 100)); 1645 window3_->SetBounds(gfx::Rect(300, 100, 100, 100));
1654 delegate3_.set_max_size(gfx::Size(101, 0)); 1646 delegate3_.set_max_size(gfx::Size(101, 0));
1655 1647
1656 std::vector<aura::Window*> windows; 1648 std::vector<aura::Window*> windows;
1657 windows.push_back(window2_.get()); 1649 windows.push_back(window2_.get());
1658 windows.push_back(window3_.get()); 1650 windows.push_back(window3_.get());
1659 windows.push_back(window4_.get()); 1651 windows.push_back(window4_.get());
1660 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest( 1652 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest(
1661 window_.get(), gfx::Point(), HTRIGHT, 1653 window_.get(), gfx::Point(), HTRIGHT,
1662 aura::client::WINDOW_MOVE_SOURCE_MOUSE, windows)); 1654 aura::client::WINDOW_MOVE_SOURCE_MOUSE, windows));
1663 ASSERT_TRUE(resizer.get()); 1655 ASSERT_TRUE(resizer.get());
1664 // Move it 51 to the left, which should contract w1 and expand w2-3. 1656 // Move it 51 to the left, which should contract w1 and expand w2-3.
1665 resizer->Drag(CalculateDragPoint(*resizer, -51, 0), 0); 1657 resizer->Drag(CalculateDragPoint(*resizer, -51, 0), 0);
1666 EXPECT_EQ("100,100 49x100", window_->bounds().ToString()); 1658 EXPECT_EQ("100,100 49x100", window_->bounds().ToString());
1667 EXPECT_EQ("149,100 150x100", window2_->bounds().ToString()); 1659 EXPECT_EQ("149,100 150x100", window2_->bounds().ToString());
1668 EXPECT_EQ("299,100 101x100", window3_->bounds().ToString()); 1660 EXPECT_EQ("299,100 101x100", window3_->bounds().ToString());
1669 } 1661 }
1670 1662
1671 TEST_F(WorkspaceWindowResizerTest, MoveAttachedWhenGrownToMaxSize) { 1663 TEST_F(WorkspaceWindowResizerTest, MoveAttachedWhenGrownToMaxSize) {
1672 UpdateDisplay("600x800"); 1664 UpdateDisplay("600x800");
1673 aura::Window* root = Shell::GetPrimaryRootWindow(); 1665 aura::Window* root = Shell::GetPrimaryRootWindow();
1674 Shell::GetInstance()->SetDisplayWorkAreaInsets(root, gfx::Insets()); 1666 Shell::GetInstance()->SetDisplayWorkAreaInsets(root, gfx::Insets());
1675 1667
1676 // Three 100x100 windows flush against eachother, starting at 100,100. 1668 // Three 100x100 windows flush against eachother, starting at 100,100.
1677 window_->SetBounds(gfx::Rect( 100, 100, 100, 100)); 1669 window_->SetBounds(gfx::Rect(100, 100, 100, 100));
1678 window2_->SetBounds(gfx::Rect(200, 100, 100, 100)); 1670 window2_->SetBounds(gfx::Rect(200, 100, 100, 100));
1679 window3_->SetBounds(gfx::Rect(300, 100, 100, 100)); 1671 window3_->SetBounds(gfx::Rect(300, 100, 100, 100));
1680 delegate2_.set_max_size(gfx::Size(101, 0)); 1672 delegate2_.set_max_size(gfx::Size(101, 0));
1681 delegate3_.set_max_size(gfx::Size(101, 0)); 1673 delegate3_.set_max_size(gfx::Size(101, 0));
1682 1674
1683 std::vector<aura::Window*> windows; 1675 std::vector<aura::Window*> windows;
1684 windows.push_back(window2_.get()); 1676 windows.push_back(window2_.get());
1685 windows.push_back(window3_.get()); 1677 windows.push_back(window3_.get());
1686 windows.push_back(window4_.get()); 1678 windows.push_back(window4_.get());
1687 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest( 1679 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest(
(...skipping 13 matching lines...) Expand all
1701 #else 1693 #else
1702 #define MAYBE_MainWindowHonoursMaxWidth MainWindowHonoursMaxWidth 1694 #define MAYBE_MainWindowHonoursMaxWidth MainWindowHonoursMaxWidth
1703 #endif 1695 #endif
1704 1696
1705 TEST_F(WorkspaceWindowResizerTest, MAYBE_MainWindowHonoursMaxWidth) { 1697 TEST_F(WorkspaceWindowResizerTest, MAYBE_MainWindowHonoursMaxWidth) {
1706 UpdateDisplay("400x800"); 1698 UpdateDisplay("400x800");
1707 aura::Window* root = Shell::GetPrimaryRootWindow(); 1699 aura::Window* root = Shell::GetPrimaryRootWindow();
1708 Shell::GetInstance()->SetDisplayWorkAreaInsets(root, gfx::Insets()); 1700 Shell::GetInstance()->SetDisplayWorkAreaInsets(root, gfx::Insets());
1709 1701
1710 // Three 100x100 windows flush against eachother, starting at 100,100. 1702 // Three 100x100 windows flush against eachother, starting at 100,100.
1711 window_->SetBounds(gfx::Rect( 100, 100, 100, 100)); 1703 window_->SetBounds(gfx::Rect(100, 100, 100, 100));
1712 window2_->SetBounds(gfx::Rect(200, 100, 100, 100)); 1704 window2_->SetBounds(gfx::Rect(200, 100, 100, 100));
1713 window3_->SetBounds(gfx::Rect(300, 100, 100, 100)); 1705 window3_->SetBounds(gfx::Rect(300, 100, 100, 100));
1714 delegate_.set_max_size(gfx::Size(102, 0)); 1706 delegate_.set_max_size(gfx::Size(102, 0));
1715 1707
1716 std::vector<aura::Window*> windows; 1708 std::vector<aura::Window*> windows;
1717 windows.push_back(window2_.get()); 1709 windows.push_back(window2_.get());
1718 windows.push_back(window3_.get()); 1710 windows.push_back(window3_.get());
1719 windows.push_back(window4_.get()); 1711 windows.push_back(window4_.get());
1720 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest( 1712 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest(
1721 window_.get(), gfx::Point(), HTRIGHT, 1713 window_.get(), gfx::Point(), HTRIGHT,
1722 aura::client::WINDOW_MOVE_SOURCE_MOUSE, windows)); 1714 aura::client::WINDOW_MOVE_SOURCE_MOUSE, windows));
1723 ASSERT_TRUE(resizer.get()); 1715 ASSERT_TRUE(resizer.get());
1724 // Move it 50 to the right, which should expand w1 and contract w2-3, as they 1716 // Move it 50 to the right, which should expand w1 and contract w2-3, as they
1725 // won't fit in the root window in their original sizes. 1717 // won't fit in the root window in their original sizes.
1726 resizer->Drag(CalculateDragPoint(*resizer, 50, 0), 0); 1718 resizer->Drag(CalculateDragPoint(*resizer, 50, 0), 0);
1727 EXPECT_EQ("100,100 102x100", window_->bounds().ToString()); 1719 EXPECT_EQ("100,100 102x100", window_->bounds().ToString());
1728 EXPECT_EQ("202,100 99x100", window2_->bounds().ToString()); 1720 EXPECT_EQ("202,100 99x100", window2_->bounds().ToString());
1729 EXPECT_EQ("301,100 99x100", window3_->bounds().ToString()); 1721 EXPECT_EQ("301,100 99x100", window3_->bounds().ToString());
1730 } 1722 }
1731 1723
1732 TEST_F(WorkspaceWindowResizerTest, MainWindowHonoursMinWidth) { 1724 TEST_F(WorkspaceWindowResizerTest, MainWindowHonoursMinWidth) {
1733 UpdateDisplay("400x800"); 1725 UpdateDisplay("400x800");
1734 aura::Window* root = Shell::GetPrimaryRootWindow(); 1726 aura::Window* root = Shell::GetPrimaryRootWindow();
1735 Shell::GetInstance()->SetDisplayWorkAreaInsets(root, gfx::Insets()); 1727 Shell::GetInstance()->SetDisplayWorkAreaInsets(root, gfx::Insets());
1736 1728
1737 // Three 100x100 windows flush against eachother, starting at 100,100. 1729 // Three 100x100 windows flush against eachother, starting at 100,100.
1738 window_->SetBounds(gfx::Rect( 100, 100, 100, 100)); 1730 window_->SetBounds(gfx::Rect(100, 100, 100, 100));
1739 window2_->SetBounds(gfx::Rect(200, 100, 100, 100)); 1731 window2_->SetBounds(gfx::Rect(200, 100, 100, 100));
1740 window3_->SetBounds(gfx::Rect(300, 100, 100, 100)); 1732 window3_->SetBounds(gfx::Rect(300, 100, 100, 100));
1741 delegate_.set_min_size(gfx::Size(98, 0)); 1733 delegate_.set_min_size(gfx::Size(98, 0));
1742 1734
1743 std::vector<aura::Window*> windows; 1735 std::vector<aura::Window*> windows;
1744 windows.push_back(window2_.get()); 1736 windows.push_back(window2_.get());
1745 windows.push_back(window3_.get()); 1737 windows.push_back(window3_.get());
1746 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest( 1738 std::unique_ptr<WorkspaceWindowResizer> resizer(CreateWorkspaceResizerForTest(
1747 window_.get(), gfx::Point(), HTRIGHT, 1739 window_.get(), gfx::Point(), HTRIGHT,
1748 aura::client::WINDOW_MOVE_SOURCE_MOUSE, windows)); 1740 aura::client::WINDOW_MOVE_SOURCE_MOUSE, windows));
(...skipping 14 matching lines...) Expand all
1763 EXPECT_EQ(gfx::Rect(100, 100, 600, kRootHeight - 200).ToString(), 1755 EXPECT_EQ(gfx::Rect(100, 100, 600, kRootHeight - 200).ToString(),
1764 touch_resize_window_->bounds().ToString()); 1756 touch_resize_window_->bounds().ToString());
1765 1757
1766 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), 1758 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(),
1767 touch_resize_window_.get()); 1759 touch_resize_window_.get());
1768 1760
1769 // Drag out of the right border a bit and check if the border is aligned with 1761 // Drag out of the right border a bit and check if the border is aligned with
1770 // the touch point. 1762 // the touch point.
1771 generator.GestureScrollSequence(gfx::Point(715, kRootHeight / 2), 1763 generator.GestureScrollSequence(gfx::Point(715, kRootHeight / 2),
1772 gfx::Point(725, kRootHeight / 2), 1764 gfx::Point(725, kRootHeight / 2),
1773 base::TimeDelta::FromMilliseconds(10), 1765 base::TimeDelta::FromMilliseconds(10), 5);
1774 5);
1775 EXPECT_EQ(gfx::Rect(100, 100, 625, kRootHeight - 200).ToString(), 1766 EXPECT_EQ(gfx::Rect(100, 100, 625, kRootHeight - 200).ToString(),
1776 touch_resize_window_->bounds().ToString()); 1767 touch_resize_window_->bounds().ToString());
1777 // Drag more, but stop before being snapped to the edge. 1768 // Drag more, but stop before being snapped to the edge.
1778 generator.GestureScrollSequence(gfx::Point(725, kRootHeight / 2), 1769 generator.GestureScrollSequence(gfx::Point(725, kRootHeight / 2),
1779 gfx::Point(760, kRootHeight / 2), 1770 gfx::Point(760, kRootHeight / 2),
1780 base::TimeDelta::FromMilliseconds(10), 1771 base::TimeDelta::FromMilliseconds(10), 5);
1781 5);
1782 EXPECT_EQ(gfx::Rect(100, 100, 660, kRootHeight - 200).ToString(), 1772 EXPECT_EQ(gfx::Rect(100, 100, 660, kRootHeight - 200).ToString(),
1783 touch_resize_window_->bounds().ToString()); 1773 touch_resize_window_->bounds().ToString());
1784 // Drag even more to snap to the edge. 1774 // Drag even more to snap to the edge.
1785 generator.GestureScrollSequence(gfx::Point(760, kRootHeight / 2), 1775 generator.GestureScrollSequence(gfx::Point(760, kRootHeight / 2),
1786 gfx::Point(775, kRootHeight / 2), 1776 gfx::Point(775, kRootHeight / 2),
1787 base::TimeDelta::FromMilliseconds(10), 1777 base::TimeDelta::FromMilliseconds(10), 5);
1788 5);
1789 EXPECT_EQ(gfx::Rect(100, 100, 700, kRootHeight - 200).ToString(), 1778 EXPECT_EQ(gfx::Rect(100, 100, 700, kRootHeight - 200).ToString(),
1790 touch_resize_window_->bounds().ToString()); 1779 touch_resize_window_->bounds().ToString());
1791 } 1780 }
1792 1781
1793 TEST_F(WorkspaceWindowResizerTest, TouchResizeToEdge_LEFT) { 1782 TEST_F(WorkspaceWindowResizerTest, TouchResizeToEdge_LEFT) {
1794 GetShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN); 1783 GetShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN);
1795 1784
1796 InitTouchResizeWindow(gfx::Rect(100, 100, 600, kRootHeight - 200), HTLEFT); 1785 InitTouchResizeWindow(gfx::Rect(100, 100, 600, kRootHeight - 200), HTLEFT);
1797 EXPECT_EQ(gfx::Rect(100, 100, 600, kRootHeight - 200).ToString(), 1786 EXPECT_EQ(gfx::Rect(100, 100, 600, kRootHeight - 200).ToString(),
1798 touch_resize_window_->bounds().ToString()); 1787 touch_resize_window_->bounds().ToString());
1799 1788
1800 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), 1789 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(),
1801 touch_resize_window_.get()); 1790 touch_resize_window_.get());
1802 1791
1803 // Drag out of the left border a bit and check if the border is aligned with 1792 // Drag out of the left border a bit and check if the border is aligned with
1804 // the touch point. 1793 // the touch point.
1805 generator.GestureScrollSequence(gfx::Point(85, kRootHeight / 2), 1794 generator.GestureScrollSequence(gfx::Point(85, kRootHeight / 2),
1806 gfx::Point(75, kRootHeight / 2), 1795 gfx::Point(75, kRootHeight / 2),
1807 base::TimeDelta::FromMilliseconds(10), 1796 base::TimeDelta::FromMilliseconds(10), 5);
1808 5);
1809 EXPECT_EQ(gfx::Rect(75, 100, 625, kRootHeight - 200).ToString(), 1797 EXPECT_EQ(gfx::Rect(75, 100, 625, kRootHeight - 200).ToString(),
1810 touch_resize_window_->bounds().ToString()); 1798 touch_resize_window_->bounds().ToString());
1811 // Drag more, but stop before being snapped to the edge. 1799 // Drag more, but stop before being snapped to the edge.
1812 generator.GestureScrollSequence(gfx::Point(75, kRootHeight / 2), 1800 generator.GestureScrollSequence(gfx::Point(75, kRootHeight / 2),
1813 gfx::Point(40, kRootHeight / 2), 1801 gfx::Point(40, kRootHeight / 2),
1814 base::TimeDelta::FromMilliseconds(10), 1802 base::TimeDelta::FromMilliseconds(10), 5);
1815 5);
1816 EXPECT_EQ(gfx::Rect(40, 100, 660, kRootHeight - 200).ToString(), 1803 EXPECT_EQ(gfx::Rect(40, 100, 660, kRootHeight - 200).ToString(),
1817 touch_resize_window_->bounds().ToString()); 1804 touch_resize_window_->bounds().ToString());
1818 // Drag even more to snap to the edge. 1805 // Drag even more to snap to the edge.
1819 generator.GestureScrollSequence(gfx::Point(40, kRootHeight / 2), 1806 generator.GestureScrollSequence(gfx::Point(40, kRootHeight / 2),
1820 gfx::Point(25, kRootHeight / 2), 1807 gfx::Point(25, kRootHeight / 2),
1821 base::TimeDelta::FromMilliseconds(10), 1808 base::TimeDelta::FromMilliseconds(10), 5);
1822 5);
1823 EXPECT_EQ(gfx::Rect(0, 100, 700, kRootHeight - 200).ToString(), 1809 EXPECT_EQ(gfx::Rect(0, 100, 700, kRootHeight - 200).ToString(),
1824 touch_resize_window_->bounds().ToString()); 1810 touch_resize_window_->bounds().ToString());
1825 } 1811 }
1826 1812
1827 TEST_F(WorkspaceWindowResizerTest, TouchResizeToEdge_TOP) { 1813 TEST_F(WorkspaceWindowResizerTest, TouchResizeToEdge_TOP) {
1828 GetShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN); 1814 GetShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN);
1829 1815
1830 InitTouchResizeWindow(gfx::Rect(100, 100, 600, kRootHeight - 200), HTTOP); 1816 InitTouchResizeWindow(gfx::Rect(100, 100, 600, kRootHeight - 200), HTTOP);
1831 EXPECT_EQ(gfx::Rect(100, 100, 600, kRootHeight - 200).ToString(), 1817 EXPECT_EQ(gfx::Rect(100, 100, 600, kRootHeight - 200).ToString(),
1832 touch_resize_window_->bounds().ToString()); 1818 touch_resize_window_->bounds().ToString());
1833 1819
1834 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), 1820 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(),
1835 touch_resize_window_.get()); 1821 touch_resize_window_.get());
1836 1822
1837 // Drag out of the top border a bit and check if the border is aligned with 1823 // Drag out of the top border a bit and check if the border is aligned with
1838 // the touch point. 1824 // the touch point.
1839 generator.GestureScrollSequence(gfx::Point(400, 85), 1825 generator.GestureScrollSequence(gfx::Point(400, 85), gfx::Point(400, 75),
1840 gfx::Point(400, 75), 1826 base::TimeDelta::FromMilliseconds(10), 5);
1841 base::TimeDelta::FromMilliseconds(10),
1842 5);
1843 EXPECT_EQ(gfx::Rect(100, 75, 600, kRootHeight - 175).ToString(), 1827 EXPECT_EQ(gfx::Rect(100, 75, 600, kRootHeight - 175).ToString(),
1844 touch_resize_window_->bounds().ToString()); 1828 touch_resize_window_->bounds().ToString());
1845 // Drag more, but stop before being snapped to the edge. 1829 // Drag more, but stop before being snapped to the edge.
1846 generator.GestureScrollSequence(gfx::Point(400, 75), 1830 generator.GestureScrollSequence(gfx::Point(400, 75), gfx::Point(400, 40),
1847 gfx::Point(400, 40), 1831 base::TimeDelta::FromMilliseconds(10), 5);
1848 base::TimeDelta::FromMilliseconds(10),
1849 5);
1850 EXPECT_EQ(gfx::Rect(100, 40, 600, kRootHeight - 140).ToString(), 1832 EXPECT_EQ(gfx::Rect(100, 40, 600, kRootHeight - 140).ToString(),
1851 touch_resize_window_->bounds().ToString()); 1833 touch_resize_window_->bounds().ToString());
1852 // Drag even more to snap to the edge. 1834 // Drag even more to snap to the edge.
1853 generator.GestureScrollSequence(gfx::Point(400, 40), 1835 generator.GestureScrollSequence(gfx::Point(400, 40), gfx::Point(400, 25),
1854 gfx::Point(400, 25), 1836 base::TimeDelta::FromMilliseconds(10), 5);
1855 base::TimeDelta::FromMilliseconds(10),
1856 5);
1857 EXPECT_EQ(gfx::Rect(100, 0, 600, kRootHeight - 100).ToString(), 1837 EXPECT_EQ(gfx::Rect(100, 0, 600, kRootHeight - 100).ToString(),
1858 touch_resize_window_->bounds().ToString()); 1838 touch_resize_window_->bounds().ToString());
1859 } 1839 }
1860 1840
1861 TEST_F(WorkspaceWindowResizerTest, TouchResizeToEdge_BOTTOM) { 1841 TEST_F(WorkspaceWindowResizerTest, TouchResizeToEdge_BOTTOM) {
1862 GetShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN); 1842 GetShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN);
1863 1843
1864 InitTouchResizeWindow(gfx::Rect(100, 100, 600, kRootHeight - 200), HTBOTTOM); 1844 InitTouchResizeWindow(gfx::Rect(100, 100, 600, kRootHeight - 200), HTBOTTOM);
1865 EXPECT_EQ(gfx::Rect(100, 100, 600, kRootHeight - 200).ToString(), 1845 EXPECT_EQ(gfx::Rect(100, 100, 600, kRootHeight - 200).ToString(),
1866 touch_resize_window_->bounds().ToString()); 1846 touch_resize_window_->bounds().ToString());
1867 1847
1868 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), 1848 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(),
1869 touch_resize_window_.get()); 1849 touch_resize_window_.get());
1870 1850
1871 // Drag out of the bottom border a bit and check if the border is aligned with 1851 // Drag out of the bottom border a bit and check if the border is aligned with
1872 // the touch point. 1852 // the touch point.
1873 generator.GestureScrollSequence(gfx::Point(400, kRootHeight - 85), 1853 generator.GestureScrollSequence(gfx::Point(400, kRootHeight - 85),
1874 gfx::Point(400, kRootHeight - 75), 1854 gfx::Point(400, kRootHeight - 75),
1875 base::TimeDelta::FromMilliseconds(10), 1855 base::TimeDelta::FromMilliseconds(10), 5);
1876 5);
1877 EXPECT_EQ(gfx::Rect(100, 100, 600, kRootHeight - 175).ToString(), 1856 EXPECT_EQ(gfx::Rect(100, 100, 600, kRootHeight - 175).ToString(),
1878 touch_resize_window_->bounds().ToString()); 1857 touch_resize_window_->bounds().ToString());
1879 // Drag more, but stop before being snapped to the edge. 1858 // Drag more, but stop before being snapped to the edge.
1880 generator.GestureScrollSequence(gfx::Point(400, kRootHeight - 75), 1859 generator.GestureScrollSequence(gfx::Point(400, kRootHeight - 75),
1881 gfx::Point(400, kRootHeight - 40), 1860 gfx::Point(400, kRootHeight - 40),
1882 base::TimeDelta::FromMilliseconds(10), 1861 base::TimeDelta::FromMilliseconds(10), 5);
1883 5);
1884 EXPECT_EQ(gfx::Rect(100, 100, 600, kRootHeight - 140).ToString(), 1862 EXPECT_EQ(gfx::Rect(100, 100, 600, kRootHeight - 140).ToString(),
1885 touch_resize_window_->bounds().ToString()); 1863 touch_resize_window_->bounds().ToString());
1886 // Drag even more to snap to the edge. 1864 // Drag even more to snap to the edge.
1887 generator.GestureScrollSequence(gfx::Point(400, kRootHeight - 40), 1865 generator.GestureScrollSequence(gfx::Point(400, kRootHeight - 40),
1888 gfx::Point(400, kRootHeight - 25), 1866 gfx::Point(400, kRootHeight - 25),
1889 base::TimeDelta::FromMilliseconds(10), 1867 base::TimeDelta::FromMilliseconds(10), 5);
1890 5);
1891 EXPECT_EQ(gfx::Rect(100, 100, 600, kRootHeight - 100).ToString(), 1868 EXPECT_EQ(gfx::Rect(100, 100, 600, kRootHeight - 100).ToString(),
1892 touch_resize_window_->bounds().ToString()); 1869 touch_resize_window_->bounds().ToString());
1893 } 1870 }
1894 1871
1895 } // namespace ash 1872 } // namespace ash
OLDNEW
« no previous file with comments | « ash/wm/workspace/workspace_layout_manager_unittest.cc ('k') | ash/wm/workspace_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698