Index: third_party/WebKit/Source/core/frame/RootFrameViewport.cpp |
diff --git a/third_party/WebKit/Source/core/frame/RootFrameViewport.cpp b/third_party/WebKit/Source/core/frame/RootFrameViewport.cpp |
index a0ccb201b4ff0917e0f1f6ca37f8c308fe95488a..e85149cc157e12d8cbadce2cc6e2331d8f31e910 100644 |
--- a/third_party/WebKit/Source/core/frame/RootFrameViewport.cpp |
+++ b/third_party/WebKit/Source/core/frame/RootFrameViewport.cpp |
@@ -49,25 +49,25 @@ LayoutRect RootFrameViewport::rootContentsToLayoutViewportContents( |
// by adding the scroll position. |
// TODO(bokan): This will have to be revisited if we ever remove the |
// restriction that a root scroller must be exactly screen filling. |
- ret.moveBy(LayoutPoint(layoutViewport().scrollPositionDouble())); |
+ ret.moveBy(LayoutPoint(FloatPoint((layoutViewport().scrollOffset())))); |
bokan
2016/10/02 19:47:51
ret.move()
szager1
2016/10/05 07:43:36
Done.
|
return ret; |
} |
-void RootFrameViewport::restoreToAnchor(const DoublePoint& targetPosition) { |
+void RootFrameViewport::restoreToAnchor(const ScrollOffset& targetOffset) { |
// Clamp the scroll offset of each viewport now so that we force any invalid |
// offsets to become valid so we can compute the correct deltas. |
- visualViewport().setScrollPosition(visualViewport().scrollPositionDouble(), |
- ProgrammaticScroll); |
- layoutViewport().setScrollPosition(layoutViewport().scrollPositionDouble(), |
- ProgrammaticScroll); |
+ visualViewport().setScrollOffset(visualViewport().scrollOffset(), |
+ ProgrammaticScroll); |
+ layoutViewport().setScrollOffset(layoutViewport().scrollOffset(), |
+ ProgrammaticScroll); |
- DoubleSize delta = targetPosition - scrollPositionDouble(); |
+ ScrollOffset delta = targetOffset - scrollOffset(); |
- visualViewport().setScrollPosition( |
- visualViewport().scrollPositionDouble() + delta, ProgrammaticScroll); |
+ visualViewport().setScrollOffset(visualViewport().scrollOffset() + delta, |
+ ProgrammaticScroll); |
- delta = targetPosition - scrollPositionDouble(); |
+ delta = targetOffset - scrollOffset(); |
// Since the main thread FrameView has integer scroll offsets, scroll it to |
// the next pixel and then we'll scroll the visual viewport again to |
@@ -78,12 +78,13 @@ void RootFrameViewport::restoreToAnchor(const DoublePoint& targetPosition) { |
delta.width() < 0 ? floor(delta.width()) : ceil(delta.width()), |
delta.height() < 0 ? floor(delta.height()) : ceil(delta.height())); |
- layoutViewport().setScrollPosition( |
- layoutViewport().scrollPosition() + layoutDelta, ProgrammaticScroll); |
+ layoutViewport().setScrollOffset( |
+ ScrollOffset(layoutViewport().scrollOffsetInt() + layoutDelta), |
+ ProgrammaticScroll); |
- delta = targetPosition - scrollPositionDouble(); |
- visualViewport().setScrollPosition( |
- visualViewport().scrollPositionDouble() + delta, ProgrammaticScroll); |
+ delta = targetOffset - scrollOffset(); |
+ visualViewport().setScrollOffset(visualViewport().scrollOffset() + delta, |
+ ProgrammaticScroll); |
} |
void RootFrameViewport::didUpdateVisualViewport() { |
@@ -98,25 +99,20 @@ LayoutBox* RootFrameViewport::layoutBox() const { |
} |
void RootFrameViewport::updateScrollAnimator() { |
- scrollAnimator().setCurrentPosition( |
- toFloatPoint(scrollOffsetFromScrollAnimators())); |
+ scrollAnimator().setCurrentOffset( |
+ toFloatSize(scrollOffsetFromScrollAnimators())); |
} |
-DoublePoint RootFrameViewport::scrollOffsetFromScrollAnimators() const { |
- return visualViewport().scrollAnimator().currentPosition() + |
- layoutViewport().scrollAnimator().currentPosition(); |
-} |
- |
-DoubleRect RootFrameViewport::visibleContentRectDouble( |
- IncludeScrollbarsInRect scrollbarInclusion) const { |
- return DoubleRect( |
- scrollPositionDouble(), |
- visualViewport().visibleContentRectDouble(scrollbarInclusion).size()); |
+ScrollOffset RootFrameViewport::scrollOffsetFromScrollAnimators() const { |
+ return visualViewport().scrollAnimator().currentOffset() + |
+ layoutViewport().scrollAnimator().currentOffset(); |
} |
IntRect RootFrameViewport::visibleContentRect( |
IncludeScrollbarsInRect scrollbarInclusion) const { |
- return enclosingIntRect(visibleContentRectDouble(scrollbarInclusion)); |
+ return IntRect( |
+ IntPoint(scrollOffsetInt()), |
+ visualViewport().visibleContentRect(scrollbarInclusion).size()); |
} |
bool RootFrameViewport::shouldUseIntegerScrollOffset() const { |
@@ -131,7 +127,8 @@ bool RootFrameViewport::isActive() const { |
} |
int RootFrameViewport::scrollSize(ScrollbarOrientation orientation) const { |
- IntSize scrollDimensions = maximumScrollPosition() - minimumScrollPosition(); |
+ IntSize scrollDimensions = |
+ maximumScrollOffsetInt() - minimumScrollOffsetInt(); |
return (orientation == HorizontalScrollbar) ? scrollDimensions.width() |
: scrollDimensions.height(); |
} |
@@ -144,9 +141,9 @@ IntRect RootFrameViewport::scrollCornerRect() const { |
return layoutViewport().scrollCornerRect(); |
} |
-void RootFrameViewport::setScrollPosition(const DoublePoint& position, |
- ScrollType scrollType, |
- ScrollBehavior scrollBehavior) { |
+void RootFrameViewport::setScrollOffset(const ScrollOffset& offset, |
+ ScrollType scrollType, |
+ ScrollBehavior scrollBehavior) { |
updateScrollAnimator(); |
if (scrollBehavior == ScrollBehaviorAuto) |
@@ -157,20 +154,19 @@ void RootFrameViewport::setScrollPosition(const DoublePoint& position, |
return; |
if (scrollType == AnchoringScroll) { |
- distributeScrollBetweenViewports(position, scrollType, scrollBehavior, |
+ distributeScrollBetweenViewports(offset, scrollType, scrollBehavior, |
LayoutViewport); |
return; |
} |
if (scrollBehavior == ScrollBehaviorSmooth) { |
- distributeScrollBetweenViewports(position, scrollType, scrollBehavior, |
+ distributeScrollBetweenViewports(offset, scrollType, scrollBehavior, |
VisualViewport); |
return; |
} |
- DoublePoint clampedPosition = clampScrollPosition(position); |
- ScrollableArea::setScrollPosition(clampedPosition, scrollType, |
- scrollBehavior); |
+ ScrollOffset clampedOffset = clampScrollOffset(offset); |
+ ScrollableArea::setScrollOffset(clampedOffset, scrollType, scrollBehavior); |
} |
ScrollBehavior RootFrameViewport::scrollBehaviorStyle() const { |
@@ -183,46 +179,47 @@ LayoutRect RootFrameViewport::scrollIntoView(const LayoutRect& rectInContent, |
ScrollType scrollType) { |
// We want to move the rect into the viewport that excludes the scrollbars so we intersect |
// the visual viewport with the scrollbar-excluded frameView content rect. However, we don't |
- // use visibleContentRect directly since it floors the scroll position. Instead, we use |
- // ScrollAnimatorBase::currentPosition and construct a LayoutRect from that. |
+ // use visibleContentRect directly since it floors the scroll offset. Instead, we use |
+ // ScrollAnimatorBase::currentOffset and construct a LayoutRect from that. |
LayoutRect frameRectInContent = |
- LayoutRect(layoutViewport().scrollAnimator().currentPosition(), |
- layoutViewport().visibleContentRect().size()); |
+ LayoutRect(FloatPoint(layoutViewport().scrollAnimator().currentOffset()), |
+ FloatSize(layoutViewport().visibleContentRect().size())); |
LayoutRect visualRectInContent = |
- LayoutRect(scrollOffsetFromScrollAnimators(), |
- visualViewport().visibleContentRect().size()); |
+ LayoutRect(FloatPoint(scrollOffsetFromScrollAnimators()), |
+ FloatSize(visualViewport().visibleContentRect().size())); |
// Intersect layout and visual rects to exclude the scrollbar from the view rect. |
LayoutRect viewRectInContent = |
intersection(visualRectInContent, frameRectInContent); |
LayoutRect targetViewport = ScrollAlignment::getRectToExpose( |
viewRectInContent, rectInContent, alignX, alignY); |
- if (targetViewport != viewRectInContent) |
- setScrollPosition(DoublePoint(targetViewport.x(), targetViewport.y()), |
- scrollType); |
+ if (targetViewport != viewRectInContent) { |
+ setScrollOffset(ScrollOffset(targetViewport.x(), targetViewport.y()), |
+ scrollType); |
+ } |
// RootFrameViewport only changes the viewport relative to the document so we can't change the input |
// rect's location relative to the document origin. |
return rectInContent; |
} |
-void RootFrameViewport::updateScrollPosition(const DoublePoint& position, |
- ScrollType scrollType) { |
- distributeScrollBetweenViewports(DoublePoint(position), scrollType, |
- ScrollBehaviorInstant, VisualViewport); |
+void RootFrameViewport::updateScrollOffset(const ScrollOffset& offset, |
+ ScrollType scrollType) { |
+ distributeScrollBetweenViewports(offset, scrollType, ScrollBehaviorInstant, |
+ VisualViewport); |
} |
void RootFrameViewport::distributeScrollBetweenViewports( |
- const DoublePoint& position, |
+ const ScrollOffset& offset, |
ScrollType scrollType, |
ScrollBehavior behavior, |
ViewportToScrollFirst scrollFirst) { |
- // Make sure we use the scroll positions as reported by each viewport's ScrollAnimatorBase, since its |
- // ScrollableArea's position may have the fractional part truncated off. |
- DoublePoint oldPosition = scrollOffsetFromScrollAnimators(); |
+ // Make sure we use the scroll offsets as reported by each viewport's ScrollAnimatorBase, since its |
+ // ScrollableArea's offset may have the fractional part truncated off. |
bokan
2016/10/02 19:47:50
Please add a TODO to revisit this now that the off
szager1
2016/10/05 07:43:36
Done.
|
+ ScrollOffset oldOffset = scrollOffsetFromScrollAnimators(); |
- DoubleSize delta = position - oldPosition; |
+ ScrollOffset delta = offset - oldOffset; |
if (delta.isZero()) |
return; |
@@ -232,48 +229,47 @@ void RootFrameViewport::distributeScrollBetweenViewports( |
ScrollableArea& secondary = |
scrollFirst == VisualViewport ? layoutViewport() : visualViewport(); |
- DoublePoint targetPosition = primary.clampScrollPosition( |
- primary.scrollAnimator().currentPosition() + delta); |
+ ScrollOffset targetOffset = primary.clampScrollOffset( |
+ primary.scrollAnimator().currentOffset() + delta); |
- primary.setScrollPosition(targetPosition, scrollType, behavior); |
+ primary.setScrollOffset(targetOffset, scrollType, behavior); |
// Scroll the secondary viewport if all of the scroll was not applied to the |
// primary viewport. |
- DoublePoint updatedPosition = |
- secondary.scrollAnimator().currentPosition() + FloatPoint(targetPosition); |
- DoubleSize applied = updatedPosition - oldPosition; |
+ ScrollOffset updatedOffset = |
+ secondary.scrollAnimator().currentOffset() + FloatSize(targetOffset); |
+ ScrollOffset applied = updatedOffset - oldOffset; |
delta -= applied; |
if (delta.isZero()) |
return; |
- targetPosition = secondary.clampScrollPosition( |
- secondary.scrollAnimator().currentPosition() + delta); |
- secondary.setScrollPosition(targetPosition, scrollType, behavior); |
+ targetOffset = secondary.clampScrollOffset( |
+ secondary.scrollAnimator().currentOffset() + delta); |
+ secondary.setScrollOffset(targetOffset, scrollType, behavior); |
} |
-IntPoint RootFrameViewport::scrollPosition() const { |
- return flooredIntPoint(scrollPositionDouble()); |
+IntSize RootFrameViewport::scrollOffsetInt() const { |
+ return flooredIntSize(scrollOffset()); |
} |
-DoublePoint RootFrameViewport::scrollPositionDouble() const { |
- return layoutViewport().scrollPositionDouble() + |
- toDoubleSize(visualViewport().scrollPositionDouble()); |
+ScrollOffset RootFrameViewport::scrollOffset() const { |
+ return layoutViewport().scrollOffset() + visualViewport().scrollOffset(); |
} |
-IntPoint RootFrameViewport::minimumScrollPosition() const { |
- return IntPoint(layoutViewport().minimumScrollPosition() + |
- visualViewport().minimumScrollPosition()); |
+IntSize RootFrameViewport::minimumScrollOffsetInt() const { |
+ return IntSize(layoutViewport().minimumScrollOffsetInt() + |
+ visualViewport().minimumScrollOffsetInt()); |
} |
-IntPoint RootFrameViewport::maximumScrollPosition() const { |
- return layoutViewport().maximumScrollPosition() + |
- visualViewport().maximumScrollPosition(); |
+IntSize RootFrameViewport::maximumScrollOffsetInt() const { |
+ return layoutViewport().maximumScrollOffsetInt() + |
+ visualViewport().maximumScrollOffsetInt(); |
} |
-DoublePoint RootFrameViewport::maximumScrollPositionDouble() const { |
- return layoutViewport().maximumScrollPositionDouble() + |
- toDoubleSize(visualViewport().maximumScrollPositionDouble()); |
+ScrollOffset RootFrameViewport::maximumScrollOffset() const { |
+ return layoutViewport().maximumScrollOffset() + |
+ visualViewport().maximumScrollOffset(); |
} |
IntSize RootFrameViewport::contentsSize() const { |