Chromium Code Reviews| Index: third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp |
| diff --git a/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp b/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp |
| index 1e6b1b694ac7b88a8a454348bce30302a726f0e7..774c5c8f71b5d5013f3a67f04369c2e63a38e2c3 100644 |
| --- a/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp |
| +++ b/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp |
| @@ -1210,6 +1210,21 @@ double LocalDOMWindow::devicePixelRatio() const { |
| return GetFrame()->DevicePixelRatio(); |
| } |
| +void LocalDOMWindow::scrollHelper(ScrollableArea* viewport, |
|
bokan
2017/05/19 18:37:14
This name is too generic. Maybe "scrollViewportTo"
sunyunjia
2017/05/19 22:30:41
Done.
|
| + const ScrollOffset& offset, |
| + ScrollBehavior scroll_behavior) const { |
| + if (SmoothScrollSequencer* sequencer = |
| + GetFrame()->GetPage()->GetSmoothScrollSequencer()) { |
| + sequencer->AbortAnimations(); |
| + if (scroll_behavior == kScrollBehaviorInstant) { |
| + viewport->SetScrollOffset(offset, kProgrammaticScroll, scroll_behavior); |
| + } else { |
| + sequencer->QueueAnimation(viewport, offset); |
| + sequencer->RunQueuedAnimations(); |
| + } |
| + } |
| +} |
| + |
| void LocalDOMWindow::scrollBy(double x, |
| double y, |
| ScrollBehavior scroll_behavior) const { |
| @@ -1237,8 +1252,7 @@ void LocalDOMWindow::scrollBy(double x, |
| ScrollOffset scaled_delta(x * GetFrame()->PageZoomFactor(), |
| y * GetFrame()->PageZoomFactor()); |
| - viewport->SetScrollOffset(current_offset + scaled_delta, kProgrammaticScroll, |
| - scroll_behavior); |
| + scrollHelper(viewport, current_offset + scaled_delta, scroll_behavior); |
| } |
| void LocalDOMWindow::scrollBy(const ScrollToOptions& scroll_to_options) const { |
| @@ -1279,8 +1293,7 @@ void LocalDOMWindow::scrollTo(double x, double y) const { |
| ScrollableArea* viewport = page->GetSettings().GetInertVisualViewport() |
| ? view->LayoutViewportScrollableArea() |
| : view->GetScrollableArea(); |
| - viewport->SetScrollOffset(layout_offset, kProgrammaticScroll, |
| - kScrollBehaviorAuto); |
| + scrollHelper(viewport, layout_offset, kScrollBehaviorAuto); |
| } |
| void LocalDOMWindow::scrollTo(const ScrollToOptions& scroll_to_options) const { |
| @@ -1327,8 +1340,7 @@ void LocalDOMWindow::scrollTo(const ScrollToOptions& scroll_to_options) const { |
| ScrollableArea::ScrollBehaviorFromString(scroll_to_options.behavior(), |
| scroll_behavior); |
| - viewport->SetScrollOffset(ScrollOffset(scaled_x, scaled_y), |
| - kProgrammaticScroll, scroll_behavior); |
| + scrollHelper(viewport, ScrollOffset(scaled_x, scaled_y), scroll_behavior); |
| } |
| void LocalDOMWindow::moveBy(int x, int y) const { |