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

Side by Side Diff: ash/wm/drag_window_resizer_unittest.cc

Issue 55363004: Enables docked windows by default (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Enables docked windows by default Created 7 years, 1 month 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
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/wm/drag_window_resizer.h" 5 #include "ash/wm/drag_window_resizer.h"
6 6
7 #include "ash/display/mouse_cursor_event_filter.h" 7 #include "ash/display/mouse_cursor_event_filter.h"
8 #include "ash/root_window_controller.h" 8 #include "ash/root_window_controller.h"
9 #include "ash/shelf/shelf_layout_manager.h" 9 #include "ash/shelf/shelf_layout_manager.h"
10 #include "ash/shell.h" 10 #include "ash/shell.h"
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 TEST_F(DragWindowResizerTest, WindowDragWithMultiDisplays) { 158 TEST_F(DragWindowResizerTest, WindowDragWithMultiDisplays) {
159 if (!SupportsMultipleDisplays()) 159 if (!SupportsMultipleDisplays())
160 return; 160 return;
161 161
162 // The secondary display is logically on the right, but on the system (e.g. X) 162 // The secondary display is logically on the right, but on the system (e.g. X)
163 // layer, it's below the primary one. See UpdateDisplay() in ash_test_base.cc. 163 // layer, it's below the primary one. See UpdateDisplay() in ash_test_base.cc.
164 UpdateDisplay("800x600,800x600"); 164 UpdateDisplay("800x600,800x600");
165 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); 165 Shell::RootWindowList root_windows = Shell::GetAllRootWindows();
166 ASSERT_EQ(2U, root_windows.size()); 166 ASSERT_EQ(2U, root_windows.size());
167 167
168 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), 168 window_->SetBoundsInScreen(gfx::Rect(0, 0, 100, 60),
flackr 2013/11/01 16:52:28 Maybe add a comment w.r.t. why you need the bounds
varkha 2013/11/05 20:34:23 Moved to https://codereview.chromium.org/57963003/
169 Shell::GetScreen()->GetPrimaryDisplay()); 169 Shell::GetScreen()->GetPrimaryDisplay());
170 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); 170 EXPECT_EQ(root_windows[0], window_->GetRootWindow());
171 { 171 {
172 // Grab (0, 0) of the window. 172 // Grab (0, 0) of the window.
173 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( 173 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer(
174 window_.get(), gfx::Point(), HTCAPTION)); 174 window_.get(), gfx::Point(), HTCAPTION));
175 ASSERT_TRUE(resizer.get()); 175 ASSERT_TRUE(resizer.get());
176 // Drag the pointer to the right. Once it reaches the right edge of the 176 // Drag the pointer to the right. Once it reaches the right edge of the
177 // primary display, it warps to the secondary. 177 // primary display, it warps to the secondary.
178 resizer->Drag(CalculateDragPoint(*resizer, 800, 10), 0); 178 resizer->Drag(CalculateDragPoint(*resizer, 800, 10), 0);
179 resizer->CompleteDrag(0); 179 resizer->CompleteDrag(0);
180 // The whole window is on the secondary display now. The parent should be 180 // The whole window is on the secondary display now. The parent should be
181 // changed. 181 // changed.
182 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); 182 EXPECT_EQ(root_windows[1], window_->GetRootWindow());
183 EXPECT_EQ("0,10 50x60", window_->bounds().ToString()); 183 EXPECT_EQ("0,10 100x60", window_->bounds().ToString());
184 } 184 }
185 185
186 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), 186 window_->SetBoundsInScreen(gfx::Rect(0, 0, 100, 60),
187 Shell::GetScreen()->GetPrimaryDisplay()); 187 Shell::GetScreen()->GetPrimaryDisplay());
188 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); 188 EXPECT_EQ(root_windows[0], window_->GetRootWindow());
189 { 189 {
190 // Grab (0, 0) of the window and move the pointer to (790, 10). 190 // Grab (0, 0) of the window and move the pointer to (790, 10).
191 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( 191 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer(
192 window_.get(), gfx::Point(), HTCAPTION)); 192 window_.get(), gfx::Point(), HTCAPTION));
193 ASSERT_TRUE(resizer.get()); 193 ASSERT_TRUE(resizer.get());
194 resizer->Drag(CalculateDragPoint(*resizer, 790, 10), 0); 194 resizer->Drag(CalculateDragPoint(*resizer, 768, 10), 0);
195 resizer->CompleteDrag(0); 195 resizer->CompleteDrag(0);
196 // Since the pointer is still on the primary root window, the parent should 196 // Since the pointer is still on the primary root window, the parent should
197 // not be changed. 197 // not be changed.
198 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); 198 EXPECT_EQ(root_windows[0], window_->GetRootWindow());
199 EXPECT_EQ("790,10 50x60", window_->bounds().ToString()); 199 EXPECT_EQ("768,10 100x60", window_->bounds().ToString());
200 } 200 }
201 201
202 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), 202 window_->SetBoundsInScreen(gfx::Rect(0, 0, 100, 60),
203 Shell::GetScreen()->GetPrimaryDisplay()); 203 Shell::GetScreen()->GetPrimaryDisplay());
204 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); 204 EXPECT_EQ(root_windows[0], window_->GetRootWindow());
205 { 205 {
206 // Grab the top-right edge of the window and move the pointer to (0, 10) 206 // Grab the top-right edge of the window and move the pointer to (0, 10)
207 // in the secondary root window's coordinates. 207 // in the secondary root window's coordinates.
208 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( 208 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer(
209 window_.get(), gfx::Point(49, 0), HTCAPTION)); 209 window_.get(), gfx::Point(99, 0), HTCAPTION));
210 ASSERT_TRUE(resizer.get()); 210 ASSERT_TRUE(resizer.get());
211 resizer->Drag(CalculateDragPoint(*resizer, 751, 10), ui::EF_CONTROL_DOWN); 211 resizer->Drag(CalculateDragPoint(*resizer, 731, 10), ui::EF_CONTROL_DOWN);
212 resizer->CompleteDrag(0); 212 resizer->CompleteDrag(0);
213 // Since the pointer is on the secondary, the parent should be changed 213 // Since the pointer is on the secondary, the parent should be changed
214 // even though only small fraction of the window is within the secondary 214 // even though only small fraction of the window is within the secondary
215 // root window's bounds. 215 // root window's bounds.
216 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); 216 EXPECT_EQ(root_windows[1], window_->GetRootWindow());
217 EXPECT_EQ("-49,10 50x60", window_->bounds().ToString()); 217 EXPECT_EQ("-69,10 100x60", window_->bounds().ToString());
218 } 218 }
219 } 219 }
220 220
221 // Verifies that dragging the active window to another display makes the new 221 // Verifies that dragging the active window to another display makes the new
222 // root window the active root window. 222 // root window the active root window.
223 TEST_F(DragWindowResizerTest, WindowDragWithMultiDisplaysActiveRoot) { 223 TEST_F(DragWindowResizerTest, WindowDragWithMultiDisplaysActiveRoot) {
224 if (!SupportsMultipleDisplays()) 224 if (!SupportsMultipleDisplays())
225 return; 225 return;
226 226
227 // The secondary display is logically on the right, but on the system (e.g. X) 227 // The secondary display is logically on the right, but on the system (e.g. X)
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); 273 EXPECT_EQ(root_windows[1], window_->GetRootWindow());
274 { 274 {
275 // Grab (0, 0) of the window. 275 // Grab (0, 0) of the window.
276 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( 276 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer(
277 window_.get(), gfx::Point(), HTCAPTION)); 277 window_.get(), gfx::Point(), HTCAPTION));
278 ASSERT_TRUE(resizer.get()); 278 ASSERT_TRUE(resizer.get());
279 // Move the mouse near the right edge, (798, 0), of the primary display. 279 // Move the mouse near the right edge, (798, 0), of the primary display.
280 resizer->Drag(CalculateDragPoint(*resizer, -2, 0), ui::EF_CONTROL_DOWN); 280 resizer->Drag(CalculateDragPoint(*resizer, -2, 0), ui::EF_CONTROL_DOWN);
281 resizer->CompleteDrag(0); 281 resizer->CompleteDrag(0);
282 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); 282 EXPECT_EQ(root_windows[0], window_->GetRootWindow());
283 EXPECT_EQ("798,0 50x60", window_->bounds().ToString()); 283 gfx::Rect expected_bounds = gfx::Rect(800 - 50 * 0.3, 0, 50, 60);
284 EXPECT_EQ(expected_bounds.ToString(), window_->bounds().ToString());
284 } 285 }
285 } 286 }
286 287
287 // Verifies the drag window is shown correctly. 288 // Verifies the drag window is shown correctly.
288 TEST_F(DragWindowResizerTest, DragWindowController) { 289 TEST_F(DragWindowResizerTest, DragWindowController) {
289 if (!SupportsMultipleDisplays()) 290 if (!SupportsMultipleDisplays())
290 return; 291 return;
291 292
292 UpdateDisplay("800x600,800x600"); 293 UpdateDisplay("800x600,800x600");
293 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); 294 Shell::RootWindowList root_windows = Shell::GetAllRootWindows();
294 ASSERT_EQ(2U, root_windows.size()); 295 ASSERT_EQ(2U, root_windows.size());
295 296
296 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), 297 window_->SetBoundsInScreen(gfx::Rect(0, 0, 100, 60),
297 Shell::GetScreen()->GetPrimaryDisplay()); 298 Shell::GetScreen()->GetPrimaryDisplay());
298 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); 299 EXPECT_EQ(root_windows[0], window_->GetRootWindow());
299 EXPECT_FLOAT_EQ(1.0f, window_->layer()->opacity()); 300 EXPECT_FLOAT_EQ(1.0f, window_->layer()->opacity());
300 { 301 {
301 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( 302 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer(
302 window_.get(), gfx::Point(), HTCAPTION)); 303 window_.get(), gfx::Point(), HTCAPTION));
303 ASSERT_TRUE(resizer.get()); 304 ASSERT_TRUE(resizer.get());
304 internal::DragWindowResizer* drag_resizer = DragWindowResizer::instance_; 305 internal::DragWindowResizer* drag_resizer = DragWindowResizer::instance_;
305 ASSERT_TRUE(drag_resizer); 306 ASSERT_TRUE(drag_resizer);
306 EXPECT_FALSE(drag_resizer->drag_window_controller_.get()); 307 EXPECT_FALSE(drag_resizer->drag_window_controller_.get());
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 // window with 2.0 device scale factor. 436 // window with 2.0 device scale factor.
436 { 437 {
437 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), 438 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60),
438 Shell::GetScreen()->GetPrimaryDisplay()); 439 Shell::GetScreen()->GetPrimaryDisplay());
439 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); 440 EXPECT_EQ(root_windows[0], window_->GetRootWindow());
440 // Grab (0, 0) of the window. 441 // Grab (0, 0) of the window.
441 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( 442 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer(
442 window_.get(), gfx::Point(), HTCAPTION)); 443 window_.get(), gfx::Point(), HTCAPTION));
443 EXPECT_EQ(1.0f, cursor_test_api.GetDisplay().device_scale_factor()); 444 EXPECT_EQ(1.0f, cursor_test_api.GetDisplay().device_scale_factor());
444 ASSERT_TRUE(resizer.get()); 445 ASSERT_TRUE(resizer.get());
445 resizer->Drag(CalculateDragPoint(*resizer, 399, 200), 0); 446 resizer->Drag(CalculateDragPoint(*resizer, 400, 200), 0);
446 WarpMouseCursorIfNecessary(root_windows[0], gfx::Point(399, 200)); 447 WarpMouseCursorIfNecessary(root_windows[0], gfx::Point(399, 200));
447 EXPECT_EQ(2.0f, cursor_test_api.GetDisplay().device_scale_factor()); 448 EXPECT_EQ(2.0f, cursor_test_api.GetDisplay().device_scale_factor());
448 resizer->CompleteDrag(0); 449 resizer->CompleteDrag(0);
449 EXPECT_EQ(2.0f, cursor_test_api.GetDisplay().device_scale_factor()); 450 EXPECT_EQ(2.0f, cursor_test_api.GetDisplay().device_scale_factor());
450 } 451 }
451 452
452 // Move window from the root window with 2.0 device scale factor to the root 453 // Move window from the root window with 2.0 device scale factor to the root
453 // window with 1.0 device scale factor. 454 // window with 1.0 device scale factor.
454 { 455 {
455 window_->SetBoundsInScreen( 456 window_->SetBoundsInScreen(
456 gfx::Rect(600, 0, 50, 60), 457 gfx::Rect(600, 0, 100, 60),
457 Shell::GetScreen()->GetDisplayNearestWindow(root_windows[1])); 458 Shell::GetScreen()->GetDisplayNearestWindow(root_windows[1]));
458 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); 459 EXPECT_EQ(root_windows[1], window_->GetRootWindow());
459 // Grab (0, 0) of the window. 460 // Grab (0, 0) of the window.
460 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( 461 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer(
461 window_.get(), gfx::Point(), HTCAPTION)); 462 window_.get(), gfx::Point(), HTCAPTION));
462 EXPECT_EQ(2.0f, cursor_test_api.GetDisplay().device_scale_factor()); 463 EXPECT_EQ(2.0f, cursor_test_api.GetDisplay().device_scale_factor());
463 ASSERT_TRUE(resizer.get()); 464 ASSERT_TRUE(resizer.get());
464 resizer->Drag(CalculateDragPoint(*resizer, -200, 200), 0); 465 resizer->Drag(CalculateDragPoint(*resizer, -200, 200), 0);
465 WarpMouseCursorIfNecessary(root_windows[1], gfx::Point(400, 200)); 466 WarpMouseCursorIfNecessary(root_windows[1], gfx::Point(400, 200));
466 EXPECT_EQ(1.0f, cursor_test_api.GetDisplay().device_scale_factor()); 467 EXPECT_EQ(1.0f, cursor_test_api.GetDisplay().device_scale_factor());
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
655 resizer->CompleteDrag(0); 656 resizer->CompleteDrag(0);
656 EXPECT_EQ(1, session_delegate->num_transfer_to_desktop_of_user_calls()); 657 EXPECT_EQ(1, session_delegate->num_transfer_to_desktop_of_user_calls());
657 EXPECT_NE(initial_bounds.ToString(), window->bounds().ToString()); 658 EXPECT_NE(initial_bounds.ToString(), window->bounds().ToString());
658 } 659 }
659 } 660 }
660 #endif 661 #endif
661 662
662 663
663 } // namespace internal 664 } // namespace internal
664 } // namespace ash 665 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698