summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/page/drag_controller.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/core/page/drag_controller.cc')
-rw-r--r--chromium/third_party/blink/renderer/core/page/drag_controller.cc47
1 files changed, 24 insertions, 23 deletions
diff --git a/chromium/third_party/blink/renderer/core/page/drag_controller.cc b/chromium/third_party/blink/renderer/core/page/drag_controller.cc
index c3ffeee94a5..df4db495601 100644
--- a/chromium/third_party/blink/renderer/core/page/drag_controller.cc
+++ b/chromium/third_party/blink/renderer/core/page/drag_controller.cc
@@ -128,7 +128,7 @@ static WebMouseEvent CreateMouseEvent(DragData* drag_data) {
WebInputEvent::kMouseMove, drag_data->ClientPosition(),
drag_data->GlobalPosition(), WebPointerProperties::Button::kLeft, 0,
static_cast<WebInputEvent::Modifiers>(drag_data->GetModifiers()),
- CurrentTimeTicks());
+ base::TimeTicks::Now());
// TODO(dtapuska): Really we should chnage DragData to store the viewport
// coordinates and scale.
result.SetFrameScale(1);
@@ -238,8 +238,8 @@ void DragController::DragExited(DragData* drag_data, LocalFrame& local_root) {
void DragController::PerformDrag(DragData* drag_data, LocalFrame& local_root) {
DCHECK(drag_data);
- document_under_mouse_ =
- local_root.DocumentAtPoint(LayoutPoint(drag_data->ClientPosition()));
+ document_under_mouse_ = local_root.DocumentAtPoint(
+ PhysicalOffset::FromFloatPointRound(drag_data->ClientPosition()));
std::unique_ptr<UserGestureIndicator> gesture =
LocalFrame::NotifyUserActivation(
document_under_mouse_ ? document_under_mouse_->GetFrame() : nullptr,
@@ -261,7 +261,7 @@ void DragController::PerformDrag(DragData* drag_data, LocalFrame& local_root) {
// When drop target is plugin element and it can process drag, we
// should prevent default behavior.
const HitTestLocation location(local_root.View()->ConvertFromRootFrame(
- LayoutPoint(drag_data->ClientPosition())));
+ PhysicalOffset::FromFloatPointRound(drag_data->ClientPosition())));
const HitTestResult result =
event_handler.HitTestResultAtLocation(location);
prevented_default |=
@@ -332,8 +332,8 @@ DragOperation DragController::DragEnteredOrUpdated(DragData* drag_data,
LocalFrame& local_root) {
DCHECK(drag_data);
- MouseMovedIntoDocument(
- local_root.DocumentAtPoint(LayoutPoint(drag_data->ClientPosition())));
+ MouseMovedIntoDocument(local_root.DocumentAtPoint(
+ PhysicalOffset::FromFloatPointRound(drag_data->ClientPosition())));
// TODO(esprehn): Replace acceptsLoadDrops with a Setting used in core.
drag_destination_action_ =
@@ -363,8 +363,9 @@ static HTMLInputElement* AsFileInput(Node* node) {
// This can return null if an empty document is loaded.
static Element* ElementUnderMouse(Document* document_under_mouse,
- const LayoutPoint& point) {
- HitTestRequest request(HitTestRequest::kReadOnly | HitTestRequest::kActive);
+ const PhysicalOffset& point) {
+ HitTestRequest request(HitTestRequest::kReadOnly | HitTestRequest::kActive |
+ HitTestRequest::kRetargetForInert);
HitTestLocation location(point);
HitTestResult result(request, location);
document_under_mouse->GetLayoutView()->HitTest(location, result);
@@ -375,7 +376,7 @@ static Element* ElementUnderMouse(Document* document_under_mouse,
if (n && n->IsInShadowTree())
n = n->OwnerShadowHost();
- return ToElement(n);
+ return To<Element>(n);
}
bool DragController::TryDocumentDrag(DragData* drag_data,
@@ -416,8 +417,8 @@ bool DragController::TryDocumentDrag(DragData* drag_data,
if ((action_mask & kDragDestinationActionEdit) &&
CanProcessDrag(drag_data, local_root)) {
- LayoutPoint point = frame_view->ConvertFromRootFrame(
- LayoutPoint(drag_data->ClientPosition()));
+ PhysicalOffset point = frame_view->ConvertFromRootFrame(
+ PhysicalOffset::FromFloatPointRound(drag_data->ClientPosition()));
Element* element = ElementUnderMouse(document_under_mouse_.Get(), point);
if (!element)
return false;
@@ -466,8 +467,8 @@ bool DragController::TryDocumentDrag(DragData* drag_data,
DragOperation DragController::OperationForLoad(DragData* drag_data,
LocalFrame& local_root) {
DCHECK(drag_data);
- Document* doc =
- local_root.DocumentAtPoint(LayoutPoint(drag_data->ClientPosition()));
+ Document* doc = local_root.DocumentAtPoint(
+ PhysicalOffset::FromFloatPointRound(drag_data->ClientPosition()));
if (doc &&
(did_initiate_drag_ || doc->IsPluginDocument() || HasEditableStyle(*doc)))
@@ -481,7 +482,7 @@ DragOperation DragController::OperationForLoad(DragData* drag_data,
static bool SetSelectionToDragCaret(LocalFrame* frame,
const SelectionInDOMTree& drag_caret,
Range*& range,
- const LayoutPoint& point) {
+ const PhysicalOffset& point) {
frame->Selection().SetSelectionAndEndTyping(drag_caret);
// TODO(editing-dev): The use of
// UpdateStyleAndLayout
@@ -541,8 +542,8 @@ bool DragController::ConcludeEditDrag(DragData* drag_data) {
if (!document_under_mouse_)
return false;
- LayoutPoint point = document_under_mouse_->View()->ConvertFromRootFrame(
- LayoutPoint(drag_data->ClientPosition()));
+ PhysicalOffset point = document_under_mouse_->View()->ConvertFromRootFrame(
+ PhysicalOffset::FromFloatPointRound(drag_data->ClientPosition()));
Element* element = ElementUnderMouse(document_under_mouse_.Get(), point);
if (!element)
return false;
@@ -708,8 +709,8 @@ bool DragController::CanProcessDrag(DragData* drag_data,
if (!local_root.ContentLayoutObject())
return false;
- LayoutPoint point = local_root.View()->ConvertFromRootFrame(
- LayoutPoint(drag_data->ClientPosition()));
+ PhysicalOffset point = local_root.View()->ConvertFromRootFrame(
+ PhysicalOffset::FromFloatPointRound(drag_data->ClientPosition()));
HitTestLocation location(point);
HitTestResult result =
@@ -814,7 +815,7 @@ Node* DragController::DraggableNode(const LocalFrame* src,
const IntPoint& drag_origin,
SelectionDragPolicy selection_drag_policy,
DragSourceAction& drag_type) const {
- if (src->Selection().Contains(drag_origin)) {
+ if (src->Selection().Contains(PhysicalOffset(drag_origin))) {
drag_type = kDragSourceActionSelection;
if (selection_drag_policy == kImmediateSelectionDragResolution)
return start_node;
@@ -968,9 +969,9 @@ bool DragController::PopulateDragDataTransfer(LocalFrame* src,
if (state.drag_type_ == kDragSourceActionSelection) {
data_transfer->WriteSelection(src->Selection());
} else if (state.drag_type_ == kDragSourceActionImage) {
- if (image_url.IsEmpty() || !node || !node->IsElementNode())
+ auto* element = DynamicTo<Element>(node);
+ if (image_url.IsEmpty() || !element)
return false;
- Element* element = ToElement(node);
PrepareDataTransferForImageDrag(src, data_transfer, element, link_url,
image_url,
hit_test_result.AltDisplayString());
@@ -1224,9 +1225,9 @@ bool DragController::StartDrag(LocalFrame* src,
DoSystemDrag(drag_image.get(), drag_location, drag_origin, data_transfer,
src, false);
} else if (state.drag_type_ == kDragSourceActionImage) {
- if (image_url.IsEmpty() || !node || !node->IsElementNode())
+ auto* element = DynamicTo<Element>(node);
+ if (image_url.IsEmpty() || !element)
return false;
- Element* element = ToElement(node);
Image* image = GetImage(element);
if (!image || image->IsNull() || !image->Data() || !image->Data()->size())
return false;