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 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
350 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), | 350 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), |
351 Shell::GetScreen()->GetPrimaryDisplay()); | 351 Shell::GetScreen()->GetPrimaryDisplay()); |
352 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); | 352 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); |
353 EXPECT_FLOAT_EQ(1.0f, window_->layer()->opacity()); | 353 EXPECT_FLOAT_EQ(1.0f, window_->layer()->opacity()); |
354 { | 354 { |
355 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( | 355 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( |
356 window_.get(), gfx::Point(), HTCAPTION)); | 356 window_.get(), gfx::Point(), HTCAPTION)); |
357 ASSERT_TRUE(resizer.get()); | 357 ASSERT_TRUE(resizer.get()); |
358 DragWindowResizer* drag_resizer = DragWindowResizer::instance_; | 358 DragWindowResizer* drag_resizer = DragWindowResizer::instance_; |
359 ASSERT_TRUE(drag_resizer); | 359 ASSERT_TRUE(drag_resizer); |
360 EXPECT_FALSE(drag_resizer->drag_window_controller_.get()); | 360 EXPECT_EQ(0u, drag_resizer->drag_window_controllers_.size()); |
361 | 361 |
362 // The pointer is inside the primary root. The drag window controller | 362 // The pointer is inside the primary root. The drag window controller |
363 // should be NULL. | 363 // should be NULL. |
364 resizer->Drag(CalculateDragPoint(*resizer, 10, 10), 0); | 364 resizer->Drag(CalculateDragPoint(*resizer, 10, 10), 0); |
365 EXPECT_FALSE(drag_resizer->drag_window_controller_.get()); | 365 EXPECT_EQ(0u, drag_resizer->drag_window_controllers_.size()); |
366 | 366 |
367 // The window spans both root windows. | 367 // The window spans both root windows. |
368 resizer->Drag(CalculateDragPoint(*resizer, 798, 10), 0); | 368 resizer->Drag(CalculateDragPoint(*resizer, 798, 10), 0); |
| 369 EXPECT_EQ(1u, drag_resizer->drag_window_controllers_.size()); |
369 DragWindowController* controller = | 370 DragWindowController* controller = |
370 drag_resizer->drag_window_controller_.get(); | 371 drag_resizer->drag_window_controllers_[0]; |
371 ASSERT_TRUE(controller); | 372 ASSERT_TRUE(controller); |
372 | 373 |
373 ASSERT_TRUE(controller->drag_widget_); | 374 ASSERT_TRUE(controller->drag_widget_); |
374 ui::Layer* drag_layer = | 375 ui::Layer* drag_layer = |
375 controller->drag_widget_->GetNativeWindow()->layer(); | 376 controller->drag_widget_->GetNativeWindow()->layer(); |
376 ASSERT_TRUE(drag_layer); | 377 ASSERT_TRUE(drag_layer); |
377 // Check if |resizer->layer_| is properly set to the drag widget. | 378 // Check if |resizer->layer_| is properly set to the drag widget. |
378 const std::vector<ui::Layer*>& layers = drag_layer->children(); | 379 const std::vector<ui::Layer*>& layers = drag_layer->children(); |
379 EXPECT_FALSE(layers.empty()); | 380 EXPECT_FALSE(layers.empty()); |
380 EXPECT_EQ(controller->layer_owner_->root(), layers.back()); | 381 EXPECT_EQ(controller->layer_owner_->root(), layers.back()); |
381 | 382 |
382 // |window_| should be opaque since the pointer is still on the primary | 383 // |window_| should be opaque since the pointer is still on the primary |
383 // root window. The drag window should be semi-transparent. | 384 // root window. The drag window should be semi-transparent. |
384 EXPECT_FLOAT_EQ(1.0f, window_->layer()->opacity()); | 385 EXPECT_FLOAT_EQ(1.0f, window_->layer()->opacity()); |
385 ASSERT_TRUE(controller->drag_widget_); | 386 ASSERT_TRUE(controller->drag_widget_); |
386 EXPECT_GT(1.0f, drag_layer->opacity()); | 387 EXPECT_GT(1.0f, drag_layer->opacity()); |
387 | 388 |
388 // Enter the pointer to the secondary display. | 389 // Enter the pointer to the secondary display. |
389 resizer->Drag(CalculateDragPoint(*resizer, 800, 10), 0); | 390 resizer->Drag(CalculateDragPoint(*resizer, 800, 10), 0); |
390 controller = drag_resizer->drag_window_controller_.get(); | 391 EXPECT_EQ(1u, drag_resizer->drag_window_controllers_.size()); |
| 392 controller = drag_resizer->drag_window_controllers_[0]; |
391 ASSERT_TRUE(controller); | 393 ASSERT_TRUE(controller); |
392 // |window_| should be transparent, and the drag window should be opaque. | 394 // |window_| should be transparent, and the drag window should be opaque. |
393 EXPECT_GT(1.0f, window_->layer()->opacity()); | 395 EXPECT_GT(1.0f, window_->layer()->opacity()); |
394 EXPECT_FLOAT_EQ(1.0f, drag_layer->opacity()); | 396 EXPECT_FLOAT_EQ(1.0f, drag_layer->opacity()); |
395 | 397 |
396 resizer->CompleteDrag(); | 398 resizer->CompleteDrag(); |
397 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); | 399 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); |
398 EXPECT_FLOAT_EQ(1.0f, window_->layer()->opacity()); | 400 EXPECT_FLOAT_EQ(1.0f, window_->layer()->opacity()); |
399 } | 401 } |
400 | 402 |
401 // Do the same test with RevertDrag(). | 403 // Do the same test with RevertDrag(). |
402 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), | 404 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), |
403 Shell::GetScreen()->GetPrimaryDisplay()); | 405 Shell::GetScreen()->GetPrimaryDisplay()); |
404 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); | 406 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); |
405 EXPECT_FLOAT_EQ(1.0f, window_->layer()->opacity()); | 407 EXPECT_FLOAT_EQ(1.0f, window_->layer()->opacity()); |
406 { | 408 { |
407 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( | 409 scoped_ptr<WindowResizer> resizer(CreateDragWindowResizer( |
408 window_.get(), gfx::Point(), HTCAPTION)); | 410 window_.get(), gfx::Point(), HTCAPTION)); |
409 ASSERT_TRUE(resizer.get()); | 411 ASSERT_TRUE(resizer.get()); |
410 DragWindowResizer* drag_resizer = DragWindowResizer::instance_; | 412 DragWindowResizer* drag_resizer = DragWindowResizer::instance_; |
411 ASSERT_TRUE(drag_resizer); | 413 ASSERT_TRUE(drag_resizer); |
412 EXPECT_FALSE(drag_resizer->drag_window_controller_.get()); | 414 EXPECT_EQ(0u, drag_resizer->drag_window_controllers_.size()); |
413 | 415 |
414 resizer->Drag(CalculateDragPoint(*resizer, 0, 610), 0); | 416 resizer->Drag(CalculateDragPoint(*resizer, 0, 610), 0); |
415 resizer->RevertDrag(); | 417 resizer->RevertDrag(); |
416 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); | 418 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); |
417 EXPECT_FLOAT_EQ(1.0f, window_->layer()->opacity()); | 419 EXPECT_FLOAT_EQ(1.0f, window_->layer()->opacity()); |
418 } | 420 } |
419 } | 421 } |
420 | 422 |
421 // Verifies if the resizer sets and resets | 423 // Verifies if the resizer sets and resets |
422 // MouseCursorEventFilter::mouse_warp_mode_ as expected. | 424 // MouseCursorEventFilter::mouse_warp_mode_ as expected. |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
626 window, gfx::Point(), HTCAPTION)); | 628 window, gfx::Point(), HTCAPTION)); |
627 ASSERT_TRUE(resizer.get()); | 629 ASSERT_TRUE(resizer.get()); |
628 resizer->Drag(CalculateDragPoint(*resizer, 399, 200), 0); | 630 resizer->Drag(CalculateDragPoint(*resizer, 399, 200), 0); |
629 EXPECT_TRUE(WarpMouseCursorIfNecessary(root_windows[0], | 631 EXPECT_TRUE(WarpMouseCursorIfNecessary(root_windows[0], |
630 gfx::Point(399, 200))); | 632 gfx::Point(399, 200))); |
631 resizer->CompleteDrag(); | 633 resizer->CompleteDrag(); |
632 } | 634 } |
633 } | 635 } |
634 | 636 |
635 } // namespace ash | 637 } // namespace ash |
OLD | NEW |