OLD | NEW |
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 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 if (!SupportsMultipleDisplays()) | 149 if (!SupportsMultipleDisplays()) |
150 return; | 150 return; |
151 | 151 |
152 // The secondary display is logically on the right, but on the system (e.g. X) | 152 // The secondary display is logically on the right, but on the system (e.g. X) |
153 // layer, it's below the primary one. See UpdateDisplay() in ash_test_base.cc. | 153 // layer, it's below the primary one. See UpdateDisplay() in ash_test_base.cc. |
154 UpdateDisplay("800x600,400x300"); | 154 UpdateDisplay("800x600,400x300"); |
155 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 155 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
156 ASSERT_EQ(2U, root_windows.size()); | 156 ASSERT_EQ(2U, root_windows.size()); |
157 | 157 |
158 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), | 158 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), |
159 Shell::GetScreen()->GetPrimaryDisplay()); | 159 gfx::Screen::GetScreen()->GetPrimaryDisplay()); |
160 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); | 160 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); |
161 { | 161 { |
162 // Grab (0, 0) of the window. | 162 // Grab (0, 0) of the window. |
163 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( | 163 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( |
164 window_.get(), gfx::Point(), HTCAPTION)); | 164 window_.get(), gfx::Point(), HTCAPTION)); |
165 ASSERT_TRUE(resizer.get()); | 165 ASSERT_TRUE(resizer.get()); |
166 // Drag the pointer to the right. Once it reaches the right edge of the | 166 // Drag the pointer to the right. Once it reaches the right edge of the |
167 // primary display, it warps to the secondary. | 167 // primary display, it warps to the secondary. |
168 resizer->Drag(CalculateDragPoint(*resizer, 800, 10), 0); | 168 resizer->Drag(CalculateDragPoint(*resizer, 800, 10), 0); |
169 resizer->CompleteDrag(); | 169 resizer->CompleteDrag(); |
170 // The whole window is on the secondary display now. The parent should be | 170 // The whole window is on the secondary display now. The parent should be |
171 // changed. | 171 // changed. |
172 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); | 172 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); |
173 EXPECT_EQ("0,10 50x60", window_->bounds().ToString()); | 173 EXPECT_EQ("0,10 50x60", window_->bounds().ToString()); |
174 } | 174 } |
175 | 175 |
176 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), | 176 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), |
177 Shell::GetScreen()->GetPrimaryDisplay()); | 177 gfx::Screen::GetScreen()->GetPrimaryDisplay()); |
178 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); | 178 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); |
179 { | 179 { |
180 // Grab (0, 0) of the window and move the pointer to (775, 10). | 180 // Grab (0, 0) of the window and move the pointer to (775, 10). |
181 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( | 181 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( |
182 window_.get(), gfx::Point(), HTCAPTION)); | 182 window_.get(), gfx::Point(), HTCAPTION)); |
183 ASSERT_TRUE(resizer.get()); | 183 ASSERT_TRUE(resizer.get()); |
184 resizer->Drag(CalculateDragPoint(*resizer, 795, 10), 0); | 184 resizer->Drag(CalculateDragPoint(*resizer, 795, 10), 0); |
185 // Window should be adjusted for minimum visibility (25px) during the drag. | 185 // Window should be adjusted for minimum visibility (25px) during the drag. |
186 EXPECT_EQ("775,10 50x60", window_->bounds().ToString()); | 186 EXPECT_EQ("775,10 50x60", window_->bounds().ToString()); |
187 resizer->CompleteDrag(); | 187 resizer->CompleteDrag(); |
188 // Since the pointer is still on the primary root window, the parent should | 188 // Since the pointer is still on the primary root window, the parent should |
189 // not be changed. | 189 // not be changed. |
190 // Window origin should be adjusted for minimum visibility (25px). | 190 // Window origin should be adjusted for minimum visibility (25px). |
191 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); | 191 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); |
192 EXPECT_EQ("775,10 50x60", window_->bounds().ToString()); | 192 EXPECT_EQ("775,10 50x60", window_->bounds().ToString()); |
193 } | 193 } |
194 | 194 |
195 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), | 195 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), |
196 Shell::GetScreen()->GetPrimaryDisplay()); | 196 gfx::Screen::GetScreen()->GetPrimaryDisplay()); |
197 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); | 197 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); |
198 { | 198 { |
199 // Grab the top-right edge of the window and move the pointer to (0, 10) | 199 // Grab the top-right edge of the window and move the pointer to (0, 10) |
200 // in the secondary root window's coordinates. | 200 // in the secondary root window's coordinates. |
201 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( | 201 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( |
202 window_.get(), gfx::Point(49, 0), HTCAPTION)); | 202 window_.get(), gfx::Point(49, 0), HTCAPTION)); |
203 ASSERT_TRUE(resizer.get()); | 203 ASSERT_TRUE(resizer.get()); |
204 resizer->Drag(CalculateDragPoint(*resizer, 751, 10), ui::EF_CONTROL_DOWN); | 204 resizer->Drag(CalculateDragPoint(*resizer, 751, 10), ui::EF_CONTROL_DOWN); |
205 resizer->CompleteDrag(); | 205 resizer->CompleteDrag(); |
206 // Since the pointer is on the secondary, the parent should be changed | 206 // Since the pointer is on the secondary, the parent should be changed |
207 // even though only small fraction of the window is within the secondary | 207 // even though only small fraction of the window is within the secondary |
208 // root window's bounds. | 208 // root window's bounds. |
209 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); | 209 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); |
210 // Window origin should be adjusted for minimum visibility (25px). | 210 // Window origin should be adjusted for minimum visibility (25px). |
211 int expected_x = -50 + kMinimumOnScreenArea; | 211 int expected_x = -50 + kMinimumOnScreenArea; |
212 | 212 |
213 EXPECT_EQ(base::IntToString(expected_x) + ",10 50x60", | 213 EXPECT_EQ(base::IntToString(expected_x) + ",10 50x60", |
214 window_->bounds().ToString()); | 214 window_->bounds().ToString()); |
215 } | 215 } |
216 // Dropping a window that is larger than the destination work area | 216 // Dropping a window that is larger than the destination work area |
217 // will shrink to fit to the work area. | 217 // will shrink to fit to the work area. |
218 window_->SetBoundsInScreen(gfx::Rect(0, 0, 700, 500), | 218 window_->SetBoundsInScreen(gfx::Rect(0, 0, 700, 500), |
219 Shell::GetScreen()->GetPrimaryDisplay()); | 219 gfx::Screen::GetScreen()->GetPrimaryDisplay()); |
220 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); | 220 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); |
221 { | 221 { |
222 // Grab the top-right edge of the window and move the pointer to (0, 10) | 222 // Grab the top-right edge of the window and move the pointer to (0, 10) |
223 // in the secondary root window's coordinates. | 223 // in the secondary root window's coordinates. |
224 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( | 224 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( |
225 window_.get(), gfx::Point(699, 0), HTCAPTION)); | 225 window_.get(), gfx::Point(699, 0), HTCAPTION)); |
226 ASSERT_TRUE(resizer.get()); | 226 ASSERT_TRUE(resizer.get()); |
227 resizer->Drag(CalculateDragPoint(*resizer, 101, 10), ui::EF_CONTROL_DOWN); | 227 resizer->Drag(CalculateDragPoint(*resizer, 101, 10), ui::EF_CONTROL_DOWN); |
228 resizer->CompleteDrag(); | 228 resizer->CompleteDrag(); |
229 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); | 229 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); |
230 // Window size should be adjusted to fit to the work area | 230 // Window size should be adjusted to fit to the work area |
231 EXPECT_EQ("400x253", window_->bounds().size().ToString()); | 231 EXPECT_EQ("400x253", window_->bounds().size().ToString()); |
232 gfx::Rect window_bounds_in_screen = window_->GetBoundsInScreen(); | 232 gfx::Rect window_bounds_in_screen = window_->GetBoundsInScreen(); |
233 gfx::Rect intersect(window_->GetRootWindow()->GetBoundsInScreen()); | 233 gfx::Rect intersect(window_->GetRootWindow()->GetBoundsInScreen()); |
234 intersect.Intersect(window_bounds_in_screen); | 234 intersect.Intersect(window_bounds_in_screen); |
235 | 235 |
236 EXPECT_LE(10, intersect.width()); | 236 EXPECT_LE(10, intersect.width()); |
237 EXPECT_LE(10, intersect.height()); | 237 EXPECT_LE(10, intersect.height()); |
238 EXPECT_TRUE(window_bounds_in_screen.Contains(gfx::Point(800, 10))); | 238 EXPECT_TRUE(window_bounds_in_screen.Contains(gfx::Point(800, 10))); |
239 } | 239 } |
240 | 240 |
241 // Dropping a window that is larger than the destination work area | 241 // Dropping a window that is larger than the destination work area |
242 // will shrink to fit to the work area. | 242 // will shrink to fit to the work area. |
243 window_->SetBoundsInScreen(gfx::Rect(0, 0, 700, 500), | 243 window_->SetBoundsInScreen(gfx::Rect(0, 0, 700, 500), |
244 Shell::GetScreen()->GetPrimaryDisplay()); | 244 gfx::Screen::GetScreen()->GetPrimaryDisplay()); |
245 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); | 245 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); |
246 { | 246 { |
247 // Grab the top-left edge of the window and move the pointer to (150, 10) | 247 // Grab the top-left edge of the window and move the pointer to (150, 10) |
248 // in the secondary root window's coordinates. Make sure the window is | 248 // in the secondary root window's coordinates. Make sure the window is |
249 // shrink in such a way that it keeps the cursor within. | 249 // shrink in such a way that it keeps the cursor within. |
250 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( | 250 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( |
251 window_.get(), gfx::Point(0, 0), HTCAPTION)); | 251 window_.get(), gfx::Point(0, 0), HTCAPTION)); |
252 ASSERT_TRUE(resizer.get()); | 252 ASSERT_TRUE(resizer.get()); |
253 resizer->Drag(CalculateDragPoint(*resizer, 799, 10), ui::EF_CONTROL_DOWN); | 253 resizer->Drag(CalculateDragPoint(*resizer, 799, 10), ui::EF_CONTROL_DOWN); |
254 resizer->Drag(CalculateDragPoint(*resizer, 850, 10), ui::EF_CONTROL_DOWN); | 254 resizer->Drag(CalculateDragPoint(*resizer, 850, 10), ui::EF_CONTROL_DOWN); |
(...skipping 21 matching lines...) Expand all Loading... |
276 UpdateDisplay("800x600,800x600"); | 276 UpdateDisplay("800x600,800x600"); |
277 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 277 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
278 ASSERT_EQ(2U, root_windows.size()); | 278 ASSERT_EQ(2U, root_windows.size()); |
279 | 279 |
280 aura::test::TestWindowDelegate delegate; | 280 aura::test::TestWindowDelegate delegate; |
281 scoped_ptr<aura::Window> window(new aura::Window(&delegate)); | 281 scoped_ptr<aura::Window> window(new aura::Window(&delegate)); |
282 window->SetType(ui::wm::WINDOW_TYPE_NORMAL); | 282 window->SetType(ui::wm::WINDOW_TYPE_NORMAL); |
283 window->Init(ui::LAYER_TEXTURED); | 283 window->Init(ui::LAYER_TEXTURED); |
284 ParentWindowInPrimaryRootWindow(window.get()); | 284 ParentWindowInPrimaryRootWindow(window.get()); |
285 window->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), | 285 window->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), |
286 Shell::GetScreen()->GetPrimaryDisplay()); | 286 gfx::Screen::GetScreen()->GetPrimaryDisplay()); |
287 window->Show(); | 287 window->Show(); |
288 EXPECT_TRUE(ash::wm::CanActivateWindow(window.get())); | 288 EXPECT_TRUE(ash::wm::CanActivateWindow(window.get())); |
289 ash::wm::ActivateWindow(window.get()); | 289 ash::wm::ActivateWindow(window.get()); |
290 EXPECT_EQ(root_windows[0], window->GetRootWindow()); | 290 EXPECT_EQ(root_windows[0], window->GetRootWindow()); |
291 EXPECT_EQ(root_windows[0], ash::Shell::GetTargetRootWindow()); | 291 EXPECT_EQ(root_windows[0], ash::Shell::GetTargetRootWindow()); |
292 { | 292 { |
293 // Grab (0, 0) of the window. | 293 // Grab (0, 0) of the window. |
294 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( | 294 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( |
295 window.get(), gfx::Point(), HTCAPTION)); | 295 window.get(), gfx::Point(), HTCAPTION)); |
296 ASSERT_TRUE(resizer.get()); | 296 ASSERT_TRUE(resizer.get()); |
(...skipping 12 matching lines...) Expand all Loading... |
309 TEST_F(DragWindowResizerTest, WindowDragWithMultiDisplaysRightToLeft) { | 309 TEST_F(DragWindowResizerTest, WindowDragWithMultiDisplaysRightToLeft) { |
310 if (!SupportsMultipleDisplays()) | 310 if (!SupportsMultipleDisplays()) |
311 return; | 311 return; |
312 | 312 |
313 UpdateDisplay("800x600,800x600"); | 313 UpdateDisplay("800x600,800x600"); |
314 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 314 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
315 ASSERT_EQ(2U, root_windows.size()); | 315 ASSERT_EQ(2U, root_windows.size()); |
316 | 316 |
317 window_->SetBoundsInScreen( | 317 window_->SetBoundsInScreen( |
318 gfx::Rect(800, 00, 50, 60), | 318 gfx::Rect(800, 00, 50, 60), |
319 Shell::GetScreen()->GetDisplayNearestWindow(root_windows[1])); | 319 gfx::Screen::GetScreen()->GetDisplayNearestWindow(root_windows[1])); |
320 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); | 320 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); |
321 { | 321 { |
322 // Grab (0, 0) of the window. | 322 // Grab (0, 0) of the window. |
323 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( | 323 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( |
324 window_.get(), gfx::Point(), HTCAPTION)); | 324 window_.get(), gfx::Point(), HTCAPTION)); |
325 ASSERT_TRUE(resizer.get()); | 325 ASSERT_TRUE(resizer.get()); |
326 // Move the mouse near the right edge, (798, 0), of the primary display. | 326 // Move the mouse near the right edge, (798, 0), of the primary display. |
327 resizer->Drag(CalculateDragPoint(*resizer, -2, 0), ui::EF_CONTROL_DOWN); | 327 resizer->Drag(CalculateDragPoint(*resizer, -2, 0), ui::EF_CONTROL_DOWN); |
328 resizer->CompleteDrag(); | 328 resizer->CompleteDrag(); |
329 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); | 329 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); |
330 // Window origin should be adjusted for minimum visibility (25px). | 330 // Window origin should be adjusted for minimum visibility (25px). |
331 EXPECT_EQ("775,0 50x60", window_->bounds().ToString()); | 331 EXPECT_EQ("775,0 50x60", window_->bounds().ToString()); |
332 } | 332 } |
333 } | 333 } |
334 | 334 |
335 // Verifies the drag window is shown correctly. | 335 // Verifies the drag window is shown correctly. |
336 TEST_F(DragWindowResizerTest, DragWindowController) { | 336 TEST_F(DragWindowResizerTest, DragWindowController) { |
337 if (!SupportsMultipleDisplays()) | 337 if (!SupportsMultipleDisplays()) |
338 return; | 338 return; |
339 | 339 |
340 UpdateDisplay("800x600,800x600"); | 340 UpdateDisplay("800x600,800x600"); |
341 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 341 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
342 ASSERT_EQ(2U, root_windows.size()); | 342 ASSERT_EQ(2U, root_windows.size()); |
343 | 343 |
344 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), | 344 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), |
345 Shell::GetScreen()->GetPrimaryDisplay()); | 345 gfx::Screen::GetScreen()->GetPrimaryDisplay()); |
346 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); | 346 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); |
347 EXPECT_FLOAT_EQ(1.0f, window_->layer()->opacity()); | 347 EXPECT_FLOAT_EQ(1.0f, window_->layer()->opacity()); |
348 { | 348 { |
349 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( | 349 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( |
350 window_.get(), gfx::Point(), HTCAPTION)); | 350 window_.get(), gfx::Point(), HTCAPTION)); |
351 ASSERT_TRUE(resizer.get()); | 351 ASSERT_TRUE(resizer.get()); |
352 DragWindowResizer* drag_resizer = DragWindowResizer::instance_; | 352 DragWindowResizer* drag_resizer = DragWindowResizer::instance_; |
353 ASSERT_TRUE(drag_resizer); | 353 ASSERT_TRUE(drag_resizer); |
354 EXPECT_EQ(0u, drag_resizer->drag_window_controllers_.size()); | 354 EXPECT_EQ(0u, drag_resizer->drag_window_controllers_.size()); |
355 | 355 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
389 EXPECT_GT(1.0f, window_->layer()->opacity()); | 389 EXPECT_GT(1.0f, window_->layer()->opacity()); |
390 EXPECT_FLOAT_EQ(1.0f, drag_layer->opacity()); | 390 EXPECT_FLOAT_EQ(1.0f, drag_layer->opacity()); |
391 | 391 |
392 resizer->CompleteDrag(); | 392 resizer->CompleteDrag(); |
393 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); | 393 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); |
394 EXPECT_FLOAT_EQ(1.0f, window_->layer()->opacity()); | 394 EXPECT_FLOAT_EQ(1.0f, window_->layer()->opacity()); |
395 } | 395 } |
396 | 396 |
397 // Do the same test with RevertDrag(). | 397 // Do the same test with RevertDrag(). |
398 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), | 398 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), |
399 Shell::GetScreen()->GetPrimaryDisplay()); | 399 gfx::Screen::GetScreen()->GetPrimaryDisplay()); |
400 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); | 400 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); |
401 EXPECT_FLOAT_EQ(1.0f, window_->layer()->opacity()); | 401 EXPECT_FLOAT_EQ(1.0f, window_->layer()->opacity()); |
402 { | 402 { |
403 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( | 403 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( |
404 window_.get(), gfx::Point(), HTCAPTION)); | 404 window_.get(), gfx::Point(), HTCAPTION)); |
405 ASSERT_TRUE(resizer.get()); | 405 ASSERT_TRUE(resizer.get()); |
406 DragWindowResizer* drag_resizer = DragWindowResizer::instance_; | 406 DragWindowResizer* drag_resizer = DragWindowResizer::instance_; |
407 ASSERT_TRUE(drag_resizer); | 407 ASSERT_TRUE(drag_resizer); |
408 EXPECT_EQ(0u, drag_resizer->drag_window_controllers_.size()); | 408 EXPECT_EQ(0u, drag_resizer->drag_window_controllers_.size()); |
409 | 409 |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
469 UpdateDisplay("400x400,800x800*2"); | 469 UpdateDisplay("400x400,800x800*2"); |
470 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 470 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
471 ASSERT_EQ(2U, root_windows.size()); | 471 ASSERT_EQ(2U, root_windows.size()); |
472 | 472 |
473 test::CursorManagerTestApi cursor_test_api( | 473 test::CursorManagerTestApi cursor_test_api( |
474 Shell::GetInstance()->cursor_manager()); | 474 Shell::GetInstance()->cursor_manager()); |
475 // Move window from the root window with 1.0 device scale factor to the root | 475 // Move window from the root window with 1.0 device scale factor to the root |
476 // window with 2.0 device scale factor. | 476 // window with 2.0 device scale factor. |
477 { | 477 { |
478 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), | 478 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), |
479 Shell::GetScreen()->GetPrimaryDisplay()); | 479 gfx::Screen::GetScreen()->GetPrimaryDisplay()); |
480 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); | 480 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); |
481 // Grab (0, 0) of the window. | 481 // Grab (0, 0) of the window. |
482 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( | 482 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( |
483 window_.get(), gfx::Point(), HTCAPTION)); | 483 window_.get(), gfx::Point(), HTCAPTION)); |
484 EXPECT_EQ(1.0f, cursor_test_api.GetCurrentCursor().device_scale_factor()); | 484 EXPECT_EQ(1.0f, cursor_test_api.GetCurrentCursor().device_scale_factor()); |
485 ASSERT_TRUE(resizer.get()); | 485 ASSERT_TRUE(resizer.get()); |
486 resizer->Drag(CalculateDragPoint(*resizer, 399, 200), 0); | 486 resizer->Drag(CalculateDragPoint(*resizer, 399, 200), 0); |
487 TestIfMouseWarpsAt(gfx::Point(399, 200)); | 487 TestIfMouseWarpsAt(gfx::Point(399, 200)); |
488 EXPECT_EQ(2.0f, cursor_test_api.GetCurrentCursor().device_scale_factor()); | 488 EXPECT_EQ(2.0f, cursor_test_api.GetCurrentCursor().device_scale_factor()); |
489 resizer->CompleteDrag(); | 489 resizer->CompleteDrag(); |
490 EXPECT_EQ(2.0f, cursor_test_api.GetCurrentCursor().device_scale_factor()); | 490 EXPECT_EQ(2.0f, cursor_test_api.GetCurrentCursor().device_scale_factor()); |
491 } | 491 } |
492 | 492 |
493 // Move window from the root window with 2.0 device scale factor to the root | 493 // Move window from the root window with 2.0 device scale factor to the root |
494 // window with 1.0 device scale factor. | 494 // window with 1.0 device scale factor. |
495 { | 495 { |
496 // Make sure the window is on the default container first. | 496 // Make sure the window is on the default container first. |
497 aura::Window* default_container = | 497 aura::Window* default_container = |
498 GetRootWindowController(root_windows[1]) | 498 GetRootWindowController(root_windows[1]) |
499 ->GetContainer(kShellWindowId_DefaultContainer); | 499 ->GetContainer(kShellWindowId_DefaultContainer); |
500 default_container->AddChild(window_.get()); | 500 default_container->AddChild(window_.get()); |
501 window_->SetBoundsInScreen( | 501 window_->SetBoundsInScreen( |
502 gfx::Rect(600, 0, 50, 60), | 502 gfx::Rect(600, 0, 50, 60), |
503 Shell::GetScreen()->GetDisplayNearestWindow(root_windows[1])); | 503 gfx::Screen::GetScreen()->GetDisplayNearestWindow(root_windows[1])); |
504 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); | 504 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); |
505 // Grab (0, 0) of the window. | 505 // Grab (0, 0) of the window. |
506 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( | 506 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( |
507 window_.get(), gfx::Point(), HTCAPTION)); | 507 window_.get(), gfx::Point(), HTCAPTION)); |
508 EXPECT_EQ(2.0f, cursor_test_api.GetCurrentCursor().device_scale_factor()); | 508 EXPECT_EQ(2.0f, cursor_test_api.GetCurrentCursor().device_scale_factor()); |
509 ASSERT_TRUE(resizer.get()); | 509 ASSERT_TRUE(resizer.get()); |
510 resizer->Drag(CalculateDragPoint(*resizer, -200, 200), 0); | 510 resizer->Drag(CalculateDragPoint(*resizer, -200, 200), 0); |
511 TestIfMouseWarpsAt(gfx::Point(400, 200)); | 511 TestIfMouseWarpsAt(gfx::Point(400, 200)); |
512 EXPECT_EQ(1.0f, cursor_test_api.GetCurrentCursor().device_scale_factor()); | 512 EXPECT_EQ(1.0f, cursor_test_api.GetCurrentCursor().device_scale_factor()); |
513 resizer->CompleteDrag(); | 513 resizer->CompleteDrag(); |
(...skipping 10 matching lines...) Expand all Loading... |
524 // layer, it's below the primary one. See UpdateDisplay() in ash_test_base.cc. | 524 // layer, it's below the primary one. See UpdateDisplay() in ash_test_base.cc. |
525 UpdateDisplay("400x400,400x400"); | 525 UpdateDisplay("400x400,400x400"); |
526 | 526 |
527 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 527 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
528 ASSERT_EQ(2U, root_windows.size()); | 528 ASSERT_EQ(2U, root_windows.size()); |
529 | 529 |
530 // Normal window can be moved across display. | 530 // Normal window can be moved across display. |
531 { | 531 { |
532 aura::Window* window = window_.get(); | 532 aura::Window* window = window_.get(); |
533 window->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), | 533 window->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), |
534 Shell::GetScreen()->GetPrimaryDisplay()); | 534 gfx::Screen::GetScreen()->GetPrimaryDisplay()); |
535 // Grab (0, 0) of the window. | 535 // Grab (0, 0) of the window. |
536 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( | 536 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( |
537 window, gfx::Point(), HTCAPTION)); | 537 window, gfx::Point(), HTCAPTION)); |
538 ASSERT_TRUE(resizer.get()); | 538 ASSERT_TRUE(resizer.get()); |
539 resizer->Drag(CalculateDragPoint(*resizer, 399, 200), 0); | 539 resizer->Drag(CalculateDragPoint(*resizer, 399, 200), 0); |
540 EXPECT_TRUE(TestIfMouseWarpsAt(gfx::Point(399, 200))); | 540 EXPECT_TRUE(TestIfMouseWarpsAt(gfx::Point(399, 200))); |
541 EXPECT_EQ("401,200", | 541 EXPECT_EQ("401,200", |
542 aura::Env::GetInstance()->last_mouse_location().ToString()); | 542 aura::Env::GetInstance()->last_mouse_location().ToString()); |
543 resizer->CompleteDrag(); | 543 resizer->CompleteDrag(); |
544 } | 544 } |
545 | 545 |
546 // Always on top window can be moved across display. | 546 // Always on top window can be moved across display. |
547 { | 547 { |
548 aura::Window* window = always_on_top_window_.get(); | 548 aura::Window* window = always_on_top_window_.get(); |
549 window->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), | 549 window->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), |
550 Shell::GetScreen()->GetPrimaryDisplay()); | 550 gfx::Screen::GetScreen()->GetPrimaryDisplay()); |
551 // Grab (0, 0) of the window. | 551 // Grab (0, 0) of the window. |
552 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( | 552 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( |
553 window, gfx::Point(), HTCAPTION)); | 553 window, gfx::Point(), HTCAPTION)); |
554 ASSERT_TRUE(resizer.get()); | 554 ASSERT_TRUE(resizer.get()); |
555 resizer->Drag(CalculateDragPoint(*resizer, 399, 200), 0); | 555 resizer->Drag(CalculateDragPoint(*resizer, 399, 200), 0); |
556 EXPECT_TRUE(TestIfMouseWarpsAt(gfx::Point(399, 200))); | 556 EXPECT_TRUE(TestIfMouseWarpsAt(gfx::Point(399, 200))); |
557 EXPECT_EQ("401,200", | 557 EXPECT_EQ("401,200", |
558 aura::Env::GetInstance()->last_mouse_location().ToString()); | 558 aura::Env::GetInstance()->last_mouse_location().ToString()); |
559 resizer->CompleteDrag(); | 559 resizer->CompleteDrag(); |
560 } | 560 } |
561 | 561 |
562 // System modal window can be moved across display. | 562 // System modal window can be moved across display. |
563 { | 563 { |
564 aura::Window* window = system_modal_window_.get(); | 564 aura::Window* window = system_modal_window_.get(); |
565 window->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), | 565 window->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), |
566 Shell::GetScreen()->GetPrimaryDisplay()); | 566 gfx::Screen::GetScreen()->GetPrimaryDisplay()); |
567 aura::Env::GetInstance()->set_last_mouse_location(gfx::Point(0, 0)); | 567 aura::Env::GetInstance()->set_last_mouse_location(gfx::Point(0, 0)); |
568 // Grab (0, 0) of the window. | 568 // Grab (0, 0) of the window. |
569 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( | 569 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( |
570 window, gfx::Point(), HTCAPTION)); | 570 window, gfx::Point(), HTCAPTION)); |
571 ASSERT_TRUE(resizer.get()); | 571 ASSERT_TRUE(resizer.get()); |
572 resizer->Drag(CalculateDragPoint(*resizer, 399, 200), 0); | 572 resizer->Drag(CalculateDragPoint(*resizer, 399, 200), 0); |
573 EXPECT_TRUE(TestIfMouseWarpsAt(gfx::Point(399, 200))); | 573 EXPECT_TRUE(TestIfMouseWarpsAt(gfx::Point(399, 200))); |
574 EXPECT_EQ("401,200", | 574 EXPECT_EQ("401,200", |
575 aura::Env::GetInstance()->last_mouse_location().ToString()); | 575 aura::Env::GetInstance()->last_mouse_location().ToString()); |
576 resizer->CompleteDrag(); | 576 resizer->CompleteDrag(); |
577 } | 577 } |
578 | 578 |
579 // Transient window cannot be moved across display. | 579 // Transient window cannot be moved across display. |
580 { | 580 { |
581 aura::Window* window = transient_child_; | 581 aura::Window* window = transient_child_; |
582 window->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), | 582 window->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), |
583 Shell::GetScreen()->GetPrimaryDisplay()); | 583 gfx::Screen::GetScreen()->GetPrimaryDisplay()); |
584 // Grab (0, 0) of the window. | 584 // Grab (0, 0) of the window. |
585 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( | 585 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( |
586 window, gfx::Point(), HTCAPTION)); | 586 window, gfx::Point(), HTCAPTION)); |
587 ASSERT_TRUE(resizer.get()); | 587 ASSERT_TRUE(resizer.get()); |
588 resizer->Drag(CalculateDragPoint(*resizer, 399, 200), 0); | 588 resizer->Drag(CalculateDragPoint(*resizer, 399, 200), 0); |
589 EXPECT_FALSE(TestIfMouseWarpsAt(gfx::Point(399, 200))); | 589 EXPECT_FALSE(TestIfMouseWarpsAt(gfx::Point(399, 200))); |
590 EXPECT_EQ("399,200", | 590 EXPECT_EQ("399,200", |
591 aura::Env::GetInstance()->last_mouse_location().ToString()); | 591 aura::Env::GetInstance()->last_mouse_location().ToString()); |
592 resizer->CompleteDrag(); | 592 resizer->CompleteDrag(); |
593 } | 593 } |
594 | 594 |
595 // The parent of transient window can be moved across display. | 595 // The parent of transient window can be moved across display. |
596 { | 596 { |
597 aura::Window* window = transient_parent_.get(); | 597 aura::Window* window = transient_parent_.get(); |
598 window->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), | 598 window->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), |
599 Shell::GetScreen()->GetPrimaryDisplay()); | 599 gfx::Screen::GetScreen()->GetPrimaryDisplay()); |
600 // Grab (0, 0) of the window. | 600 // Grab (0, 0) of the window. |
601 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( | 601 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( |
602 window, gfx::Point(), HTCAPTION)); | 602 window, gfx::Point(), HTCAPTION)); |
603 ASSERT_TRUE(resizer.get()); | 603 ASSERT_TRUE(resizer.get()); |
604 resizer->Drag(CalculateDragPoint(*resizer, 399, 200), 0); | 604 resizer->Drag(CalculateDragPoint(*resizer, 399, 200), 0); |
605 EXPECT_TRUE(TestIfMouseWarpsAt(gfx::Point(399, 200))); | 605 EXPECT_TRUE(TestIfMouseWarpsAt(gfx::Point(399, 200))); |
606 EXPECT_EQ("401,200", | 606 EXPECT_EQ("401,200", |
607 aura::Env::GetInstance()->last_mouse_location().ToString()); | 607 aura::Env::GetInstance()->last_mouse_location().ToString()); |
608 resizer->CompleteDrag(); | 608 resizer->CompleteDrag(); |
609 } | 609 } |
610 | 610 |
611 // Panel window can be moved across display. | 611 // Panel window can be moved across display. |
612 { | 612 { |
613 aura::Window* window = panel_window_.get(); | 613 aura::Window* window = panel_window_.get(); |
614 window->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), | 614 window->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), |
615 Shell::GetScreen()->GetPrimaryDisplay()); | 615 gfx::Screen::GetScreen()->GetPrimaryDisplay()); |
616 // Grab (0, 0) of the window. | 616 // Grab (0, 0) of the window. |
617 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( | 617 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( |
618 window, gfx::Point(), HTCAPTION)); | 618 window, gfx::Point(), HTCAPTION)); |
619 ASSERT_TRUE(resizer.get()); | 619 ASSERT_TRUE(resizer.get()); |
620 resizer->Drag(CalculateDragPoint(*resizer, 399, 200), 0); | 620 resizer->Drag(CalculateDragPoint(*resizer, 399, 200), 0); |
621 EXPECT_TRUE(TestIfMouseWarpsAt(gfx::Point(399, 200))); | 621 EXPECT_TRUE(TestIfMouseWarpsAt(gfx::Point(399, 200))); |
622 EXPECT_EQ("401,200", | 622 EXPECT_EQ("401,200", |
623 aura::Env::GetInstance()->last_mouse_location().ToString()); | 623 aura::Env::GetInstance()->last_mouse_location().ToString()); |
624 resizer->CompleteDrag(); | 624 resizer->CompleteDrag(); |
625 } | 625 } |
626 } | 626 } |
627 | 627 |
628 } // namespace ash | 628 } // namespace ash |
OLD | NEW |