| Index: third_party/WebKit/Source/core/page/scrolling/SnapCoordinator.cpp
|
| diff --git a/third_party/WebKit/Source/core/page/scrolling/SnapCoordinator.cpp b/third_party/WebKit/Source/core/page/scrolling/SnapCoordinator.cpp
|
| index 5762342d791e277c83062282b04b168fe34e445e..63f9dfdfe34cc7d4b7a774f734d4c5150bfc0fc9 100644
|
| --- a/third_party/WebKit/Source/core/page/scrolling/SnapCoordinator.cpp
|
| +++ b/third_party/WebKit/Source/core/page/scrolling/SnapCoordinator.cpp
|
| @@ -43,10 +43,10 @@ static LayoutBox* FindSnapContainer(const LayoutBox& snap_area) {
|
| return box;
|
| }
|
|
|
| -void SnapCoordinator::SnapAreaDidChange(
|
| - LayoutBox& snap_area,
|
| - const Vector<LengthPoint>& snap_coordinates) {
|
| - if (snap_coordinates.IsEmpty()) {
|
| +void SnapCoordinator::SnapAreaDidChange(LayoutBox& snap_area,
|
| + ScrollSnapAlign scroll_snap_align) {
|
| + if (scroll_snap_align.alignmentX == kSnapAlignmentNone &&
|
| + scroll_snap_align.alignmentY == kSnapAlignmentNone) {
|
| snap_area.SetSnapContainer(nullptr);
|
| return;
|
| }
|
| @@ -62,7 +62,7 @@ void SnapCoordinator::SnapAreaDidChange(
|
|
|
| void SnapCoordinator::SnapContainerDidChange(LayoutBox& snap_container,
|
| ScrollSnapType scroll_snap_type) {
|
| - if (scroll_snap_type == kScrollSnapTypeNone) {
|
| + if (scroll_snap_type.axis == kSnapAxisNone) {
|
| // TODO(majidvp): Track and report these removals to CompositorWorker
|
| // instance responsible for snapping
|
| snap_containers_.erase(&snap_container);
|
| @@ -79,88 +79,6 @@ void SnapCoordinator::SnapContainerDidChange(LayoutBox& snap_container,
|
| // container or from existing areas in orphan pool.
|
| }
|
|
|
| -// Translate local snap coordinates into snap container's scrolling content
|
| -// coordinate space.
|
| -static Vector<FloatPoint> LocalToContainerSnapCoordinates(
|
| - const LayoutBox& container_box,
|
| - const LayoutBox& snap_area) {
|
| - Vector<FloatPoint> result;
|
| - LayoutPoint scroll_offset(container_box.ScrollLeft(),
|
| - container_box.ScrollTop());
|
| -
|
| - const Vector<LengthPoint>& snap_coordinates =
|
| - snap_area.Style()->ScrollSnapCoordinate();
|
| - for (auto& coordinate : snap_coordinates) {
|
| - FloatPoint local_point =
|
| - FloatPointForLengthPoint(coordinate, FloatSize(snap_area.Size()));
|
| - FloatPoint container_point =
|
| - snap_area.LocalToAncestorPoint(local_point, &container_box);
|
| - container_point.MoveBy(scroll_offset);
|
| - result.push_back(container_point);
|
| - }
|
| - return result;
|
| -}
|
| -
|
| -Vector<double> SnapCoordinator::SnapOffsets(const ContainerNode& element,
|
| - ScrollbarOrientation orientation) {
|
| - const ComputedStyle* style = element.GetComputedStyle();
|
| - const LayoutBox* snap_container = element.GetLayoutBox();
|
| - DCHECK(style);
|
| - DCHECK(snap_container);
|
| -
|
| - Vector<double> result;
|
| -
|
| - if (style->GetScrollSnapType() == kScrollSnapTypeNone)
|
| - return result;
|
| -
|
| - const ScrollSnapPoints& snap_points = (orientation == kHorizontalScrollbar)
|
| - ? style->ScrollSnapPointsX()
|
| - : style->ScrollSnapPointsY();
|
| -
|
| - LayoutUnit client_size = (orientation == kHorizontalScrollbar)
|
| - ? snap_container->ClientWidth()
|
| - : snap_container->ClientHeight();
|
| - LayoutUnit scroll_size = (orientation == kHorizontalScrollbar)
|
| - ? snap_container->ScrollWidth()
|
| - : snap_container->ScrollHeight();
|
| -
|
| - if (snap_points.has_repeat) {
|
| - LayoutUnit repeat = ValueForLength(snap_points.repeat_offset, client_size);
|
| -
|
| - // calc() values may be negative or zero in which case we clamp them to 1px.
|
| - // See: https://lists.w3.org/Archives/Public/www-style/2015Jul/0075.html
|
| - repeat = std::max<LayoutUnit>(repeat, LayoutUnit(1));
|
| - for (LayoutUnit offset = repeat; offset <= (scroll_size - client_size);
|
| - offset += repeat) {
|
| - result.push_back(offset.ToFloat());
|
| - }
|
| - }
|
| -
|
| - // Compute element-based snap points by mapping the snap coordinates from
|
| - // snap areas to snap container.
|
| - bool did_add_snap_area_offset = false;
|
| - if (SnapAreaSet* snap_areas = snap_container->SnapAreas()) {
|
| - for (auto& snap_area : *snap_areas) {
|
| - Vector<FloatPoint> snap_coordinates =
|
| - LocalToContainerSnapCoordinates(*snap_container, *snap_area);
|
| - for (const FloatPoint& snap_coordinate : snap_coordinates) {
|
| - float snap_offset = (orientation == kHorizontalScrollbar)
|
| - ? snap_coordinate.X()
|
| - : snap_coordinate.Y();
|
| - if (snap_offset > scroll_size - client_size)
|
| - continue;
|
| - result.push_back(snap_offset);
|
| - did_add_snap_area_offset = true;
|
| - }
|
| - }
|
| - }
|
| -
|
| - if (did_add_snap_area_offset)
|
| - std::sort(result.begin(), result.end());
|
| -
|
| - return result;
|
| -}
|
| -
|
| #ifndef NDEBUG
|
|
|
| void SnapCoordinator::ShowSnapAreaMap() {
|
|
|