Commit 1adfaa5d authored by Scott Little's avatar Scott Little Committed by Commit Bot

Revert "Fix sending scrollend on main thread snap"

This reverts commit 0d6bba53.

Reason for revert: Broke webkit_layout_tests on WebKit Linux Leak bot:

https://ci.chromium.org/p/chromium/builders/ci/WebKit%20Linux%20Leak/2935

Original change's description:
> Fix sending scrollend on main thread snap
> 
> This CL sends scrollend event if GSE is being
> handled on the main thread after the snap (if
> the snap has started after GSE). It also takes
> care of sending scrollend event for snap after
> fling.
> 
> Bug: 907601
> Change-Id: I21aba5d098b25ddc765d78a7792ec8a2fb7987cb
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1743253
> Reviewed-by: David Bokan <bokan@chromium.org>
> Commit-Queue: Navid Zolghadr <nzolghadr@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#685217}

TBR=bokan@chromium.org,nzolghadr@chromium.org

Change-Id: Ib7901d4284565f8cd636e1e4064163750bf08d4e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 907601
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1744517Reviewed-by: default avatarScott Little <sclittle@chromium.org>
Commit-Queue: Scott Little <sclittle@chromium.org>
Cr-Commit-Position: refs/heads/master@{#685254}
parent 1b63a4b7
...@@ -1532,6 +1532,13 @@ WebInputEventResult EventHandler::HandleGestureScrollEvent( ...@@ -1532,6 +1532,13 @@ WebInputEventResult EventHandler::HandleGestureScrollEvent(
return scroll_manager_->HandleGestureScrollEvent(gesture_event); return scroll_manager_->HandleGestureScrollEvent(gesture_event);
} }
WebInputEventResult EventHandler::HandleGestureScrollEnd(
const WebGestureEvent& gesture_event) {
if (!frame_->GetPage())
return WebInputEventResult::kNotHandled;
return scroll_manager_->HandleGestureScrollEnd(gesture_event);
}
void EventHandler::SetMouseDownMayStartAutoscroll() { void EventHandler::SetMouseDownMayStartAutoscroll() {
mouse_event_manager_->SetMouseDownMayStartAutoscroll(); mouse_event_manager_->SetMouseDownMayStartAutoscroll();
} }
......
...@@ -201,6 +201,7 @@ class CORE_EXPORT EventHandler final ...@@ -201,6 +201,7 @@ class CORE_EXPORT EventHandler final
// Handle the provided scroll gesture event, propagating down to child frames // Handle the provided scroll gesture event, propagating down to child frames
// as necessary. // as necessary.
WebInputEventResult HandleGestureScrollEvent(const WebGestureEvent&); WebInputEventResult HandleGestureScrollEvent(const WebGestureEvent&);
WebInputEventResult HandleGestureScrollEnd(const WebGestureEvent&);
bool IsScrollbarHandlingGestures() const; bool IsScrollbarHandlingGestures() const;
bool BestClickableNodeForHitTestResult(const HitTestLocation& location, bool BestClickableNodeForHitTestResult(const HitTestLocation& location,
......
...@@ -113,15 +113,6 @@ void ScrollManager::ClearGestureScrollState() { ...@@ -113,15 +113,6 @@ void ScrollManager::ClearGestureScrollState() {
} }
} }
Node* ScrollManager::GetScrollEventTarget() {
// Send the overscroll event to the node that scrolling is latched to which
// is either previously scrolled node or the last node in the scroll chain.
Node* scroll_target = previous_gesture_scrolled_node_;
if (!scroll_target && !current_scroll_chain_.IsEmpty())
scroll_target = DOMNodeIds::NodeForId(current_scroll_chain_.front());
return scroll_target;
}
void ScrollManager::StopAutoscroll() { void ScrollManager::StopAutoscroll() {
if (AutoscrollController* controller = GetAutoscrollController()) if (AutoscrollController* controller = GetAutoscrollController())
controller->StopAutoscroll(); controller->StopAutoscroll();
...@@ -326,12 +317,11 @@ bool ScrollManager::LogicalScroll(ScrollDirection direction, ...@@ -326,12 +317,11 @@ bool ScrollManager::LogicalScroll(ScrollDirection direction,
} }
ScrollableArea::ScrollCallback callback; ScrollableArea::ScrollCallback callback;
if (RuntimeEnabledFeatures::UpdateHoverAtBeginFrameEnabled() || if (RuntimeEnabledFeatures::UpdateHoverAtBeginFrameEnabled()) {
RuntimeEnabledFeatures::OverscrollCustomizationEnabled()) {
callback = ScrollableArea::ScrollCallback(WTF::Bind( callback = ScrollableArea::ScrollCallback(WTF::Bind(
[](WeakPersistent<ScrollableArea> area) { [](WeakPersistent<ScrollableArea> area) {
if (area) if (area)
area->OnScrollFinished(); area->MarkHoverStateDirty();
}, },
WrapWeakPersistent(scrollable_area))); WrapWeakPersistent(scrollable_area)));
} }
...@@ -635,7 +625,13 @@ WebInputEventResult ScrollManager::HandleGestureScrollUpdate( ...@@ -635,7 +625,13 @@ WebInputEventResult ScrollManager::HandleGestureScrollUpdate(
return WebInputEventResult::kHandledSystem; return WebInputEventResult::kHandledSystem;
if (RuntimeEnabledFeatures::OverscrollCustomizationEnabled()) { if (RuntimeEnabledFeatures::OverscrollCustomizationEnabled()) {
if (Node* overscroll_target = GetScrollEventTarget()) { // Send the overscroll event to the node that scrolling is latched to which
// is either previously scrolled node or the last node in the scroll chain.
Node* overscroll_target = previous_gesture_scrolled_node_;
if (!overscroll_target && !current_scroll_chain_.IsEmpty())
overscroll_target = DOMNodeIds::NodeForId(current_scroll_chain_.front());
if (overscroll_target) {
overscroll_target->GetDocument().EnqueueOverscrollEventForNode( overscroll_target->GetDocument().EnqueueOverscrollEventForNode(
overscroll_target, delta.Width(), delta.Height()); overscroll_target, delta.Width(), delta.Height());
} }
...@@ -696,9 +692,16 @@ WebInputEventResult ScrollManager::HandleGestureScrollEnd( ...@@ -696,9 +692,16 @@ WebInputEventResult ScrollManager::HandleGestureScrollEnd(
snap_at_gesture_scroll_end = SnapAtGestureScrollEnd(); snap_at_gesture_scroll_end = SnapAtGestureScrollEnd();
NotifyScrollPhaseEndForCustomizedScroll(); NotifyScrollPhaseEndForCustomizedScroll();
if (RuntimeEnabledFeatures::OverscrollCustomizationEnabled() && if (RuntimeEnabledFeatures::OverscrollCustomizationEnabled()) {
!snap_at_gesture_scroll_end) { // Send the scrollend event to the node that scrolling is latched to
if (Node* scroll_end_target = GetScrollEventTarget()) { // which is either previously scrolled node or the last node in the
// scroll chain.
DCHECK(!current_scroll_chain_.IsEmpty());
if (previous_gesture_scrolled_node_) {
previous_gesture_scrolled_node_->GetDocument()
.EnqueueScrollEndEventForNode(previous_gesture_scrolled_node_);
} else if (Node* scroll_end_target =
DOMNodeIds::NodeForId(current_scroll_chain_.front())) {
scroll_end_target->GetDocument().EnqueueScrollEndEventForNode( scroll_end_target->GetDocument().EnqueueScrollEndEventForNode(
scroll_end_target); scroll_end_target);
} }
...@@ -792,12 +795,6 @@ gfx::Vector2dF ScrollManager::ScrollByForSnapFling( ...@@ -792,12 +795,6 @@ gfx::Vector2dF ScrollManager::ScrollByForSnapFling(
} }
void ScrollManager::ScrollEndForSnapFling() { void ScrollManager::ScrollEndForSnapFling() {
if (RuntimeEnabledFeatures::OverscrollCustomizationEnabled()) {
if (Node* scroll_end_target = GetScrollEventTarget()) {
scroll_end_target->GetDocument().EnqueueScrollEndEventForNode(
scroll_end_target);
}
}
if (current_scroll_chain_.IsEmpty()) { if (current_scroll_chain_.IsEmpty()) {
NotifyScrollPhaseEndForCustomizedScroll(); NotifyScrollPhaseEndForCustomizedScroll();
ClearGestureScrollState(); ClearGestureScrollState();
......
...@@ -119,8 +119,6 @@ class CORE_EXPORT ScrollManager ...@@ -119,8 +119,6 @@ class CORE_EXPORT ScrollManager
WebInputEventResult PassScrollGestureEvent(const WebGestureEvent&, WebInputEventResult PassScrollGestureEvent(const WebGestureEvent&,
LayoutObject*); LayoutObject*);
Node* GetScrollEventTarget();
void ClearGestureScrollState(); void ClearGestureScrollState();
void CustomizedScroll(ScrollState&); void CustomizedScroll(ScrollState&);
......
...@@ -300,13 +300,12 @@ void ScrollableArea::ProgrammaticScrollHelper(const ScrollOffset& offset, ...@@ -300,13 +300,12 @@ void ScrollableArea::ProgrammaticScrollHelper(const ScrollOffset& offset,
CancelScrollAnimation(); CancelScrollAnimation();
ScrollCallback callback = std::move(on_finish); ScrollCallback callback = std::move(on_finish);
if (RuntimeEnabledFeatures::UpdateHoverAtBeginFrameEnabled() || if (RuntimeEnabledFeatures::UpdateHoverAtBeginFrameEnabled()) {
RuntimeEnabledFeatures::OverscrollCustomizationEnabled()) {
callback = ScrollCallback(WTF::Bind( callback = ScrollCallback(WTF::Bind(
[](ScrollCallback original_callback, [](ScrollCallback original_callback,
WeakPersistent<ScrollableArea> area) { WeakPersistent<ScrollableArea> area) {
if (area) if (area)
area->OnScrollFinished(); area->MarkHoverStateDirty();
if (original_callback) if (original_callback)
std::move(original_callback).Run(); std::move(original_callback).Run();
}, },
...@@ -818,19 +817,13 @@ CompositorElementId ScrollableArea::GetScrollbarElementId( ...@@ -818,19 +817,13 @@ CompositorElementId ScrollableArea::GetScrollbarElementId(
scrollable_element_id.GetInternalValue(), element_id_namespace); scrollable_element_id.GetInternalValue(), element_id_namespace);
} }
void ScrollableArea::OnScrollFinished() { void ScrollableArea::MarkHoverStateDirty() {
if (GetLayoutBox()) { if (GetLayoutBox()) {
if (RuntimeEnabledFeatures::OverscrollCustomizationEnabled()) { GetLayoutBox()
if (Node* node = GetLayoutBox()->GetNode()) ->GetFrame()
node->GetDocument().EnqueueScrollEndEventForNode(node); ->LocalFrameRoot()
} .GetEventHandler()
if (RuntimeEnabledFeatures::UpdateHoverAtBeginFrameEnabled()) { .MarkHoverStateDirty();
GetLayoutBox()
->GetFrame()
->LocalFrameRoot()
.GetEventHandler()
.MarkHoverStateDirty();
}
} }
} }
......
...@@ -416,7 +416,7 @@ class CORE_EXPORT ScrollableArea : public GarbageCollectedMixin { ...@@ -416,7 +416,7 @@ class CORE_EXPORT ScrollableArea : public GarbageCollectedMixin {
virtual ScrollbarTheme& GetPageScrollbarTheme() const = 0; virtual ScrollbarTheme& GetPageScrollbarTheme() const = 0;
void OnScrollFinished(); virtual void MarkHoverStateDirty();
float ScrollStep(ScrollGranularity, ScrollbarOrientation) const; float ScrollStep(ScrollGranularity, ScrollbarOrientation) const;
......
...@@ -242,6 +242,11 @@ crbug.com/857490 virtual/scroll_customization/fast/events/touch/gesture/pad-gest ...@@ -242,6 +242,11 @@ crbug.com/857490 virtual/scroll_customization/fast/events/touch/gesture/pad-gest
crbug.com/857490 virtual/scroll_customization/fast/events/touch/gesture/touch-gesture-fling-with-page-scale.html [ Skip ] crbug.com/857490 virtual/scroll_customization/fast/events/touch/gesture/touch-gesture-fling-with-page-scale.html [ Skip ]
crbug.com/857490 virtual/scroll_customization/fast/scroll-behavior/scroll-customization/touch-scroll-customization.html [ Skip ] crbug.com/857490 virtual/scroll_customization/fast/scroll-behavior/scroll-customization/touch-scroll-customization.html [ Skip ]
# Currently on main thread scrolling path, scrollend gets fired without waiting for scroll/fling snap animation. (The virtual/threaded version of the test passes.)
crbug.com/907601 fast/scrolling/events/scrollend-event-fired-after-snap.html [ Skip ]
crbug.com/907601 virtual/scroll_customization/fast/scrolling/events/scrollend-event-fired-after-snap.html [ Skip ]
crbug.com/907601 external/wpt/dom/events/scrolling/scrollend-event-fired-after-snap.html [ Skip ]
crbug.com/980969 [ Mac ] http/tests/input/discard-events-to-unstable-iframe.html [ Pass Failure ] crbug.com/980969 [ Mac ] http/tests/input/discard-events-to-unstable-iframe.html [ Pass Failure ]
# Display locking, run highlight-display-locked.js only with display locking. # Display locking, run highlight-display-locked.js only with display locking.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment