The existing Scroll Snap code on Mac relied on the DOM event bubbling phase to make sure the Scroll Snap animations to be triggered. Now that we do not pass these "no motion" events through the DOM event handler chain, the snap animations are not being triggered and the whole feature stops working.
<rdar://problem/19898333>
Created attachment 246972 [details] Patch
Created attachment 246974 [details] Patch v2 (fix iOS build)
Comment on attachment 246974 [details] Patch v2 (fix iOS build) View in context: https://bugs.webkit.org/attachment.cgi?id=246974&action=review > Source/WebCore/page/mac/EventHandlerMac.mm:991 > + if (scrollableArea->existingScrollAnimator()) > + scrollableArea->scrollAnimator()->processWheelEventForScrollSnap(wheelEvent); Maybe if (ScrollAnimator* animator = scrollableArea->existingScrollAnimator()) scrollAnimator->processWheelEventForScrollSnap().
Comment on attachment 246974 [details] Patch v2 (fix iOS build) View in context: https://bugs.webkit.org/attachment.cgi?id=246974&action=review >> Source/WebCore/page/mac/EventHandlerMac.mm:991 >> + scrollableArea->scrollAnimator()->processWheelEventForScrollSnap(wheelEvent); > > Maybe if (ScrollAnimator* animator = scrollableArea->existingScrollAnimator()) scrollAnimator->processWheelEventForScrollSnap(). Sure! I'll do that.
Comment on attachment 246974 [details] Patch v2 (fix iOS build) View in context: https://bugs.webkit.org/attachment.cgi?id=246974&action=review >>> Source/WebCore/page/mac/EventHandlerMac.mm:991 >>> + scrollableArea->scrollAnimator()->processWheelEventForScrollSnap(wheelEvent); >> >> Maybe if (ScrollAnimator* animator = scrollableArea->existingScrollAnimator()) scrollAnimator->processWheelEventForScrollSnap(). > > Sure! I'll do that. Couldn't we use reference here instead? -EventHandler::handleWheelEvent() already has checks against scrollableArea != nullptr in some places.
Comment on attachment 246974 [details] Patch v2 (fix iOS build) View in context: https://bugs.webkit.org/attachment.cgi?id=246974&action=review >>>> Source/WebCore/page/mac/EventHandlerMac.mm:991 >>>> + scrollableArea->scrollAnimator()->processWheelEventForScrollSnap(wheelEvent); >>> >>> Maybe if (ScrollAnimator* animator = scrollableArea->existingScrollAnimator()) scrollAnimator->processWheelEventForScrollSnap(). >> >> Sure! I'll do that. > > Couldn't we use reference here instead? -EventHandler::handleWheelEvent() already has checks against scrollableArea != nullptr in some places. Actually, that's a good point. We should be checking scrollableArea for nullptr (or in the caller) because there are code paths where it may be null. I'll correct that before landing.
Committed r180426: <http://trac.webkit.org/changeset/180426>