summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/input/mouse_event_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/core/input/mouse_event_manager.cc')
-rw-r--r--chromium/third_party/blink/renderer/core/input/mouse_event_manager.cc63
1 files changed, 23 insertions, 40 deletions
diff --git a/chromium/third_party/blink/renderer/core/input/mouse_event_manager.cc b/chromium/third_party/blink/renderer/core/input/mouse_event_manager.cc
index 2207b5de948..79e0df06a96 100644
--- a/chromium/third_party/blink/renderer/core/input/mouse_event_manager.cc
+++ b/chromium/third_party/blink/renderer/core/input/mouse_event_manager.cc
@@ -34,6 +34,7 @@
#include "third_party/blink/renderer/core/page/drag_state.h"
#include "third_party/blink/renderer/core/page/focus_controller.h"
#include "third_party/blink/renderer/core/paint/paint_layer.h"
+#include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h"
#include "third_party/blink/renderer/core/svg/svg_document_extensions.h"
#include "third_party/blink/renderer/platform/geometry/float_quad.h"
#include "third_party/blink/renderer/platform/histogram.h"
@@ -61,11 +62,13 @@ String CanvasRegionId(Node* node, const WebMouseEvent& mouse_event) {
// The amount of time to wait before sending a fake mouse event triggered
// during a scroll.
-constexpr double kFakeMouseMoveIntervalDuringScroll = 0.1;
+constexpr TimeDelta kFakeMouseMoveIntervalDuringScroll =
+ TimeDelta::FromMilliseconds(100);
// The amount of time to wait before sending a fake mouse event on style and
// layout changes sets to 50Hz, same as common screen refresh rate.
-constexpr double kFakeMouseMoveIntervalPerFrame = 0.02;
+constexpr TimeDelta kFakeMouseMoveIntervalPerFrame =
+ TimeDelta::FromMilliseconds(20);
// TODO(crbug.com/653490): Read these values from the OS.
#if defined(OS_MACOSX)
@@ -113,6 +116,7 @@ void MouseEventManager::Clear() {
drag_start_pos_ = LayoutPoint();
fake_mouse_move_event_timer_.Stop();
ResetDragState();
+ ClearDragDataTransfer();
}
MouseEventManager::~MouseEventManager() = default;
@@ -393,34 +397,18 @@ void MouseEventManager::SetNodeUnderMouse(
EventHandlingUtil::LayerForNode(node_under_mouse_.Get());
Page* page = frame_->GetPage();
- if (last_node_under_mouse &&
- (!node_under_mouse_ ||
- node_under_mouse_->GetDocument() != frame_->GetDocument())) {
- // The mouse has moved between frames.
- if (LocalFrame* frame = last_node_under_mouse->GetDocument().GetFrame()) {
- if (LocalFrameView* frame_view = frame->View())
- frame_view->MouseExitedContentArea();
- }
- } else if (page && (layer_for_last_node &&
- (!layer_for_node_under_mouse ||
- layer_for_node_under_mouse != layer_for_last_node))) {
+ if (page && (layer_for_last_node &&
+ (!layer_for_node_under_mouse ||
+ layer_for_node_under_mouse != layer_for_last_node))) {
// The mouse has moved between layers.
if (ScrollableArea* scrollable_area_for_last_node =
EventHandlingUtil::AssociatedScrollableArea(layer_for_last_node))
scrollable_area_for_last_node->MouseExitedContentArea();
}
- if (node_under_mouse_ &&
- (!last_node_under_mouse ||
- last_node_under_mouse->GetDocument() != frame_->GetDocument())) {
- // The mouse has moved between frames.
- if (LocalFrame* frame = node_under_mouse_->GetDocument().GetFrame()) {
- if (LocalFrameView* frame_view = frame->View())
- frame_view->MouseEnteredContentArea();
- }
- } else if (page && (layer_for_node_under_mouse &&
- (!layer_for_last_node ||
- layer_for_node_under_mouse != layer_for_last_node))) {
+ if (page && (layer_for_node_under_mouse &&
+ (!layer_for_last_node ||
+ layer_for_node_under_mouse != layer_for_last_node))) {
// The mouse has moved between layers.
if (ScrollableArea* scrollable_area_for_node_under_mouse =
EventHandlingUtil::AssociatedScrollableArea(
@@ -588,7 +576,7 @@ void MouseEventManager::HandleMousePressEventUpdateStates(
mouse_down_timestamp_ = mouse_event.TimeStamp();
if (LocalFrameView* view = frame_->View()) {
- mouse_down_pos_ = view->RootFrameToContents(
+ mouse_down_pos_ = view->ConvertFromRootFrame(
FlooredIntPoint(mouse_event.PositionInRootFrame()));
} else {
InvalidateClick();
@@ -638,7 +626,7 @@ void MouseEventManager::DispatchFakeMouseMoveEventSoon(
// during a scroll. This avoids a potential source of scroll jank.
// Or dispatch a fake mouse move to update hover states when the layout
// changes.
- double interval =
+ TimeDelta interval =
fake_mouse_move_reason ==
MouseEventManager::FakeMouseMoveReason::kDuringScroll
? kFakeMouseMoveIntervalDuringScroll
@@ -652,7 +640,7 @@ void MouseEventManager::DispatchFakeMouseMoveEventSoonInQuad(
if (!view)
return;
- if (!quad.ContainsPoint(view->ViewportToContents(last_known_mouse_position_)))
+ if (!quad.ContainsPoint(view->ViewportToFrame(last_known_mouse_position_)))
return;
DispatchFakeMouseMoveEventSoon(
@@ -668,12 +656,6 @@ WebInputEventResult MouseEventManager::HandleMousePressEvent(
frame_->GetDocument()->UpdateStyleAndLayoutIgnorePendingStylesheets();
- if (LocalFrameView* frame_view = frame_->View()) {
- if (frame_view->IsPointInScrollbarCorner(
- FlooredIntPoint(event.Event().PositionInRootFrame())))
- return WebInputEventResult::kNotHandled;
- }
-
bool single_click = event.Event().click_count <= 1;
mouse_down_may_start_drag_ =
@@ -687,8 +669,8 @@ WebInputEventResult MouseEventManager::HandleMousePressEvent(
single_click) {
svg_pan_ = true;
frame_->GetDocument()->AccessSVGExtensions().StartPan(
- frame_->View()->RootFrameToContents(
- FlooredIntPoint(event.Event().PositionInRootFrame())));
+ frame_->View()->ConvertFromRootFrame(FloatPoint(
+ FlooredIntPoint(event.Event().PositionInRootFrame()))));
return WebInputEventResult::kHandledSystem;
}
}
@@ -770,7 +752,7 @@ bool MouseEventManager::HandleDragDropIfPossible(
mouse_drag_event);
mouse_down_may_start_drag_ = true;
ResetDragState();
- mouse_down_pos_ = frame_->View()->RootFrameToContents(
+ mouse_down_pos_ = frame_->View()->ConvertFromRootFrame(
FlooredIntPoint(mouse_drag_event.PositionInRootFrame()));
return HandleDrag(mev, DragInitiator::kTouch);
}
@@ -888,8 +870,9 @@ bool MouseEventManager::HandleDrag(const MouseEventWithHitTestResults& event,
if (mouse_down_may_start_drag_) {
HitTestRequest request(HitTestRequest::kReadOnly);
- HitTestResult result(request, mouse_down_pos_);
- frame_->ContentLayoutObject()->HitTest(result);
+ HitTestLocation location(mouse_down_pos_);
+ HitTestResult result(request, location);
+ frame_->ContentLayoutObject()->HitTest(location, result);
Node* node = result.InnerNode();
if (node) {
DragController::SelectionDragPolicy selection_drag_policy =
@@ -1113,7 +1096,7 @@ bool MouseEventManager::DragThresholdExceeded(
if (!view)
return false;
IntPoint drag_location =
- view->RootFrameToContents(drag_location_in_root_frame);
+ view->ConvertFromRootFrame(drag_location_in_root_frame);
IntSize delta = drag_location - mouse_down_pos_;
// WebKit's drag thresholds depend on the type of object being dragged. If we
@@ -1138,7 +1121,7 @@ bool MouseEventManager::HandleSvgPanIfNeeded(bool is_release_event) {
return false;
svg_pan_ = !is_release_event;
frame_->GetDocument()->AccessSVGExtensions().UpdatePan(
- frame_->View()->ViewportToContents(last_known_mouse_position_));
+ frame_->View()->ViewportToFrame(last_known_mouse_position_));
return true;
}