Index: third_party/WebKit/Source/web/tests/VisualViewportTest.cpp |
diff --git a/third_party/WebKit/Source/web/tests/VisualViewportTest.cpp b/third_party/WebKit/Source/web/tests/VisualViewportTest.cpp |
index ba2bf1ce5730f1abc0c99a5b51c037aaf0299bfd..6a06e377bfc6ef12e09ece72292c01455913fcd9 100644 |
--- a/third_party/WebKit/Source/web/tests/VisualViewportTest.cpp |
+++ b/third_party/WebKit/Source/web/tests/VisualViewportTest.cpp |
@@ -46,6 +46,12 @@ |
ASSERT_EQ((expected).y(), (actual).y()); \ |
} while (false) |
+#define ASSERT_SIZE_EQ(expected, actual) \ |
+ do { \ |
+ ASSERT_EQ((expected).width(), (actual).width()); \ |
+ ASSERT_EQ((expected).height(), (actual).height()); \ |
+ } while (false) |
+ |
#define EXPECT_POINT_EQ(expected, actual) \ |
do { \ |
EXPECT_EQ((expected).x(), (actual).x()); \ |
@@ -240,18 +246,17 @@ TEST_P(ParameterizedVisualViewportTest, |
visualViewport.setScale(2); |
// Fully scroll both viewports. |
- frameView.layoutViewportScrollableArea()->setScrollPosition( |
- DoublePoint(10000, 10000), ProgrammaticScroll); |
+ frameView.layoutViewportScrollableArea()->setScrollOffset( |
+ ScrollOffset(10000, 10000), ProgrammaticScroll); |
visualViewport.move(FloatSize(10000, 10000)); |
// Sanity check. |
- ASSERT_POINT_EQ(FloatPoint(400, 300), visualViewport.location()); |
- ASSERT_POINT_EQ( |
- DoublePoint(200, 1400), |
- frameView.layoutViewportScrollableArea()->scrollPositionDouble()); |
+ ASSERT_SIZE_EQ(FloatSize(400, 300), visualViewport.scrollOffset()); |
+ ASSERT_SIZE_EQ(ScrollOffset(200, 1400), |
+ frameView.layoutViewportScrollableArea()->scrollOffset()); |
- DoublePoint expectedLocation = |
- frameView.getScrollableArea()->visibleContentRectDouble().location(); |
+ IntPoint expectedLocation = |
+ frameView.getScrollableArea()->visibleContentRect().location(); |
// Shrink the WebView, this should cause both viewports to shrink and |
// WebView should do whatever it needs to do to preserve the visible |
@@ -260,13 +265,13 @@ TEST_P(ParameterizedVisualViewportTest, |
EXPECT_POINT_EQ( |
expectedLocation, |
- frameView.getScrollableArea()->visibleContentRectDouble().location()); |
+ frameView.getScrollableArea()->visibleContentRect().location()); |
webViewImpl()->resize(IntSize(800, 600)); |
EXPECT_POINT_EQ( |
expectedLocation, |
- frameView.getScrollableArea()->visibleContentRectDouble().location()); |
+ frameView.getScrollableArea()->visibleContentRect().location()); |
} |
// Test that the VisualViewport works as expected in case of a scaled |
@@ -312,9 +317,9 @@ TEST_P(ParameterizedVisualViewportTest, TestResizeAfterVerticalScroll) { |
// Scroll main frame to the bottom of the document |
webViewImpl()->mainFrame()->setScrollOffset(WebSize(0, 400)); |
- EXPECT_POINT_EQ( |
- IntPoint(0, 400), |
- frame()->view()->layoutViewportScrollableArea()->scrollPosition()); |
+ EXPECT_SIZE_EQ( |
+ ScrollOffset(0, 400), |
+ frame()->view()->layoutViewportScrollableArea()->scrollOffset()); |
webViewImpl()->setPageScaleFactor(2.0); |
@@ -322,7 +327,7 @@ TEST_P(ParameterizedVisualViewportTest, TestResizeAfterVerticalScroll) { |
VisualViewport& visualViewport = |
frame()->page()->frameHost().visualViewport(); |
visualViewport.setLocation(FloatPoint(0, 300)); |
- EXPECT_FLOAT_POINT_EQ(FloatPoint(0, 300), visualViewport.location()); |
+ EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 300), visualViewport.scrollOffset()); |
// Verify the initial size of the visual viewport in the CSS pixels |
EXPECT_FLOAT_SIZE_EQ(FloatSize(50, 100), visualViewport.visibleRect().size()); |
@@ -333,10 +338,10 @@ TEST_P(ParameterizedVisualViewportTest, TestResizeAfterVerticalScroll) { |
// After resizing the scale changes 2.0 -> 4.0 |
EXPECT_FLOAT_SIZE_EQ(FloatSize(50, 25), visualViewport.visibleRect().size()); |
- EXPECT_POINT_EQ( |
- IntPoint(0, 625), |
- frame()->view()->layoutViewportScrollableArea()->scrollPosition()); |
- EXPECT_FLOAT_POINT_EQ(FloatPoint(0, 75), visualViewport.location()); |
+ EXPECT_SIZE_EQ( |
+ ScrollOffset(0, 625), |
+ frame()->view()->layoutViewportScrollableArea()->scrollOffset()); |
+ EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 75), visualViewport.scrollOffset()); |
} |
// Test that the VisualViewport works as expected in case if a scaled |
@@ -390,7 +395,7 @@ TEST_P(ParameterizedVisualViewportTest, TestResizeAfterHorizontalScroll) { |
VisualViewport& visualViewport = |
frame()->page()->frameHost().visualViewport(); |
visualViewport.setLocation(FloatPoint(150, 0)); |
- EXPECT_FLOAT_POINT_EQ(FloatPoint(150, 0), visualViewport.location()); |
+ EXPECT_FLOAT_SIZE_EQ(FloatSize(150, 0), visualViewport.scrollOffset()); |
// Verify the initial size of the visual viewport in the CSS pixels |
EXPECT_FLOAT_SIZE_EQ(FloatSize(50, 100), visualViewport.visibleRect().size()); |
@@ -400,8 +405,8 @@ TEST_P(ParameterizedVisualViewportTest, TestResizeAfterHorizontalScroll) { |
// After resizing the scale changes 2.0 -> 4.0 |
EXPECT_FLOAT_SIZE_EQ(FloatSize(50, 25), visualViewport.visibleRect().size()); |
- EXPECT_POINT_EQ(IntPoint(0, 0), frame()->view()->scrollPosition()); |
- EXPECT_FLOAT_POINT_EQ(FloatPoint(150, 0), visualViewport.location()); |
+ EXPECT_SIZE_EQ(ScrollOffset(0, 0), frame()->view()->scrollOffset()); |
+ EXPECT_FLOAT_SIZE_EQ(FloatSize(150, 0), visualViewport.scrollOffset()); |
} |
// Test that the container layer gets sized properly if the WebView is resized |
@@ -501,8 +506,8 @@ TEST_P(ParameterizedVisualViewportTest, TestVisibleRectInDocument) { |
// Scroll the layout viewport. Ensure its offset is reflected in |
// visibleRectInDocument(). |
FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); |
- frameView.layoutViewportScrollableArea()->setScrollPosition( |
- DoublePoint(40, 100), ProgrammaticScroll); |
+ frameView.layoutViewportScrollableArea()->setScrollOffset( |
+ ScrollOffset(40, 100), ProgrammaticScroll); |
EXPECT_FLOAT_RECT_EQ(FloatRect(50, 115, 50, 200), |
visualViewport.visibleRectInDocument()); |
} |
@@ -520,14 +525,13 @@ TEST_P(ParameterizedVisualViewportTest, |
navigateTo(m_baseURL + "200-by-800-viewport.html"); |
FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); |
- frameView.layoutViewportScrollableArea()->setScrollPosition( |
- DoublePoint(0, 10.5), ProgrammaticScroll); |
- frameView.layoutViewportScrollableArea()->ScrollableArea::setScrollPosition( |
- DoublePoint(10, 30.5), CompositorScroll); |
+ frameView.layoutViewportScrollableArea()->setScrollOffset( |
+ ScrollOffset(0, 10.5), ProgrammaticScroll); |
+ frameView.layoutViewportScrollableArea()->ScrollableArea::setScrollOffset( |
+ ScrollOffset(10, 30.5), CompositorScroll); |
- EXPECT_EQ( |
- 30.5, |
- frameView.layoutViewportScrollableArea()->scrollPositionDouble().y()); |
+ EXPECT_EQ(30.5, |
+ frameView.layoutViewportScrollableArea()->scrollOffset().height()); |
RuntimeEnabledFeatures::setFractionalScrollOffsetsEnabled( |
origFractionalOffsetsEnabled); |
@@ -766,10 +770,10 @@ TEST_P(ParameterizedVisualViewportTest, |
VisualViewport& visualViewport = |
frame()->page()->frameHost().visualViewport(); |
visualViewport.setScale(2); |
- visualViewport.move(FloatPoint(50, 60)); |
+ visualViewport.move(ScrollOffset(50, 60)); |
// Move and scale the viewport to make sure it gets reset in the navigation. |
- EXPECT_POINT_EQ(FloatPoint(50, 60), visualViewport.location()); |
+ EXPECT_SIZE_EQ(FloatSize(50, 60), visualViewport.scrollOffset()); |
EXPECT_EQ(2, visualViewport.scale()); |
// Navigate again, this time the FrameView should be smaller. |
@@ -780,7 +784,7 @@ TEST_P(ParameterizedVisualViewportTest, |
EXPECT_SIZE_EQ(FloatSize(320, 240), visualViewport.scrollLayer()->size()); |
// Ensure the location and scale were reset. |
- EXPECT_POINT_EQ(FloatPoint(), visualViewport.location()); |
+ EXPECT_SIZE_EQ(FloatSize(), visualViewport.scrollOffset()); |
EXPECT_EQ(1, visualViewport.scale()); |
} |
@@ -866,11 +870,11 @@ TEST_P(ParameterizedVisualViewportTest, TestSavedToHistoryItem) { |
registerMockedHttpURLLoad("200-by-300.html"); |
navigateTo(m_baseURL + "200-by-300.html"); |
- EXPECT_FLOAT_POINT_EQ(FloatPoint(0, 0), |
- toLocalFrame(webViewImpl()->page()->mainFrame()) |
- ->loader() |
- .currentItem() |
- ->visualViewportScrollPoint()); |
+ EXPECT_SIZE_EQ(ScrollOffset(0, 0), |
+ toLocalFrame(webViewImpl()->page()->mainFrame()) |
+ ->loader() |
+ .currentItem() |
+ ->visualViewportScrollOffset()); |
VisualViewport& visualViewport = |
frame()->page()->frameHost().visualViewport(); |
@@ -883,11 +887,11 @@ TEST_P(ParameterizedVisualViewportTest, TestSavedToHistoryItem) { |
visualViewport.setLocation(FloatPoint(10, 20)); |
- EXPECT_FLOAT_POINT_EQ(FloatPoint(10, 20), |
- toLocalFrame(webViewImpl()->page()->mainFrame()) |
- ->loader() |
- .currentItem() |
- ->visualViewportScrollPoint()); |
+ EXPECT_SIZE_EQ(ScrollOffset(10, 20), |
+ toLocalFrame(webViewImpl()->page()->mainFrame()) |
+ ->loader() |
+ .currentItem() |
+ ->visualViewportScrollOffset()); |
} |
// Test restoring a HistoryItem properly restores the visual viewport's state. |
@@ -943,7 +947,7 @@ TEST_F(VisualViewportTest, TestRestoredFromLegacyHistoryItem) { |
VisualViewport& visualViewport = |
frame()->page()->frameHost().visualViewport(); |
EXPECT_EQ(2, visualViewport.scale()); |
- EXPECT_POINT_EQ(IntPoint(100, 150), frame()->view()->scrollPosition()); |
+ EXPECT_SIZE_EQ(ScrollOffset(100, 150), frame()->view()->scrollOffset()); |
EXPECT_FLOAT_POINT_EQ(FloatPoint(20, 30), |
visualViewport.visibleRect().location()); |
} |
@@ -960,8 +964,8 @@ TEST_P(ParameterizedVisualViewportTest, |
navigateTo(m_baseURL + "content-width-1000.html"); |
FrameView* frameView = webViewImpl()->mainFrameImpl()->frameView(); |
- frameView->layoutViewportScrollableArea()->setScrollPosition( |
- IntPoint(0, 1000), ProgrammaticScroll); |
+ frameView->layoutViewportScrollableArea()->setScrollOffset( |
+ ScrollOffset(0, 1000), ProgrammaticScroll); |
EXPECT_SIZE_EQ(IntSize(1000, 1000), frameView->frameRect().size()); |
@@ -972,7 +976,7 @@ TEST_P(ParameterizedVisualViewportTest, |
Persistent<HistoryItem> firstItem = |
webViewImpl()->mainFrameImpl()->frame()->loader().currentItem(); |
- EXPECT_POINT_EQ(IntPoint(0, 1000), firstItem->scrollPoint()); |
+ EXPECT_SIZE_EQ(ScrollOffset(0, 1000), firstItem->scrollOffset()); |
// Now navigate to a page which causes a smaller frameView. Make sure that |
// navigating doesn't cause the history item to set a new scroll offset |
@@ -983,7 +987,7 @@ TEST_P(ParameterizedVisualViewportTest, |
EXPECT_NE(firstItem, |
webViewImpl()->mainFrameImpl()->frame()->loader().currentItem()); |
EXPECT_LT(frameView->frameRect().size().width(), 1000); |
- EXPECT_POINT_EQ(IntPoint(0, 1000), firstItem->scrollPoint()); |
+ EXPECT_SIZE_EQ(ScrollOffset(0, 1000), firstItem->scrollOffset()); |
} |
// Test that the coordinates sent into moveRangeSelection are offset by the |
@@ -1017,7 +1021,7 @@ TEST_P(ParameterizedVisualViewportTest, |
// right and down one line. |
VisualViewport& visualViewport = |
frame()->page()->frameHost().visualViewport(); |
- visualViewport.move(FloatPoint(60, 25)); |
+ visualViewport.move(ScrollOffset(60, 25)); |
mainFrame->toWebLocalFrame()->moveRangeSelection(initialPoint, endPoint); |
EXPECT_EQ("t ", mainFrame->toWebLocalFrame()->selectionAsText().utf8()); |
} |
@@ -1039,20 +1043,22 @@ TEST_P(ParameterizedVisualViewportTest, |
visualViewport.setLocation(FloatPoint()); |
webViewImpl()->scrollFocusedEditableElementIntoRect(IntRect(0, 0, 500, 200)); |
- EXPECT_POINT_EQ(IntPoint(0, frame()->view()->maximumScrollPosition().y()), |
- frame()->view()->scrollPosition()); |
+ EXPECT_SIZE_EQ( |
+ ScrollOffset(0, frame()->view()->maximumScrollOffset().height()), |
+ frame()->view()->scrollOffset()); |
EXPECT_FLOAT_POINT_EQ(FloatPoint(150, 200), |
visualViewport.visibleRect().location()); |
// Try it again but with the page zoomed in |
- frame()->view()->setScrollPosition(IntPoint(0, 0), ProgrammaticScroll); |
+ frame()->view()->setScrollOffset(ScrollOffset(0, 0), ProgrammaticScroll); |
webViewImpl()->resizeVisualViewport(IntSize(500, 300)); |
visualViewport.setLocation(FloatPoint(0, 0)); |
webViewImpl()->setPageScaleFactor(2); |
webViewImpl()->scrollFocusedEditableElementIntoRect(IntRect(0, 0, 500, 200)); |
- EXPECT_POINT_EQ(IntPoint(0, frame()->view()->maximumScrollPosition().y()), |
- frame()->view()->scrollPosition()); |
+ EXPECT_SIZE_EQ( |
+ ScrollOffset(0, frame()->view()->maximumScrollOffset().height()), |
+ frame()->view()->scrollOffset()); |
EXPECT_FLOAT_POINT_EQ(FloatPoint(125, 150), |
visualViewport.visibleRect().location()); |
@@ -1062,14 +1068,14 @@ TEST_P(ParameterizedVisualViewportTest, |
navigateTo(m_baseURL + "pinch-viewport-input-field-long-and-wide.html"); |
webViewImpl()->setInitialFocus(false); |
visualViewport.setLocation(FloatPoint()); |
- frame()->view()->setScrollPosition(IntPoint(0, 0), ProgrammaticScroll); |
+ frame()->view()->setScrollOffset(ScrollOffset(0, 0), ProgrammaticScroll); |
webViewImpl()->resizeVisualViewport(IntSize(500, 300)); |
visualViewport.setLocation(FloatPoint(30, 50)); |
webViewImpl()->setPageScaleFactor(2); |
webViewImpl()->scrollFocusedEditableElementIntoRect(IntRect(0, 0, 500, 200)); |
- EXPECT_POINT_EQ(IntPoint(200 - 30 - 75, 600 - 50 - 65), |
- frame()->view()->scrollPosition()); |
+ EXPECT_SIZE_EQ(ScrollOffset(200 - 30 - 75, 600 - 50 - 65), |
+ frame()->view()->scrollOffset()); |
EXPECT_FLOAT_POINT_EQ(FloatPoint(30, 50), |
visualViewport.visibleRect().location()); |
} |
@@ -1221,59 +1227,60 @@ TEST_P(ParameterizedVisualViewportTest, ScrollIntoViewFractionalOffset) { |
// The element is already in the view so the scrollIntoView shouldn't move |
// the viewport at all. |
webViewImpl()->setVisualViewportOffset(WebFloatPoint(250.25f, 100.25f)); |
- layoutViewportScrollableArea->setScrollPosition(DoublePoint(0, 900.75), |
- ProgrammaticScroll); |
+ layoutViewportScrollableArea->setScrollOffset(ScrollOffset(0, 900.75), |
+ ProgrammaticScroll); |
inputBox->scrollIntoViewIfNeeded(false); |
- EXPECT_POINT_EQ(DoublePoint(0, 900), |
- layoutViewportScrollableArea->scrollPositionDouble()); |
- EXPECT_POINT_EQ(FloatPoint(250.25f, 100.25f), visualViewport.location()); |
+ EXPECT_SIZE_EQ(ScrollOffset(0, 900), |
+ layoutViewportScrollableArea->scrollOffset()); |
+ EXPECT_SIZE_EQ(FloatSize(250.25f, 100.25f), visualViewport.scrollOffset()); |
// Change the fractional part of the frameview to one that would round down. |
- layoutViewportScrollableArea->setScrollPosition(DoublePoint(0, 900.125), |
- ProgrammaticScroll); |
+ layoutViewportScrollableArea->setScrollOffset(ScrollOffset(0, 900.125), |
+ ProgrammaticScroll); |
inputBox->scrollIntoViewIfNeeded(false); |
- EXPECT_POINT_EQ(DoublePoint(0, 900), |
- layoutViewportScrollableArea->scrollPositionDouble()); |
- EXPECT_POINT_EQ(FloatPoint(250.25f, 100.25f), visualViewport.location()); |
+ EXPECT_SIZE_EQ(ScrollOffset(0, 900), |
+ layoutViewportScrollableArea->scrollOffset()); |
+ EXPECT_SIZE_EQ(FloatSize(250.25f, 100.25f), visualViewport.scrollOffset()); |
// Repeat both tests above with the visual viewport at a high fractional. |
webViewImpl()->setVisualViewportOffset(WebFloatPoint(250.875f, 100.875f)); |
- layoutViewportScrollableArea->setScrollPosition(DoublePoint(0, 900.75), |
- ProgrammaticScroll); |
+ layoutViewportScrollableArea->setScrollOffset(ScrollOffset(0, 900.75), |
+ ProgrammaticScroll); |
inputBox->scrollIntoViewIfNeeded(false); |
- EXPECT_POINT_EQ(DoublePoint(0, 900), |
- layoutViewportScrollableArea->scrollPositionDouble()); |
- EXPECT_POINT_EQ(FloatPoint(250.875f, 100.875f), visualViewport.location()); |
+ EXPECT_SIZE_EQ(ScrollOffset(0, 900), |
+ layoutViewportScrollableArea->scrollOffset()); |
+ EXPECT_SIZE_EQ(FloatSize(250.875f, 100.875f), visualViewport.scrollOffset()); |
// Change the fractional part of the frameview to one that would round down. |
- layoutViewportScrollableArea->setScrollPosition(DoublePoint(0, 900.125), |
- ProgrammaticScroll); |
+ layoutViewportScrollableArea->setScrollOffset(ScrollOffset(0, 900.125), |
+ ProgrammaticScroll); |
inputBox->scrollIntoViewIfNeeded(false); |
- EXPECT_POINT_EQ(DoublePoint(0, 900), |
- layoutViewportScrollableArea->scrollPositionDouble()); |
- EXPECT_POINT_EQ(FloatPoint(250.875f, 100.875f), visualViewport.location()); |
+ EXPECT_SIZE_EQ(ScrollOffset(0, 900), |
+ layoutViewportScrollableArea->scrollOffset()); |
+ EXPECT_SIZE_EQ(FloatSize(250.875f, 100.875f), visualViewport.scrollOffset()); |
// Both viewports with a 0.5 fraction. |
webViewImpl()->setVisualViewportOffset(WebFloatPoint(250.5f, 100.5f)); |
- layoutViewportScrollableArea->setScrollPosition(DoublePoint(0, 900.5), |
- ProgrammaticScroll); |
+ layoutViewportScrollableArea->setScrollOffset(ScrollOffset(0, 900.5), |
+ ProgrammaticScroll); |
inputBox->scrollIntoViewIfNeeded(false); |
- EXPECT_POINT_EQ(DoublePoint(0, 900), |
- layoutViewportScrollableArea->scrollPositionDouble()); |
- EXPECT_POINT_EQ(FloatPoint(250.5f, 100.5f), visualViewport.location()); |
+ EXPECT_SIZE_EQ(ScrollOffset(0, 900), |
+ layoutViewportScrollableArea->scrollOffset()); |
+ EXPECT_SIZE_EQ(FloatSize(250.5f, 100.5f), visualViewport.scrollOffset()); |
} |
-static IntPoint expectedMaxFrameViewScrollOffset(VisualViewport& visualViewport, |
- FrameView& frameView) { |
+static ScrollOffset expectedMaxFrameViewScrollOffset( |
+ VisualViewport& visualViewport, |
+ FrameView& frameView) { |
float aspectRatio = visualViewport.visibleRect().width() / |
visualViewport.visibleRect().height(); |
float newHeight = frameView.frameRect().width() / aspectRatio; |
- return IntPoint( |
+ return ScrollOffset( |
frameView.contentsSize().width() - frameView.frameRect().width(), |
frameView.contentsSize().height() - newHeight); |
} |
@@ -1300,14 +1307,15 @@ TEST_F(VisualViewportTest, TestTopControlsAdjustment) { |
// Test that the scroll bounds are adjusted appropriately: the visual viewport |
// should be shrunk by 20px to 430px. The outer viewport was shrunk to |
- // maintain the aspect ratio so it's height is 860px. |
- visualViewport.move(FloatPoint(10000, 10000)); |
- EXPECT_POINT_EQ(FloatPoint(500, 860 - 430), visualViewport.location()); |
+ // maintain the |
+ // aspect ratio so it's height is 860px. |
+ visualViewport.move(ScrollOffset(10000, 10000)); |
+ EXPECT_SIZE_EQ(FloatSize(500, 860 - 430), visualViewport.scrollOffset()); |
// The outer viewport (FrameView) should be affected as well. |
- frameView.scrollBy(IntSize(10000, 10000), UserScroll); |
- EXPECT_POINT_EQ(expectedMaxFrameViewScrollOffset(visualViewport, frameView), |
- frameView.scrollPosition()); |
+ frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll); |
+ EXPECT_SIZE_EQ(expectedMaxFrameViewScrollOffset(visualViewport, frameView), |
+ frameView.scrollOffset()); |
// Simulate bringing up the top controls by 10.5px. |
webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), |
@@ -1316,13 +1324,14 @@ TEST_F(VisualViewportTest, TestTopControlsAdjustment) { |
visualViewport.visibleRect().size()); |
// maximumScrollPosition |ceil|s the top controls adjustment. |
- visualViewport.move(FloatPoint(10000, 10000)); |
- EXPECT_FLOAT_POINT_EQ(FloatPoint(500, 881 - 441), visualViewport.location()); |
+ visualViewport.move(ScrollOffset(10000, 10000)); |
+ EXPECT_FLOAT_SIZE_EQ(FloatSize(500, 881 - 441), |
+ visualViewport.scrollOffset()); |
// The outer viewport (FrameView) should be affected as well. |
- frameView.scrollBy(IntSize(10000, 10000), UserScroll); |
- EXPECT_POINT_EQ(expectedMaxFrameViewScrollOffset(visualViewport, frameView), |
- frameView.scrollPosition()); |
+ frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll); |
+ EXPECT_SIZE_EQ(expectedMaxFrameViewScrollOffset(visualViewport, frameView), |
+ frameView.scrollOffset()); |
} |
TEST_F(VisualViewportTest, TestTopControlsAdjustmentWithScale) { |
@@ -1348,27 +1357,27 @@ TEST_F(VisualViewportTest, TestTopControlsAdjustmentWithScale) { |
EXPECT_SIZE_EQ(IntSize(250, 215), visualViewport.visibleRect().size()); |
// Test that the scroll bounds are adjusted appropriately. |
- visualViewport.move(FloatPoint(10000, 10000)); |
- EXPECT_POINT_EQ(FloatPoint(750, 860 - 215), visualViewport.location()); |
+ visualViewport.move(ScrollOffset(10000, 10000)); |
+ EXPECT_SIZE_EQ(FloatSize(750, 860 - 215), visualViewport.scrollOffset()); |
// The outer viewport (FrameView) should be affected as well. |
- frameView.scrollBy(IntSize(10000, 10000), UserScroll); |
- IntPoint expected = |
+ frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll); |
+ ScrollOffset expected = |
expectedMaxFrameViewScrollOffset(visualViewport, frameView); |
- EXPECT_POINT_EQ(expected, frameView.scrollPosition()); |
+ EXPECT_SIZE_EQ(expected, frameView.scrollOffset()); |
// Scale back out, FrameView max scroll shouldn't have changed. Visual |
// viewport should be moved up to accomodate larger view. |
webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), |
WebFloatSize(), 0.5f, 0); |
EXPECT_EQ(1, visualViewport.scale()); |
- EXPECT_POINT_EQ(expected, frameView.scrollPosition()); |
- frameView.scrollBy(IntSize(10000, 10000), UserScroll); |
- EXPECT_POINT_EQ(expected, frameView.scrollPosition()); |
+ EXPECT_SIZE_EQ(expected, frameView.scrollOffset()); |
+ frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll); |
+ EXPECT_SIZE_EQ(expected, frameView.scrollOffset()); |
- EXPECT_POINT_EQ(FloatPoint(500, 860 - 430), visualViewport.location()); |
- visualViewport.move(FloatPoint(10000, 10000)); |
- EXPECT_POINT_EQ(FloatPoint(500, 860 - 430), visualViewport.location()); |
+ EXPECT_SIZE_EQ(FloatSize(500, 860 - 430), visualViewport.scrollOffset()); |
+ visualViewport.move(ScrollOffset(10000, 10000)); |
+ EXPECT_SIZE_EQ(FloatSize(500, 860 - 430), visualViewport.scrollOffset()); |
// Scale out, use a scale that causes fractional rects. |
webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), |
@@ -1381,13 +1390,13 @@ TEST_F(VisualViewportTest, TestTopControlsAdjustmentWithScale) { |
EXPECT_SIZE_EQ(FloatSize(625, 548.75), visualViewport.visibleRect().size()); |
// Ensure max scroll offsets are updated properly. |
- visualViewport.move(FloatPoint(10000, 10000)); |
- EXPECT_FLOAT_POINT_EQ(FloatPoint(375, 877.5 - 548.75), |
- visualViewport.location()); |
+ visualViewport.move(ScrollOffset(10000, 10000)); |
+ EXPECT_FLOAT_SIZE_EQ(FloatSize(375, 877.5 - 548.75), |
+ visualViewport.scrollOffset()); |
- frameView.scrollBy(IntSize(10000, 10000), UserScroll); |
- EXPECT_POINT_EQ(expectedMaxFrameViewScrollOffset(visualViewport, frameView), |
- frameView.scrollPosition()); |
+ frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll); |
+ EXPECT_SIZE_EQ(expectedMaxFrameViewScrollOffset(visualViewport, frameView), |
+ frameView.scrollOffset()); |
} |
// Tests that a scroll all the way to the bottom of the page, while hiding the |
@@ -1425,22 +1434,22 @@ TEST_F(VisualViewportTest, TestTopControlsAdjustmentAndResize) { |
visualViewport.size()); |
// Scroll all the way to the bottom, hiding the top controls in the process. |
- visualViewport.move(FloatPoint(10000, 10000)); |
- frameView.scrollBy(IntSize(10000, 10000), UserScroll); |
+ visualViewport.move(ScrollOffset(10000, 10000)); |
+ frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll); |
webViewImpl()->topControls().setShownRatio(0); |
EXPECT_SIZE_EQ(IntSize(250, visualViewportHeight / pageScale), |
visualViewport.visibleRect().size()); |
- IntPoint frameViewExpected = |
+ ScrollOffset frameViewExpected = |
expectedMaxFrameViewScrollOffset(visualViewport, frameView); |
- FloatPoint visualViewportExpected = |
- FloatPoint(750, layoutViewportHeight - visualViewportHeight / pageScale); |
+ ScrollOffset visualViewportExpected = ScrollOffset( |
+ 750, layoutViewportHeight - visualViewportHeight / pageScale); |
- EXPECT_POINT_EQ(visualViewportExpected, visualViewport.location()); |
- EXPECT_POINT_EQ(frameViewExpected, frameView.scrollPosition()); |
+ EXPECT_SIZE_EQ(visualViewportExpected, visualViewport.scrollOffset()); |
+ EXPECT_SIZE_EQ(frameViewExpected, frameView.scrollOffset()); |
- FloatPoint totalExpected = visualViewportExpected + frameViewExpected; |
+ ScrollOffset totalExpected = visualViewportExpected + frameViewExpected; |
// Resize the widget to match the top controls adjustment. Ensure that the |
// total offset (i.e. what the user sees) doesn't change because of clamping |
@@ -1453,8 +1462,8 @@ TEST_F(VisualViewportTest, TestTopControlsAdjustmentAndResize) { |
visualViewport.visibleRect().size()); |
EXPECT_SIZE_EQ(IntSize(1000, layoutViewportHeight), |
frameView.frameRect().size()); |
- EXPECT_POINT_EQ(totalExpected, |
- frameView.scrollPosition() + visualViewport.location()); |
+ EXPECT_SIZE_EQ(totalExpected, |
+ visualViewport.scrollOffset() + frameView.scrollOffset()); |
} |
// Tests that a scroll all the way to the bottom while showing the top controls |
@@ -1493,24 +1502,24 @@ TEST_F(VisualViewportTest, TestTopControlsShrinkAdjustmentAndResize) { |
// process. (This could happen via window.scrollTo during a scroll, for |
// example). |
webViewImpl()->topControls().setShownRatio(1); |
- visualViewport.move(FloatPoint(10000, 10000)); |
- frameView.scrollBy(IntSize(10000, 10000), UserScroll); |
+ visualViewport.move(ScrollOffset(10000, 10000)); |
+ frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll); |
EXPECT_SIZE_EQ( |
IntSize(250, (visualViewportHeight - topControlsHeight) / pageScale), |
visualViewport.visibleRect().size()); |
- IntPoint frameViewExpected = IntPoint( |
+ ScrollOffset frameViewExpected( |
0, contentHeight - |
(layoutViewportHeight - topControlsHeight / minPageScale)); |
- FloatPoint visualViewportExpected = |
- FloatPoint(750, (layoutViewportHeight - topControlsHeight / minPageScale - |
- visualViewport.visibleRect().height())); |
+ ScrollOffset visualViewportExpected = ScrollOffset( |
+ 750, (layoutViewportHeight - topControlsHeight / minPageScale - |
+ visualViewport.visibleRect().height())); |
- EXPECT_POINT_EQ(visualViewportExpected, visualViewport.location()); |
- EXPECT_POINT_EQ(frameViewExpected, frameView.scrollPosition()); |
+ EXPECT_SIZE_EQ(visualViewportExpected, visualViewport.scrollOffset()); |
+ EXPECT_SIZE_EQ(frameViewExpected, frameView.scrollOffset()); |
- FloatPoint totalExpected = visualViewportExpected + frameViewExpected; |
+ ScrollOffset totalExpected = visualViewportExpected + frameViewExpected; |
// Resize the widget to match the top controls adjustment. Ensure that the |
// total offset (i.e. what the user sees) doesn't change because of clamping |
@@ -1526,8 +1535,8 @@ TEST_F(VisualViewportTest, TestTopControlsShrinkAdjustmentAndResize) { |
EXPECT_SIZE_EQ( |
IntSize(1000, layoutViewportHeight - topControlsHeight / minPageScale), |
frameView.frameRect().size()); |
- EXPECT_POINT_EQ(totalExpected, |
- frameView.scrollPosition() + visualViewport.location()); |
+ EXPECT_SIZE_EQ(totalExpected, |
+ visualViewport.scrollOffset() + frameView.scrollOffset()); |
} |
// Tests that a resize due to top controls hiding doesn't incorrectly clamp the |
@@ -1548,12 +1557,12 @@ TEST_F(VisualViewportTest, TestTopControlHidingResizeDoesntClampMainFrame) { |
webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), |
WebFloatSize(), 1, -1); |
FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); |
- frameView.setScrollPosition(IntPoint(0, 10000), ProgrammaticScroll); |
- EXPECT_EQ(500, frameView.scrollPositionDouble().y()); |
+ frameView.setScrollOffset(ScrollOffset(0, 10000), ProgrammaticScroll); |
+ EXPECT_EQ(500, frameView.scrollOffset().height()); |
// Now send the resize, make sure the scroll offset doesn't change. |
webViewImpl()->resizeWithTopControls(WebSize(1000, 1500), 500, false); |
- EXPECT_EQ(500, frameView.scrollPositionDouble().y()); |
+ EXPECT_EQ(500, frameView.scrollOffset().height()); |
} |
static void configureHiddenScrollbarsSettings(WebSettings* settings) { |
@@ -1625,13 +1634,13 @@ TEST_P(ParameterizedVisualViewportTest, |
VisualViewport& visualViewport = |
frame()->page()->frameHost().visualViewport(); |
- visualViewport.move(FloatPoint(0, 100)); |
+ visualViewport.move(ScrollOffset(0, 100)); |
- EXPECT_EQ(100, visualViewport.location().y()); |
+ EXPECT_EQ(100, visualViewport.scrollOffset().height()); |
webViewImpl()->resizeVisualViewport(IntSize(100, 200)); |
- EXPECT_EQ(0, visualViewport.location().y()); |
+ EXPECT_EQ(0, visualViewport.scrollOffset().height()); |
} |
TEST_P(ParameterizedVisualViewportTest, |
@@ -1705,14 +1714,14 @@ TEST_P(ParameterizedVisualViewportTest, |
window->scrollTo(100, 150); |
EXPECT_EQ(100, window->scrollX()); |
EXPECT_EQ(150, window->scrollY()); |
- EXPECT_FLOAT_POINT_EQ(FloatPoint(100, 150), visualViewport.location()); |
+ EXPECT_FLOAT_SIZE_EQ(FloatSize(100, 150), visualViewport.scrollOffset()); |
HTMLElement* body = toHTMLBodyElement(window->document()->body()); |
body->setScrollLeft(50); |
body->setScrollTop(130); |
EXPECT_EQ(50, body->scrollLeft()); |
EXPECT_EQ(130, body->scrollTop()); |
- EXPECT_FLOAT_POINT_EQ(FloatPoint(50, 130), visualViewport.location()); |
+ EXPECT_FLOAT_SIZE_EQ(FloatSize(50, 130), visualViewport.scrollOffset()); |
HTMLElement* documentElement = |
toHTMLElement(window->document()->documentElement()); |
@@ -1720,7 +1729,7 @@ TEST_P(ParameterizedVisualViewportTest, |
documentElement->setScrollTop(50); |
EXPECT_EQ(0, documentElement->scrollLeft()); |
EXPECT_EQ(0, documentElement->scrollTop()); |
- EXPECT_FLOAT_POINT_EQ(FloatPoint(50, 130), visualViewport.location()); |
+ EXPECT_FLOAT_SIZE_EQ(FloatSize(50, 130), visualViewport.scrollOffset()); |
visualViewport.setLocation(FloatPoint(10, 20)); |
EXPECT_EQ(10, body->scrollLeft()); |
@@ -1737,19 +1746,19 @@ TEST_P(ParameterizedVisualViewportTest, |
window->scrollTo(100, 150); |
EXPECT_EQ(100, window->scrollX()); |
EXPECT_EQ(150, window->scrollY()); |
- EXPECT_FLOAT_POINT_EQ(FloatPoint(100, 150), visualViewport.location()); |
+ EXPECT_FLOAT_SIZE_EQ(FloatSize(100, 150), visualViewport.scrollOffset()); |
body->setScrollLeft(50); |
body->setScrollTop(130); |
EXPECT_EQ(0, body->scrollLeft()); |
EXPECT_EQ(0, body->scrollTop()); |
- EXPECT_FLOAT_POINT_EQ(FloatPoint(100, 150), visualViewport.location()); |
+ EXPECT_FLOAT_SIZE_EQ(FloatSize(100, 150), visualViewport.scrollOffset()); |
documentElement->setScrollLeft(40); |
documentElement->setScrollTop(50); |
EXPECT_EQ(40, documentElement->scrollLeft()); |
EXPECT_EQ(50, documentElement->scrollTop()); |
- EXPECT_FLOAT_POINT_EQ(FloatPoint(40, 50), visualViewport.location()); |
+ EXPECT_FLOAT_SIZE_EQ(FloatSize(40, 50), visualViewport.scrollOffset()); |
visualViewport.setLocation(FloatPoint(10, 20)); |
EXPECT_EQ(0, body->scrollLeft()); |
@@ -1792,12 +1801,11 @@ TEST_P(ParameterizedVisualViewportTest, FractionalMaxScrollOffset) { |
ScrollableArea* scrollableArea = &visualViewport; |
webViewImpl()->setPageScaleFactor(1.0); |
- EXPECT_FLOAT_POINT_EQ(DoublePoint(), |
- scrollableArea->maximumScrollPositionDouble()); |
+ EXPECT_SIZE_EQ(ScrollOffset(), scrollableArea->maximumScrollOffset()); |
webViewImpl()->setPageScaleFactor(2); |
- EXPECT_FLOAT_POINT_EQ(DoublePoint(101. / 2., 201. / 2.), |
- scrollableArea->maximumScrollPositionDouble()); |
+ EXPECT_SIZE_EQ(ScrollOffset(101. / 2., 201. / 2.), |
+ scrollableArea->maximumScrollOffset()); |
} |
// Tests that the slow scrolling after an impl scroll on the visual viewport is |
@@ -1815,7 +1823,7 @@ TEST_P(ParameterizedVisualViewportTest, SlowScrollAfterImplScroll) { |
webViewImpl()->applyViewportDeltas(WebFloatSize(300, 200), WebFloatSize(0, 0), |
WebFloatSize(0, 0), 2, 0); |
- EXPECT_POINT_EQ(FloatPoint(300, 200), visualViewport.location()); |
+ EXPECT_SIZE_EQ(FloatSize(300, 200), visualViewport.scrollOffset()); |
// Send a scroll event on the main thread path. |
PlatformGestureEvent gsu(PlatformEvent::GestureScrollUpdate, IntPoint(0, 0), |
@@ -1829,7 +1837,7 @@ TEST_P(ParameterizedVisualViewportTest, SlowScrollAfterImplScroll) { |
frame()->eventHandler().handleGestureEvent(gsu); |
// The scroll sent from the impl-side must not be overwritten. |
- EXPECT_POINT_EQ(FloatPoint(350, 260), visualViewport.location()); |
+ EXPECT_SIZE_EQ(FloatSize(350, 260), visualViewport.scrollOffset()); |
} |
static void accessibilitySettings(WebSettings* settings) { |
@@ -1851,8 +1859,8 @@ TEST_P(ParameterizedVisualViewportTest, AccessibilityHitTestWhileZoomedIn) { |
webViewImpl()->setPageScaleFactor(2); |
webViewImpl()->setVisualViewportOffset(WebFloatPoint(200, 230)); |
- frameView.layoutViewportScrollableArea()->setScrollPosition( |
- DoublePoint(400, 1100), ProgrammaticScroll); |
+ frameView.layoutViewportScrollableArea()->setScrollOffset( |
+ ScrollOffset(400, 1100), ProgrammaticScroll); |
// FIXME(504057): PaintLayerScrollableArea dirties the compositing state. |
forceFullCompositingUpdate(); |
@@ -1909,8 +1917,8 @@ TEST_P(ParameterizedVisualViewportTest, TestCoordinateTransforms) { |
visualViewport.rootFrameToViewport(FloatPoint(50.5, 62.4))); |
// Scrolling the main frame should have no effect. |
- frameView.layoutViewportScrollableArea()->setScrollPosition( |
- DoublePoint(100, 120), ProgrammaticScroll); |
+ frameView.layoutViewportScrollableArea()->setScrollOffset( |
+ ScrollOffset(100, 120), ProgrammaticScroll); |
EXPECT_FLOAT_POINT_EQ(FloatPoint(50, 62), visualViewport.viewportToRootFrame( |
FloatPoint(80, 100))); |
EXPECT_FLOAT_POINT_EQ(FloatPoint(80, 100), |
@@ -1971,8 +1979,8 @@ TEST_P(ParameterizedVisualViewportTest, |
webViewImpl()->page()->frameHost().visualViewport(); |
FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); |
- EXPECT_FLOAT_POINT_EQ(FloatPoint(50, 50), visualViewport.location()); |
- EXPECT_FLOAT_POINT_EQ(FloatPoint(0, 0), frameView.scrollPositionDouble()); |
+ EXPECT_FLOAT_SIZE_EQ(FloatSize(50, 50), visualViewport.scrollOffset()); |
+ EXPECT_SIZE_EQ(ScrollOffset(0, 0), frameView.scrollOffset()); |
} |
TEST_P(ParameterizedVisualViewportTest, ResizeWithScrollAnchoring) { |
@@ -1987,13 +1995,12 @@ TEST_P(ParameterizedVisualViewportTest, ResizeWithScrollAnchoring) { |
navigateTo(m_baseURL + "icb-relative-content.html"); |
FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); |
- frameView.layoutViewportScrollableArea()->setScrollPosition( |
- DoublePoint(700, 500), ProgrammaticScroll); |
+ frameView.layoutViewportScrollableArea()->setScrollOffset( |
+ ScrollOffset(700, 500), ProgrammaticScroll); |
webViewImpl()->resize(IntSize(800, 300)); |
- EXPECT_POINT_EQ( |
- DoublePoint(700, 200), |
- frameView.layoutViewportScrollableArea()->scrollPositionDouble()); |
+ EXPECT_SIZE_EQ(ScrollOffset(700, 200), |
+ frameView.layoutViewportScrollableArea()->scrollOffset()); |
RuntimeEnabledFeatures::setScrollAnchoringEnabled(wasScrollAnchoringEnabled); |
} |
@@ -2018,18 +2025,17 @@ TEST_P(ParameterizedVisualViewportTest, ResizeAnchoringWithRootScroller) { |
frame()->document()->setRootScroller(scroller, nonThrow); |
webViewImpl()->setPageScaleFactor(3.f); |
- frameView.getScrollableArea()->setScrollPosition(DoublePoint(0, 400), |
- ProgrammaticScroll); |
+ frameView.getScrollableArea()->setScrollOffset(ScrollOffset(0, 400), |
+ ProgrammaticScroll); |
VisualViewport& visualViewport = |
webViewImpl()->page()->frameHost().visualViewport(); |
- visualViewport.setScrollPosition(DoublePoint(0, 400), ProgrammaticScroll); |
+ visualViewport.setScrollOffset(ScrollOffset(0, 400), ProgrammaticScroll); |
webViewImpl()->resize(IntSize(800, 500)); |
- EXPECT_POINT_EQ( |
- DoublePoint(), |
- frameView.layoutViewportScrollableArea()->scrollPositionDouble()); |
+ EXPECT_SIZE_EQ(ScrollOffset(), |
+ frameView.layoutViewportScrollableArea()->scrollOffset()); |
RuntimeEnabledFeatures::setSetRootScrollerEnabled(wasRootScrollerEnabled); |
} |
@@ -2058,9 +2064,8 @@ TEST_P(ParameterizedVisualViewportTest, RotationAnchoringWithRootScroller) { |
webViewImpl()->resize(IntSize(600, 800)); |
- EXPECT_POINT_EQ( |
- DoublePoint(), |
- frameView.layoutViewportScrollableArea()->scrollPositionDouble()); |
+ EXPECT_SIZE_EQ(ScrollOffset(), |
+ frameView.layoutViewportScrollableArea()->scrollOffset()); |
EXPECT_EQ(600, scroller->scrollTop()); |
RuntimeEnabledFeatures::setSetRootScrollerEnabled(wasRootScrollerEnabled); |