diff options
Diffstat (limited to 'chromium/components/exo/data_device_unittest.cc')
-rw-r--r-- | chromium/components/exo/data_device_unittest.cc | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/chromium/components/exo/data_device_unittest.cc b/chromium/components/exo/data_device_unittest.cc index 8315408b871..189a6d9f6de 100644 --- a/chromium/components/exo/data_device_unittest.cc +++ b/chromium/components/exo/data_device_unittest.cc @@ -61,7 +61,11 @@ class TestDataDeviceDelegate : public DataDeviceDelegate { return out->size(); } Surface* entered_surface() const { return entered_surface_; } - void DeleteDataOffer() { data_offer_.reset(); } + void DeleteDataOffer(bool finished) { + if (finished) + data_offer_->Finish(); + data_offer_.reset(); + } void set_can_accept_data_events_for_surface(bool value) { can_accept_data_events_for_surface_ = value; } @@ -186,7 +190,12 @@ TEST_F(DataDeviceTest, DataEventsDrop) { ASSERT_EQ(1u, delegate_.PopEvents(&events)); EXPECT_EQ(DataEvent::kMotion, events[0]); - device_->OnPerformDrop(event); + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::BindOnce(&TestDataDeviceDelegate::DeleteDataOffer, + base::Unretained(&delegate_), true)); + + int result = device_->OnPerformDrop(event); + EXPECT_EQ(ui::DragDropTypes::DRAG_LINK, result); ASSERT_EQ(1u, delegate_.PopEvents(&events)); EXPECT_EQ(DataEvent::kDrop, events[0]); } @@ -222,7 +231,7 @@ TEST_F(DataDeviceTest, DeleteDataOfferDuringDrag) { EXPECT_EQ(DataEvent::kOffer, events[0]); EXPECT_EQ(DataEvent::kEnter, events[1]); - delegate_.DeleteDataOffer(); + delegate_.DeleteDataOffer(false); EXPECT_EQ(ui::DragDropTypes::DRAG_NONE, device_->OnDragUpdated(event)); EXPECT_EQ(0u, delegate_.PopEvents(&events)); @@ -231,6 +240,31 @@ TEST_F(DataDeviceTest, DeleteDataOfferDuringDrag) { EXPECT_EQ(0u, delegate_.PopEvents(&events)); } +TEST_F(DataDeviceTest, DataOfferNotFinished) { + ui::DropTargetEvent event(data_, gfx::PointF(), gfx::PointF(), + ui::DragDropTypes::DRAG_MOVE); + ui::Event::DispatcherApi(&event).set_target(surface_->window()); + + std::vector<DataEvent> events; + device_->OnDragEntered(event); + ASSERT_EQ(2u, delegate_.PopEvents(&events)); + EXPECT_EQ(DataEvent::kOffer, events[0]); + EXPECT_EQ(DataEvent::kEnter, events[1]); + + EXPECT_EQ(ui::DragDropTypes::DRAG_LINK, device_->OnDragUpdated(event)); + ASSERT_EQ(1u, delegate_.PopEvents(&events)); + EXPECT_EQ(DataEvent::kMotion, events[0]); + + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::BindOnce(&TestDataDeviceDelegate::DeleteDataOffer, + base::Unretained(&delegate_), false)); + + int result = device_->OnPerformDrop(event); + EXPECT_EQ(ui::DragDropTypes::DRAG_NONE, result); + ASSERT_EQ(1u, delegate_.PopEvents(&events)); + EXPECT_EQ(DataEvent::kDrop, events[0]); +} + TEST_F(DataDeviceTest, NotAcceptDataEventsForSurface) { ui::DropTargetEvent event(data_, gfx::PointF(), gfx::PointF(), ui::DragDropTypes::DRAG_MOVE); |