diff options
-rw-r--r-- | ash/drag_drop/drag_drop_controller.cc | 2 | ||||
-rw-r--r-- | ash/drag_drop/drag_drop_tracker.cc | 9 | ||||
-rw-r--r-- | ash/drag_drop/drag_drop_tracker.h | 11 | ||||
-rw-r--r-- | ash/drag_drop/drag_drop_tracker_unittest.cc | 60 |
4 files changed, 42 insertions, 40 deletions
diff --git a/ash/drag_drop/drag_drop_controller.cc b/ash/drag_drop/drag_drop_controller.cc index acecc81..01788dd 100644 --- a/ash/drag_drop/drag_drop_controller.cc +++ b/ash/drag_drop/drag_drop_controller.cc @@ -62,7 +62,7 @@ int DragDropController::StartDragAndDrop(const ui::OSExchangeData& data, int operation) { DCHECK(!IsDragDropInProgress()); - drag_drop_tracker_.reset(new DragDropTracker(root_window)); + drag_drop_tracker_.reset(new DragDropTracker); drag_data_ = &data; drag_operation_ = operation; diff --git a/ash/drag_drop/drag_drop_tracker.cc b/ash/drag_drop/drag_drop_tracker.cc index 7fa0537..f0bb206 100644 --- a/ash/drag_drop/drag_drop_tracker.cc +++ b/ash/drag_drop/drag_drop_tracker.cc @@ -14,14 +14,11 @@ namespace { // Creates a window for capturing drag events. -aura::Window* CreateCaptureWindow(aura::RootWindow* root_window) { +aura::Window* CreateCaptureWindow() { aura::Window* window = new aura::Window(NULL); window->SetType(aura::client::WINDOW_TYPE_NORMAL); window->Init(ui::LAYER_NOT_DRAWN); window->SetParent(NULL); - window->SetBoundsInScreen(gfx::Rect(root_window->GetBoundsInScreen().origin(), - gfx::Size()), - gfx::Screen::GetDisplayNearestWindow(root_window)); window->Show(); return window; } @@ -31,8 +28,8 @@ aura::Window* CreateCaptureWindow(aura::RootWindow* root_window) { namespace ash { namespace internal { -DragDropTracker::DragDropTracker(aura::RootWindow* root_window) - : capture_window_(CreateCaptureWindow(root_window)) { +DragDropTracker::DragDropTracker() + : capture_window_(CreateCaptureWindow()) { capture_window_->SetCapture(); } diff --git a/ash/drag_drop/drag_drop_tracker.h b/ash/drag_drop/drag_drop_tracker.h index 220cc12..56b6309 100644 --- a/ash/drag_drop/drag_drop_tracker.h +++ b/ash/drag_drop/drag_drop_tracker.h @@ -11,7 +11,6 @@ #include "ui/base/events/event.h" namespace aura { -class RootWindow; class Window; } @@ -25,15 +24,15 @@ namespace internal { // is supported for now. class ASH_EXPORT DragDropTracker { public: - explicit DragDropTracker(aura::RootWindow* root_window); + DragDropTracker(); ~DragDropTracker(); - // Gets the target located at |event| in the coordinates of the root window - // given to the constructor. + // Gets the target located at |event| in the coordinates of the active root + // window. aura::Window* GetTarget(const ui::LocatedEvent& event); - // Converts the locations of |event| in the coordinates of the root window - // given to the constructor to the ones in |target|'s coordinates. + // Converts the locations of |event| in the coordinates of the active root + // window to the ones in |target|'s coordinates. // Caller takes ownership of the returned object. ui::MouseEvent* ConvertMouseEvent(aura::Window* target, const ui::MouseEvent& event); diff --git a/ash/drag_drop/drag_drop_tracker_unittest.cc b/ash/drag_drop/drag_drop_tracker_unittest.cc index 4175c6b..dfefe82 100644 --- a/ash/drag_drop/drag_drop_tracker_unittest.cc +++ b/ash/drag_drop/drag_drop_tracker_unittest.cc @@ -32,10 +32,9 @@ class DragDropTrackerTest : public test::AshTestBase { parent); } - static aura::Window* GetTarget(aura::RootWindow* root_window, - const gfx::Point& location) { + static aura::Window* GetTarget(const gfx::Point& location) { scoped_ptr<internal::DragDropTracker> tracker( - new internal::DragDropTracker(root_window)); + new internal::DragDropTracker); ui::MouseEvent e(ui::ET_MOUSE_DRAGGED, location, location, @@ -44,11 +43,10 @@ class DragDropTrackerTest : public test::AshTestBase { return target; } - static ui::MouseEvent* ConvertMouseEvent(aura::RootWindow* root_window, - aura::Window* target, + static ui::MouseEvent* ConvertMouseEvent(aura::Window* target, const ui::MouseEvent& event) { scoped_ptr<internal::DragDropTracker> tracker( - new internal::DragDropTracker(root_window)); + new internal::DragDropTracker); ui::MouseEvent* converted = tracker->ConvertMouseEvent(target, event); return converted; } @@ -78,41 +76,47 @@ TEST_F(DragDropTrackerTest, MAYBE_GetTarget) { CreateTestWindow(gfx::Rect(100, 100, 100, 100), NULL)); window1->Show(); - // Start tracking from the RootWindow0 and check the point on RootWindow0 that + // Make RootWindow0 active so that capture window is parented to it. + Shell::GetInstance()->set_active_root_window(root_windows[0]); + + // Start tracking from the RootWindow1 and check the point on RootWindow0 that // |window0| covers. - EXPECT_EQ(window0.get(), GetTarget(root_windows[0], gfx::Point(50, 50))); + EXPECT_EQ(window0.get(), GetTarget(gfx::Point(50, 50))); // Start tracking from the RootWindow0 and check the point on RootWindow0 that // neither |window0| nor |window1| covers. - EXPECT_NE(window0.get(), GetTarget(root_windows[0], gfx::Point(150, 150))); - EXPECT_NE(window1.get(), GetTarget(root_windows[0], gfx::Point(150, 150))); + EXPECT_NE(window0.get(), GetTarget(gfx::Point(150, 150))); + EXPECT_NE(window1.get(), GetTarget(gfx::Point(150, 150))); // Start tracking from the RootWindow0 and check the point on RootWindow1 that // |window1| covers. - EXPECT_EQ(window1.get(), GetTarget(root_windows[0], gfx::Point(350, 150))); + EXPECT_EQ(window1.get(), GetTarget(gfx::Point(350, 150))); // Start tracking from the RootWindow0 and check the point on RootWindow1 that // neither |window0| nor |window1| covers. - EXPECT_NE(window0.get(), GetTarget(root_windows[0], gfx::Point(50, 250))); - EXPECT_NE(window1.get(), GetTarget(root_windows[0], gfx::Point(50, 250))); + EXPECT_NE(window0.get(), GetTarget(gfx::Point(50, 250))); + EXPECT_NE(window1.get(), GetTarget(gfx::Point(50, 250))); + + // Make RootWindow1 active so that capture window is parented to it. + Shell::GetInstance()->set_active_root_window(root_windows[1]); // Start tracking from the RootWindow1 and check the point on RootWindow0 that // |window0| covers. - EXPECT_EQ(window0.get(), GetTarget(root_windows[1], gfx::Point(-150, 50))); + EXPECT_EQ(window0.get(), GetTarget(gfx::Point(-150, 50))); // Start tracking from the RootWindow1 and check the point on RootWindow0 that // neither |window0| nor |window1| covers. - EXPECT_NE(window0.get(), GetTarget(root_windows[1], gfx::Point(150, -50))); - EXPECT_NE(window1.get(), GetTarget(root_windows[1], gfx::Point(150, -50))); + EXPECT_NE(window0.get(), GetTarget(gfx::Point(150, -50))); + EXPECT_NE(window1.get(), GetTarget(gfx::Point(150, -50))); // Start tracking from the RootWindow1 and check the point on RootWindow1 that // |window1| covers. - EXPECT_EQ(window1.get(), GetTarget(root_windows[1], gfx::Point(150, 150))); + EXPECT_EQ(window1.get(), GetTarget(gfx::Point(150, 150))); // Start tracking from the RootWindow1 and check the point on RootWindow1 that // neither |window0| nor |window1| covers. - EXPECT_NE(window0.get(), GetTarget(root_windows[1], gfx::Point(50, 50))); - EXPECT_NE(window1.get(), GetTarget(root_windows[1], gfx::Point(50, 50))); + EXPECT_NE(window0.get(), GetTarget(gfx::Point(50, 50))); + EXPECT_NE(window1.get(), GetTarget(gfx::Point(50, 50))); } // TODO(mazda): Remove this once ash/wm/coordinate_conversion.h supports @@ -137,14 +141,16 @@ TEST_F(DragDropTrackerTest, MAYBE_ConvertMouseEvent) { CreateTestWindow(gfx::Rect(100, 100, 100, 100), NULL)); window1->Show(); + // Make RootWindow0 active so that capture window is parented to it. + Shell::GetInstance()->set_active_root_window(root_windows[0]); + // Start tracking from the RootWindow0 and converts the mouse event into // |window0|'s coodinates. ui::MouseEvent original00(ui::ET_MOUSE_DRAGGED, gfx::Point(50, 50), gfx::Point(50, 50), ui::EF_NONE); - scoped_ptr<ui::MouseEvent> converted00(ConvertMouseEvent(root_windows[0], - window0.get(), + scoped_ptr<ui::MouseEvent> converted00(ConvertMouseEvent(window0.get(), original00)); EXPECT_EQ(original00.type(), converted00->type()); EXPECT_EQ("50,50", converted00->location().ToString()); @@ -157,22 +163,23 @@ TEST_F(DragDropTrackerTest, MAYBE_ConvertMouseEvent) { gfx::Point(350, 150), gfx::Point(350, 150), ui::EF_NONE); - scoped_ptr<ui::MouseEvent> converted01(ConvertMouseEvent(root_windows[0], - window1.get(), + scoped_ptr<ui::MouseEvent> converted01(ConvertMouseEvent(window1.get(), original01)); EXPECT_EQ(original01.type(), converted01->type()); EXPECT_EQ("50,50", converted01->location().ToString()); EXPECT_EQ("150,150", converted01->root_location().ToString()); EXPECT_EQ(original01.flags(), converted01->flags()); + // Make RootWindow1 active so that capture window is parented to it. + Shell::GetInstance()->set_active_root_window(root_windows[1]); + // Start tracking from the RootWindow1 and converts the mouse event into // |window0|'s coodinates. ui::MouseEvent original10(ui::ET_MOUSE_DRAGGED, gfx::Point(-150, 50), gfx::Point(-150, 50), ui::EF_NONE); - scoped_ptr<ui::MouseEvent> converted10(ConvertMouseEvent(root_windows[1], - window0.get(), + scoped_ptr<ui::MouseEvent> converted10(ConvertMouseEvent(window0.get(), original10)); EXPECT_EQ(original10.type(), converted10->type()); EXPECT_EQ("50,50", converted10->location().ToString()); @@ -185,8 +192,7 @@ TEST_F(DragDropTrackerTest, MAYBE_ConvertMouseEvent) { gfx::Point(150, 150), gfx::Point(150, 150), ui::EF_NONE); - scoped_ptr<ui::MouseEvent> converted11(ConvertMouseEvent(root_windows[1], - window1.get(), + scoped_ptr<ui::MouseEvent> converted11(ConvertMouseEvent(window1.get(), original11)); EXPECT_EQ(original11.type(), converted11->type()); EXPECT_EQ("50,50", converted11->location().ToString()); |