- Mouse wheel events synthesized by OSX for momentum scrolling can now
be interrupted by DOM triggered and CSS scroll snapping triggered scroll
events for consistent behavior with the scrolling and fling gestures
in the APZC.
- Added SCROLL_SMOOTH_AUTO flag to nsIPresShell to enable selection of
scroll behavior through CSS.
- Updated Element and Window scrolling DOM methods to enable smooth scrolling
set through the scroll-behavior CSS property.
- Keyboard, scroll bar, mousewheel, and any other events that scroll smoothly
with the general.smoothScroll preference enabled will now scroll instantly
if the scroll frame has "scroll-behavior: instant" applied through CSS.
When we have a display port the dirty rect for root scroll frames is going to be the display port already when it is passed in. The display port can contain a somewhat arbitrary area of the scroll frame, there is no reason is has to include the scrollbars, which are laid out at the desktop scrollport (and adjusted as necessary in the compositor).
As well as BuildDisplayListForChild, we need the dirty rect to be set for the creation of the nsDisplayWrapList or nsDisplayOwnLayer in AppendToTop.
- Extended nsIScrollableFrame and nsGfxScrollFrame to return destination
of smooth scrolls which are to be animated on the compositor thread.
- Added apz.smooth_scroll_repaint_interval preference.
- Implemented AsyncPanZoomController::PanZoomState::SMOOTH_MSD_SCROLL state
and AsyncPanZoomController::SmoothScrollAnimation class to animate smooth
scroll animations on the compositor thread.
- Extended FrameMetrics to report requests for smooth scrolls to be animated
on the compositor thread and their corresponding destination positions.
- AsyncPanZoomController now checks FrameMetrics for requests to perform
smooth scrolling on the compositor thread. It will ensure that they
are cancelled as needed by mousewheel, touchpanel, keyboard, and
CSSOM-View instant scrolling DOM methods.
- The layout/generic/test/test_scroll_behavior.html mochitest has been
commented as depending on Bug 1062609 before being enabled for APZ.
- When a smooth scroll is being processed on a frame, mouse wheel and trackpad
momentum scroll event updates will no longer cancel the SMOOTH or SMOOTH_MSD
scroll animations, enabling scripts that depend on them to be responsive
without forcing the user to wait for the fling animations to completely stop.
- Added nsIScrollableFrame::ScrollMode::SMOOTH_MSD to differentiate
existing smooth scrolls used by keyboard and mousewheel events from the
CSSOM-View scroll-behavior's MSD motion scrolling.
- Implemented ScrollFrameHelper::AsyncSmoothMSDScroll, which takes the role
of ScrollFrameHelper::AsyncScroll when SMOOTH_MSD scrolls are requested.
- Implemented glue code to handle callbacks from AsyncSmoothMSDScroll and
to hand off velocity between the classes when one scroll animation is
interrupted by another.