OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "core/frame/VisualViewport.h" | 5 #include "core/frame/VisualViewport.h" |
6 | 6 |
7 #include "core/dom/Document.h" | 7 #include "core/dom/Document.h" |
8 #include "core/frame/FrameHost.h" | 8 #include "core/frame/FrameHost.h" |
9 #include "core/frame/FrameView.h" | 9 #include "core/frame/FrameView.h" |
10 #include "core/frame/LocalFrame.h" | 10 #include "core/frame/LocalFrame.h" |
(...skipping 28 matching lines...) Expand all Loading... |
39 #include "web/tests/FrameTestHelpers.h" | 39 #include "web/tests/FrameTestHelpers.h" |
40 | 40 |
41 #include <string> | 41 #include <string> |
42 | 42 |
43 #define ASSERT_POINT_EQ(expected, actual) \ | 43 #define ASSERT_POINT_EQ(expected, actual) \ |
44 do { \ | 44 do { \ |
45 ASSERT_EQ((expected).x(), (actual).x()); \ | 45 ASSERT_EQ((expected).x(), (actual).x()); \ |
46 ASSERT_EQ((expected).y(), (actual).y()); \ | 46 ASSERT_EQ((expected).y(), (actual).y()); \ |
47 } while (false) | 47 } while (false) |
48 | 48 |
| 49 #define ASSERT_SIZE_EQ(expected, actual) \ |
| 50 do { \ |
| 51 ASSERT_EQ((expected).width(), (actual).width()); \ |
| 52 ASSERT_EQ((expected).height(), (actual).height()); \ |
| 53 } while (false) |
| 54 |
49 #define EXPECT_POINT_EQ(expected, actual) \ | 55 #define EXPECT_POINT_EQ(expected, actual) \ |
50 do { \ | 56 do { \ |
51 EXPECT_EQ((expected).x(), (actual).x()); \ | 57 EXPECT_EQ((expected).x(), (actual).x()); \ |
52 EXPECT_EQ((expected).y(), (actual).y()); \ | 58 EXPECT_EQ((expected).y(), (actual).y()); \ |
53 } while (false) | 59 } while (false) |
54 | 60 |
55 #define EXPECT_FLOAT_POINT_EQ(expected, actual) \ | 61 #define EXPECT_FLOAT_POINT_EQ(expected, actual) \ |
56 do { \ | 62 do { \ |
57 EXPECT_FLOAT_EQ((expected).x(), (actual).x()); \ | 63 EXPECT_FLOAT_EQ((expected).x(), (actual).x()); \ |
58 EXPECT_FLOAT_EQ((expected).y(), (actual).y()); \ | 64 EXPECT_FLOAT_EQ((expected).y(), (actual).y()); \ |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 registerMockedHttpURLLoad("content-width-1000.html"); | 239 registerMockedHttpURLLoad("content-width-1000.html"); |
234 navigateTo(m_baseURL + "content-width-1000.html"); | 240 navigateTo(m_baseURL + "content-width-1000.html"); |
235 | 241 |
236 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); | 242 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); |
237 VisualViewport& visualViewport = | 243 VisualViewport& visualViewport = |
238 frame()->page()->frameHost().visualViewport(); | 244 frame()->page()->frameHost().visualViewport(); |
239 | 245 |
240 visualViewport.setScale(2); | 246 visualViewport.setScale(2); |
241 | 247 |
242 // Fully scroll both viewports. | 248 // Fully scroll both viewports. |
243 frameView.layoutViewportScrollableArea()->setScrollPosition( | 249 frameView.layoutViewportScrollableArea()->setScrollOffset( |
244 DoublePoint(10000, 10000), ProgrammaticScroll); | 250 ScrollOffset(10000, 10000), ProgrammaticScroll); |
245 visualViewport.move(FloatSize(10000, 10000)); | 251 visualViewport.move(FloatSize(10000, 10000)); |
246 | 252 |
247 // Sanity check. | 253 // Sanity check. |
248 ASSERT_POINT_EQ(FloatPoint(400, 300), visualViewport.location()); | 254 ASSERT_POINT_EQ(FloatPoint(400, 300), visualViewport.location()); |
249 ASSERT_POINT_EQ( | 255 ASSERT_SIZE_EQ(ScrollOffset(200, 1400), |
250 DoublePoint(200, 1400), | 256 frameView.layoutViewportScrollableArea()->scrollOffset()); |
251 frameView.layoutViewportScrollableArea()->scrollPositionDouble()); | |
252 | 257 |
253 DoublePoint expectedLocation = | 258 IntPoint expectedLocation = |
254 frameView.getScrollableArea()->visibleContentRectDouble().location(); | 259 frameView.getScrollableArea()->visibleContentRect().location(); |
255 | 260 |
256 // Shrink the WebView, this should cause both viewports to shrink and | 261 // Shrink the WebView, this should cause both viewports to shrink and |
257 // WebView should do whatever it needs to do to preserve the visible | 262 // WebView should do whatever it needs to do to preserve the visible |
258 // location. | 263 // location. |
259 webViewImpl()->resize(IntSize(700, 550)); | 264 webViewImpl()->resize(IntSize(700, 550)); |
260 | 265 |
261 EXPECT_POINT_EQ( | 266 EXPECT_POINT_EQ( |
262 expectedLocation, | 267 expectedLocation, |
263 frameView.getScrollableArea()->visibleContentRectDouble().location()); | 268 frameView.getScrollableArea()->visibleContentRect().location()); |
264 | 269 |
265 webViewImpl()->resize(IntSize(800, 600)); | 270 webViewImpl()->resize(IntSize(800, 600)); |
266 | 271 |
267 EXPECT_POINT_EQ( | 272 EXPECT_POINT_EQ( |
268 expectedLocation, | 273 expectedLocation, |
269 frameView.getScrollableArea()->visibleContentRectDouble().location()); | 274 frameView.getScrollableArea()->visibleContentRect().location()); |
270 } | 275 } |
271 | 276 |
272 // Test that the VisualViewport works as expected in case of a scaled | 277 // Test that the VisualViewport works as expected in case of a scaled |
273 // and scrolled viewport - scroll down. | 278 // and scrolled viewport - scroll down. |
274 TEST_P(ParameterizedVisualViewportTest, TestResizeAfterVerticalScroll) { | 279 TEST_P(ParameterizedVisualViewportTest, TestResizeAfterVerticalScroll) { |
275 /* | 280 /* |
276 200 200 | 281 200 200 |
277 | | | | | 282 | | | | |
278 | | | | | 283 | | | | |
279 | | 800 | | 800 | 284 | | 800 | | 800 |
(...skipping 25 matching lines...) Expand all Loading... |
305 | 310 |
306 initializeWithAndroidSettings(); | 311 initializeWithAndroidSettings(); |
307 | 312 |
308 registerMockedHttpURLLoad("200-by-800-viewport.html"); | 313 registerMockedHttpURLLoad("200-by-800-viewport.html"); |
309 navigateTo(m_baseURL + "200-by-800-viewport.html"); | 314 navigateTo(m_baseURL + "200-by-800-viewport.html"); |
310 | 315 |
311 webViewImpl()->resize(IntSize(100, 200)); | 316 webViewImpl()->resize(IntSize(100, 200)); |
312 | 317 |
313 // Scroll main frame to the bottom of the document | 318 // Scroll main frame to the bottom of the document |
314 webViewImpl()->mainFrame()->setScrollOffset(WebSize(0, 400)); | 319 webViewImpl()->mainFrame()->setScrollOffset(WebSize(0, 400)); |
315 EXPECT_POINT_EQ( | 320 EXPECT_SIZE_EQ( |
316 IntPoint(0, 400), | 321 ScrollOffset(0, 400), |
317 frame()->view()->layoutViewportScrollableArea()->scrollPosition()); | 322 frame()->view()->layoutViewportScrollableArea()->scrollOffset()); |
318 | 323 |
319 webViewImpl()->setPageScaleFactor(2.0); | 324 webViewImpl()->setPageScaleFactor(2.0); |
320 | 325 |
321 // Scroll visual viewport to the bottom of the main frame | 326 // Scroll visual viewport to the bottom of the main frame |
322 VisualViewport& visualViewport = | 327 VisualViewport& visualViewport = |
323 frame()->page()->frameHost().visualViewport(); | 328 frame()->page()->frameHost().visualViewport(); |
324 visualViewport.setLocation(FloatPoint(0, 300)); | 329 visualViewport.setLocation(FloatPoint(0, 300)); |
325 EXPECT_FLOAT_POINT_EQ(FloatPoint(0, 300), visualViewport.location()); | 330 EXPECT_FLOAT_POINT_EQ(FloatPoint(0, 300), visualViewport.location()); |
326 | 331 |
327 // Verify the initial size of the visual viewport in the CSS pixels | 332 // Verify the initial size of the visual viewport in the CSS pixels |
328 EXPECT_FLOAT_SIZE_EQ(FloatSize(50, 100), visualViewport.visibleRect().size()); | 333 EXPECT_FLOAT_SIZE_EQ(FloatSize(50, 100), visualViewport.visibleRect().size()); |
329 | 334 |
330 // Perform the resizing | 335 // Perform the resizing |
331 webViewImpl()->resize(IntSize(200, 100)); | 336 webViewImpl()->resize(IntSize(200, 100)); |
332 | 337 |
333 // After resizing the scale changes 2.0 -> 4.0 | 338 // After resizing the scale changes 2.0 -> 4.0 |
334 EXPECT_FLOAT_SIZE_EQ(FloatSize(50, 25), visualViewport.visibleRect().size()); | 339 EXPECT_FLOAT_SIZE_EQ(FloatSize(50, 25), visualViewport.visibleRect().size()); |
335 | 340 |
336 EXPECT_POINT_EQ( | 341 EXPECT_SIZE_EQ( |
337 IntPoint(0, 625), | 342 ScrollOffset(0, 625), |
338 frame()->view()->layoutViewportScrollableArea()->scrollPosition()); | 343 frame()->view()->layoutViewportScrollableArea()->scrollOffset()); |
339 EXPECT_FLOAT_POINT_EQ(FloatPoint(0, 75), visualViewport.location()); | 344 EXPECT_FLOAT_POINT_EQ(FloatPoint(0, 75), visualViewport.location()); |
340 } | 345 } |
341 | 346 |
342 // Test that the VisualViewport works as expected in case if a scaled | 347 // Test that the VisualViewport works as expected in case if a scaled |
343 // and scrolled viewport - scroll right. | 348 // and scrolled viewport - scroll right. |
344 TEST_P(ParameterizedVisualViewportTest, TestResizeAfterHorizontalScroll) { | 349 TEST_P(ParameterizedVisualViewportTest, TestResizeAfterHorizontalScroll) { |
345 /* | 350 /* |
346 200 200 | 351 200 200 |
347 ---------------o----- ---------------o----- | 352 ---------------o----- ---------------o----- |
348 | | | | 25| | | 353 | | | | 25| | |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
393 EXPECT_FLOAT_POINT_EQ(FloatPoint(150, 0), visualViewport.location()); | 398 EXPECT_FLOAT_POINT_EQ(FloatPoint(150, 0), visualViewport.location()); |
394 | 399 |
395 // Verify the initial size of the visual viewport in the CSS pixels | 400 // Verify the initial size of the visual viewport in the CSS pixels |
396 EXPECT_FLOAT_SIZE_EQ(FloatSize(50, 100), visualViewport.visibleRect().size()); | 401 EXPECT_FLOAT_SIZE_EQ(FloatSize(50, 100), visualViewport.visibleRect().size()); |
397 | 402 |
398 webViewImpl()->resize(IntSize(200, 100)); | 403 webViewImpl()->resize(IntSize(200, 100)); |
399 | 404 |
400 // After resizing the scale changes 2.0 -> 4.0 | 405 // After resizing the scale changes 2.0 -> 4.0 |
401 EXPECT_FLOAT_SIZE_EQ(FloatSize(50, 25), visualViewport.visibleRect().size()); | 406 EXPECT_FLOAT_SIZE_EQ(FloatSize(50, 25), visualViewport.visibleRect().size()); |
402 | 407 |
403 EXPECT_POINT_EQ(IntPoint(0, 0), frame()->view()->scrollPosition()); | 408 EXPECT_SIZE_EQ(ScrollOffset(0, 0), frame()->view()->scrollOffset()); |
404 EXPECT_FLOAT_POINT_EQ(FloatPoint(150, 0), visualViewport.location()); | 409 EXPECT_FLOAT_POINT_EQ(FloatPoint(150, 0), visualViewport.location()); |
405 } | 410 } |
406 | 411 |
407 // Test that the container layer gets sized properly if the WebView is resized | 412 // Test that the container layer gets sized properly if the WebView is resized |
408 // prior to the VisualViewport being attached to the layer tree. | 413 // prior to the VisualViewport being attached to the layer tree. |
409 TEST_P(ParameterizedVisualViewportTest, TestWebViewResizedBeforeAttachment) { | 414 TEST_P(ParameterizedVisualViewportTest, TestWebViewResizedBeforeAttachment) { |
410 initializeWithDesktopSettings(); | 415 initializeWithDesktopSettings(); |
411 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); | 416 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); |
412 GraphicsLayer* rootGraphicsLayer = | 417 GraphicsLayer* rootGraphicsLayer = |
413 frameView.layoutViewItem().compositor()->rootGraphicsLayer(); | 418 frameView.layoutViewItem().compositor()->rootGraphicsLayer(); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 frame()->page()->frameHost().visualViewport(); | 498 frame()->page()->frameHost().visualViewport(); |
494 | 499 |
495 // Scale the viewport to 2X and move it. | 500 // Scale the viewport to 2X and move it. |
496 visualViewport.setScale(2); | 501 visualViewport.setScale(2); |
497 visualViewport.setLocation(FloatPoint(10, 15)); | 502 visualViewport.setLocation(FloatPoint(10, 15)); |
498 EXPECT_FLOAT_RECT_EQ(FloatRect(10, 15, 50, 200), | 503 EXPECT_FLOAT_RECT_EQ(FloatRect(10, 15, 50, 200), |
499 visualViewport.visibleRectInDocument()); | 504 visualViewport.visibleRectInDocument()); |
500 | 505 |
501 // Scroll the layout viewport. Ensure its offset is reflected in visibleRectIn
Document(). | 506 // Scroll the layout viewport. Ensure its offset is reflected in visibleRectIn
Document(). |
502 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); | 507 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); |
503 frameView.layoutViewportScrollableArea()->setScrollPosition( | 508 frameView.layoutViewportScrollableArea()->setScrollOffset( |
504 DoublePoint(40, 100), ProgrammaticScroll); | 509 ScrollOffset(40, 100), ProgrammaticScroll); |
505 EXPECT_FLOAT_RECT_EQ(FloatRect(50, 115, 50, 200), | 510 EXPECT_FLOAT_RECT_EQ(FloatRect(50, 115, 50, 200), |
506 visualViewport.visibleRectInDocument()); | 511 visualViewport.visibleRectInDocument()); |
507 } | 512 } |
508 | 513 |
509 TEST_P(ParameterizedVisualViewportTest, | 514 TEST_P(ParameterizedVisualViewportTest, |
510 TestFractionalScrollOffsetIsNotOverwritten) { | 515 TestFractionalScrollOffsetIsNotOverwritten) { |
511 bool origFractionalOffsetsEnabled = | 516 bool origFractionalOffsetsEnabled = |
512 RuntimeEnabledFeatures::fractionalScrollOffsetsEnabled(); | 517 RuntimeEnabledFeatures::fractionalScrollOffsetsEnabled(); |
513 RuntimeEnabledFeatures::setFractionalScrollOffsetsEnabled(true); | 518 RuntimeEnabledFeatures::setFractionalScrollOffsetsEnabled(true); |
514 | 519 |
515 initializeWithAndroidSettings(); | 520 initializeWithAndroidSettings(); |
516 webViewImpl()->resize(IntSize(200, 250)); | 521 webViewImpl()->resize(IntSize(200, 250)); |
517 | 522 |
518 registerMockedHttpURLLoad("200-by-800-viewport.html"); | 523 registerMockedHttpURLLoad("200-by-800-viewport.html"); |
519 navigateTo(m_baseURL + "200-by-800-viewport.html"); | 524 navigateTo(m_baseURL + "200-by-800-viewport.html"); |
520 | 525 |
521 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); | 526 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); |
522 frameView.layoutViewportScrollableArea()->setScrollPosition( | 527 frameView.layoutViewportScrollableArea()->setScrollOffset( |
523 DoublePoint(0, 10.5), ProgrammaticScroll); | 528 ScrollOffset(0, 10.5), ProgrammaticScroll); |
524 frameView.layoutViewportScrollableArea()->ScrollableArea::setScrollPosition( | 529 frameView.layoutViewportScrollableArea()->ScrollableArea::setScrollOffset( |
525 DoublePoint(10, 30.5), CompositorScroll); | 530 ScrollOffset(10, 30.5), CompositorScroll); |
526 | 531 |
527 EXPECT_EQ( | 532 EXPECT_EQ(30.5, |
528 30.5, | 533 frameView.layoutViewportScrollableArea()->scrollOffset().height()); |
529 frameView.layoutViewportScrollableArea()->scrollPositionDouble().y()); | |
530 | 534 |
531 RuntimeEnabledFeatures::setFractionalScrollOffsetsEnabled( | 535 RuntimeEnabledFeatures::setFractionalScrollOffsetsEnabled( |
532 origFractionalOffsetsEnabled); | 536 origFractionalOffsetsEnabled); |
533 } | 537 } |
534 | 538 |
535 // Test that the viewport's scroll offset is always appropriately bounded such t
hat the | 539 // Test that the viewport's scroll offset is always appropriately bounded such t
hat the |
536 // visual viewport always stays within the bounds of the main frame. | 540 // visual viewport always stays within the bounds of the main frame. |
537 TEST_P(ParameterizedVisualViewportTest, TestOffsetClamping) { | 541 TEST_P(ParameterizedVisualViewportTest, TestOffsetClamping) { |
538 initializeWithDesktopSettings(); | 542 initializeWithDesktopSettings(); |
539 webViewImpl()->resize(IntSize(320, 240)); | 543 webViewImpl()->resize(IntSize(320, 240)); |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
750 | 754 |
751 // Load a wider page first, the navigation should resize the scroll layer to | 755 // Load a wider page first, the navigation should resize the scroll layer to |
752 // the smaller size on the second navigation. | 756 // the smaller size on the second navigation. |
753 registerMockedHttpURLLoad("content-width-1000.html"); | 757 registerMockedHttpURLLoad("content-width-1000.html"); |
754 navigateTo(m_baseURL + "content-width-1000.html"); | 758 navigateTo(m_baseURL + "content-width-1000.html"); |
755 webViewImpl()->updateAllLifecyclePhases(); | 759 webViewImpl()->updateAllLifecyclePhases(); |
756 | 760 |
757 VisualViewport& visualViewport = | 761 VisualViewport& visualViewport = |
758 frame()->page()->frameHost().visualViewport(); | 762 frame()->page()->frameHost().visualViewport(); |
759 visualViewport.setScale(2); | 763 visualViewport.setScale(2); |
760 visualViewport.move(FloatPoint(50, 60)); | 764 visualViewport.move(ScrollOffset(50, 60)); |
761 | 765 |
762 // Move and scale the viewport to make sure it gets reset in the navigation. | 766 // Move and scale the viewport to make sure it gets reset in the navigation. |
763 EXPECT_POINT_EQ(FloatPoint(50, 60), visualViewport.location()); | 767 EXPECT_POINT_EQ(FloatPoint(50, 60), visualViewport.location()); |
764 EXPECT_EQ(2, visualViewport.scale()); | 768 EXPECT_EQ(2, visualViewport.scale()); |
765 | 769 |
766 // Navigate again, this time the FrameView should be smaller. | 770 // Navigate again, this time the FrameView should be smaller. |
767 registerMockedHttpURLLoad("viewport-device-width.html"); | 771 registerMockedHttpURLLoad("viewport-device-width.html"); |
768 navigateTo(m_baseURL + "viewport-device-width.html"); | 772 navigateTo(m_baseURL + "viewport-device-width.html"); |
769 | 773 |
770 // Ensure the scroll layer matches the frame view's size. | 774 // Ensure the scroll layer matches the frame view's size. |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
848 | 852 |
849 // Test that the HistoryItem for the page stores the visual viewport's offset an
d scale. | 853 // Test that the HistoryItem for the page stores the visual viewport's offset an
d scale. |
850 TEST_P(ParameterizedVisualViewportTest, TestSavedToHistoryItem) { | 854 TEST_P(ParameterizedVisualViewportTest, TestSavedToHistoryItem) { |
851 initializeWithDesktopSettings(); | 855 initializeWithDesktopSettings(); |
852 webViewImpl()->resize(IntSize(200, 300)); | 856 webViewImpl()->resize(IntSize(200, 300)); |
853 webViewImpl()->updateAllLifecyclePhases(); | 857 webViewImpl()->updateAllLifecyclePhases(); |
854 | 858 |
855 registerMockedHttpURLLoad("200-by-300.html"); | 859 registerMockedHttpURLLoad("200-by-300.html"); |
856 navigateTo(m_baseURL + "200-by-300.html"); | 860 navigateTo(m_baseURL + "200-by-300.html"); |
857 | 861 |
858 EXPECT_FLOAT_POINT_EQ(FloatPoint(0, 0), | 862 EXPECT_SIZE_EQ(ScrollOffset(0, 0), |
859 toLocalFrame(webViewImpl()->page()->mainFrame()) | 863 toLocalFrame(webViewImpl()->page()->mainFrame()) |
860 ->loader() | 864 ->loader() |
861 .currentItem() | 865 .currentItem() |
862 ->visualViewportScrollPoint()); | 866 ->visualViewportScrollOffset()); |
863 | 867 |
864 VisualViewport& visualViewport = | 868 VisualViewport& visualViewport = |
865 frame()->page()->frameHost().visualViewport(); | 869 frame()->page()->frameHost().visualViewport(); |
866 visualViewport.setScale(2); | 870 visualViewport.setScale(2); |
867 | 871 |
868 EXPECT_EQ(2, toLocalFrame(webViewImpl()->page()->mainFrame()) | 872 EXPECT_EQ(2, toLocalFrame(webViewImpl()->page()->mainFrame()) |
869 ->loader() | 873 ->loader() |
870 .currentItem() | 874 .currentItem() |
871 ->pageScaleFactor()); | 875 ->pageScaleFactor()); |
872 | 876 |
873 visualViewport.setLocation(FloatPoint(10, 20)); | 877 visualViewport.setLocation(FloatPoint(10, 20)); |
874 | 878 |
875 EXPECT_FLOAT_POINT_EQ(FloatPoint(10, 20), | 879 EXPECT_SIZE_EQ(ScrollOffset(10, 20), |
876 toLocalFrame(webViewImpl()->page()->mainFrame()) | 880 toLocalFrame(webViewImpl()->page()->mainFrame()) |
877 ->loader() | 881 ->loader() |
878 .currentItem() | 882 .currentItem() |
879 ->visualViewportScrollPoint()); | 883 ->visualViewportScrollOffset()); |
880 } | 884 } |
881 | 885 |
882 // Test restoring a HistoryItem properly restores the visual viewport's state. | 886 // Test restoring a HistoryItem properly restores the visual viewport's state. |
883 TEST_P(ParameterizedVisualViewportTest, TestRestoredFromHistoryItem) { | 887 TEST_P(ParameterizedVisualViewportTest, TestRestoredFromHistoryItem) { |
884 initializeWithDesktopSettings(); | 888 initializeWithDesktopSettings(); |
885 webViewImpl()->resize(IntSize(200, 300)); | 889 webViewImpl()->resize(IntSize(200, 300)); |
886 | 890 |
887 registerMockedHttpURLLoad("200-by-300.html"); | 891 registerMockedHttpURLLoad("200-by-300.html"); |
888 | 892 |
889 WebHistoryItem item; | 893 WebHistoryItem item; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
924 item.setScrollOffset(WebPoint(120, 180)); | 928 item.setScrollOffset(WebPoint(120, 180)); |
925 item.setPageScaleFactor(2); | 929 item.setPageScaleFactor(2); |
926 | 930 |
927 FrameTestHelpers::loadHistoryItem(webViewImpl()->mainFrame(), item, | 931 FrameTestHelpers::loadHistoryItem(webViewImpl()->mainFrame(), item, |
928 WebHistoryDifferentDocumentLoad, | 932 WebHistoryDifferentDocumentLoad, |
929 WebCachePolicy::UseProtocolCachePolicy); | 933 WebCachePolicy::UseProtocolCachePolicy); |
930 | 934 |
931 VisualViewport& visualViewport = | 935 VisualViewport& visualViewport = |
932 frame()->page()->frameHost().visualViewport(); | 936 frame()->page()->frameHost().visualViewport(); |
933 EXPECT_EQ(2, visualViewport.scale()); | 937 EXPECT_EQ(2, visualViewport.scale()); |
934 EXPECT_POINT_EQ(IntPoint(100, 150), frame()->view()->scrollPosition()); | 938 EXPECT_SIZE_EQ(ScrollOffset(100, 150), frame()->view()->scrollOffset()); |
935 EXPECT_FLOAT_POINT_EQ(FloatPoint(20, 30), | 939 EXPECT_FLOAT_POINT_EQ(FloatPoint(20, 30), |
936 visualViewport.visibleRect().location()); | 940 visualViewport.visibleRect().location()); |
937 } | 941 } |
938 | 942 |
939 // Test that navigation to a new page with a different sized main frame doesn't | 943 // Test that navigation to a new page with a different sized main frame doesn't |
940 // clobber the history item's main frame scroll offset. crbug.com/371867 | 944 // clobber the history item's main frame scroll offset. crbug.com/371867 |
941 TEST_P(ParameterizedVisualViewportTest, | 945 TEST_P(ParameterizedVisualViewportTest, |
942 TestNavigateToSmallerFrameViewHistoryItemClobberBug) { | 946 TestNavigateToSmallerFrameViewHistoryItemClobberBug) { |
943 initializeWithAndroidSettings(); | 947 initializeWithAndroidSettings(); |
944 webViewImpl()->resize(IntSize(400, 400)); | 948 webViewImpl()->resize(IntSize(400, 400)); |
945 webViewImpl()->updateAllLifecyclePhases(); | 949 webViewImpl()->updateAllLifecyclePhases(); |
946 | 950 |
947 registerMockedHttpURLLoad("content-width-1000.html"); | 951 registerMockedHttpURLLoad("content-width-1000.html"); |
948 navigateTo(m_baseURL + "content-width-1000.html"); | 952 navigateTo(m_baseURL + "content-width-1000.html"); |
949 | 953 |
950 FrameView* frameView = webViewImpl()->mainFrameImpl()->frameView(); | 954 FrameView* frameView = webViewImpl()->mainFrameImpl()->frameView(); |
951 frameView->layoutViewportScrollableArea()->setScrollPosition( | 955 frameView->layoutViewportScrollableArea()->setScrollOffset( |
952 IntPoint(0, 1000), ProgrammaticScroll); | 956 ScrollOffset(0, 1000), ProgrammaticScroll); |
953 | 957 |
954 EXPECT_SIZE_EQ(IntSize(1000, 1000), frameView->frameRect().size()); | 958 EXPECT_SIZE_EQ(IntSize(1000, 1000), frameView->frameRect().size()); |
955 | 959 |
956 VisualViewport& visualViewport = | 960 VisualViewport& visualViewport = |
957 frame()->page()->frameHost().visualViewport(); | 961 frame()->page()->frameHost().visualViewport(); |
958 visualViewport.setScale(2); | 962 visualViewport.setScale(2); |
959 visualViewport.setLocation(FloatPoint(350, 350)); | 963 visualViewport.setLocation(FloatPoint(350, 350)); |
960 | 964 |
961 Persistent<HistoryItem> firstItem = | 965 Persistent<HistoryItem> firstItem = |
962 webViewImpl()->mainFrameImpl()->frame()->loader().currentItem(); | 966 webViewImpl()->mainFrameImpl()->frame()->loader().currentItem(); |
963 EXPECT_POINT_EQ(IntPoint(0, 1000), firstItem->scrollPoint()); | 967 EXPECT_SIZE_EQ(ScrollOffset(0, 1000), firstItem->scrollOffset()); |
964 | 968 |
965 // Now navigate to a page which causes a smaller frameView. Make sure that | 969 // Now navigate to a page which causes a smaller frameView. Make sure that |
966 // navigating doesn't cause the history item to set a new scroll offset | 970 // navigating doesn't cause the history item to set a new scroll offset |
967 // before the item was replaced. | 971 // before the item was replaced. |
968 navigateTo("about:blank"); | 972 navigateTo("about:blank"); |
969 frameView = webViewImpl()->mainFrameImpl()->frameView(); | 973 frameView = webViewImpl()->mainFrameImpl()->frameView(); |
970 | 974 |
971 EXPECT_NE(firstItem, | 975 EXPECT_NE(firstItem, |
972 webViewImpl()->mainFrameImpl()->frame()->loader().currentItem()); | 976 webViewImpl()->mainFrameImpl()->frame()->loader().currentItem()); |
973 EXPECT_LT(frameView->frameRect().size().width(), 1000); | 977 EXPECT_LT(frameView->frameRect().size().width(), 1000); |
974 EXPECT_POINT_EQ(IntPoint(0, 1000), firstItem->scrollPoint()); | 978 EXPECT_SIZE_EQ(ScrollOffset(0, 1000), firstItem->scrollOffset()); |
975 } | 979 } |
976 | 980 |
977 // Test that the coordinates sent into moveRangeSelection are offset by the | 981 // Test that the coordinates sent into moveRangeSelection are offset by the |
978 // visual viewport's location. | 982 // visual viewport's location. |
979 TEST_P(ParameterizedVisualViewportTest, | 983 TEST_P(ParameterizedVisualViewportTest, |
980 DISABLED_TestWebFrameRangeAccountsForVisualViewportScroll) { | 984 DISABLED_TestWebFrameRangeAccountsForVisualViewportScroll) { |
981 initializeWithDesktopSettings(); | 985 initializeWithDesktopSettings(); |
982 webViewImpl()->settings()->setDefaultFontSize(12); | 986 webViewImpl()->settings()->setDefaultFontSize(12); |
983 webViewImpl()->resize(WebSize(640, 480)); | 987 webViewImpl()->resize(WebSize(640, 480)); |
984 registerMockedHttpURLLoad("move_range.html"); | 988 registerMockedHttpURLLoad("move_range.html"); |
(...skipping 13 matching lines...) Expand all Loading... |
998 | 1002 |
999 webViewImpl()->selectionBounds(baseRect, extentRect); | 1003 webViewImpl()->selectionBounds(baseRect, extentRect); |
1000 WebPoint initialPoint(baseRect.x, baseRect.y); | 1004 WebPoint initialPoint(baseRect.x, baseRect.y); |
1001 WebPoint endPoint(extentRect.x, extentRect.y); | 1005 WebPoint endPoint(extentRect.x, extentRect.y); |
1002 | 1006 |
1003 // Move the visual viewport over and make the selection in the same | 1007 // Move the visual viewport over and make the selection in the same |
1004 // screen-space location. The selection should change to two characters to | 1008 // screen-space location. The selection should change to two characters to |
1005 // the right and down one line. | 1009 // the right and down one line. |
1006 VisualViewport& visualViewport = | 1010 VisualViewport& visualViewport = |
1007 frame()->page()->frameHost().visualViewport(); | 1011 frame()->page()->frameHost().visualViewport(); |
1008 visualViewport.move(FloatPoint(60, 25)); | 1012 visualViewport.move(ScrollOffset(60, 25)); |
1009 mainFrame->toWebLocalFrame()->moveRangeSelection(initialPoint, endPoint); | 1013 mainFrame->toWebLocalFrame()->moveRangeSelection(initialPoint, endPoint); |
1010 EXPECT_EQ("t ", mainFrame->toWebLocalFrame()->selectionAsText().utf8()); | 1014 EXPECT_EQ("t ", mainFrame->toWebLocalFrame()->selectionAsText().utf8()); |
1011 } | 1015 } |
1012 | 1016 |
1013 // Test that the scrollFocusedEditableElementIntoRect method works with the visu
al viewport. | 1017 // Test that the scrollFocusedEditableElementIntoRect method works with the visu
al viewport. |
1014 TEST_P(ParameterizedVisualViewportTest, | 1018 TEST_P(ParameterizedVisualViewportTest, |
1015 DISABLED_TestScrollFocusedEditableElementIntoRect) { | 1019 DISABLED_TestScrollFocusedEditableElementIntoRect) { |
1016 initializeWithDesktopSettings(); | 1020 initializeWithDesktopSettings(); |
1017 webViewImpl()->resize(IntSize(500, 300)); | 1021 webViewImpl()->resize(IntSize(500, 300)); |
1018 | 1022 |
1019 registerMockedHttpURLLoad("pinch-viewport-input-field.html"); | 1023 registerMockedHttpURLLoad("pinch-viewport-input-field.html"); |
1020 navigateTo(m_baseURL + "pinch-viewport-input-field.html"); | 1024 navigateTo(m_baseURL + "pinch-viewport-input-field.html"); |
1021 | 1025 |
1022 VisualViewport& visualViewport = | 1026 VisualViewport& visualViewport = |
1023 frame()->page()->frameHost().visualViewport(); | 1027 frame()->page()->frameHost().visualViewport(); |
1024 webViewImpl()->resizeVisualViewport(IntSize(200, 100)); | 1028 webViewImpl()->resizeVisualViewport(IntSize(200, 100)); |
1025 webViewImpl()->setInitialFocus(false); | 1029 webViewImpl()->setInitialFocus(false); |
1026 visualViewport.setLocation(FloatPoint()); | 1030 visualViewport.setLocation(FloatPoint()); |
1027 webViewImpl()->scrollFocusedEditableElementIntoRect(IntRect(0, 0, 500, 200)); | 1031 webViewImpl()->scrollFocusedEditableElementIntoRect(IntRect(0, 0, 500, 200)); |
1028 | 1032 |
1029 EXPECT_POINT_EQ(IntPoint(0, frame()->view()->maximumScrollPosition().y()), | 1033 EXPECT_SIZE_EQ( |
1030 frame()->view()->scrollPosition()); | 1034 ScrollOffset(0, frame()->view()->maximumScrollOffset().height()), |
| 1035 frame()->view()->scrollOffset()); |
1031 EXPECT_FLOAT_POINT_EQ(FloatPoint(150, 200), | 1036 EXPECT_FLOAT_POINT_EQ(FloatPoint(150, 200), |
1032 visualViewport.visibleRect().location()); | 1037 visualViewport.visibleRect().location()); |
1033 | 1038 |
1034 // Try it again but with the page zoomed in | 1039 // Try it again but with the page zoomed in |
1035 frame()->view()->setScrollPosition(IntPoint(0, 0), ProgrammaticScroll); | 1040 frame()->view()->setScrollOffset(ScrollOffset(0, 0), ProgrammaticScroll); |
1036 webViewImpl()->resizeVisualViewport(IntSize(500, 300)); | 1041 webViewImpl()->resizeVisualViewport(IntSize(500, 300)); |
1037 visualViewport.setLocation(FloatPoint(0, 0)); | 1042 visualViewport.setLocation(FloatPoint(0, 0)); |
1038 | 1043 |
1039 webViewImpl()->setPageScaleFactor(2); | 1044 webViewImpl()->setPageScaleFactor(2); |
1040 webViewImpl()->scrollFocusedEditableElementIntoRect(IntRect(0, 0, 500, 200)); | 1045 webViewImpl()->scrollFocusedEditableElementIntoRect(IntRect(0, 0, 500, 200)); |
1041 EXPECT_POINT_EQ(IntPoint(0, frame()->view()->maximumScrollPosition().y()), | 1046 EXPECT_SIZE_EQ( |
1042 frame()->view()->scrollPosition()); | 1047 ScrollOffset(0, frame()->view()->maximumScrollOffset().height()), |
| 1048 frame()->view()->scrollOffset()); |
1043 EXPECT_FLOAT_POINT_EQ(FloatPoint(125, 150), | 1049 EXPECT_FLOAT_POINT_EQ(FloatPoint(125, 150), |
1044 visualViewport.visibleRect().location()); | 1050 visualViewport.visibleRect().location()); |
1045 | 1051 |
1046 // Once more but make sure that we don't move the visual viewport unless neces
sary. | 1052 // Once more but make sure that we don't move the visual viewport unless neces
sary. |
1047 registerMockedHttpURLLoad("pinch-viewport-input-field-long-and-wide.html"); | 1053 registerMockedHttpURLLoad("pinch-viewport-input-field-long-and-wide.html"); |
1048 navigateTo(m_baseURL + "pinch-viewport-input-field-long-and-wide.html"); | 1054 navigateTo(m_baseURL + "pinch-viewport-input-field-long-and-wide.html"); |
1049 webViewImpl()->setInitialFocus(false); | 1055 webViewImpl()->setInitialFocus(false); |
1050 visualViewport.setLocation(FloatPoint()); | 1056 visualViewport.setLocation(FloatPoint()); |
1051 frame()->view()->setScrollPosition(IntPoint(0, 0), ProgrammaticScroll); | 1057 frame()->view()->setScrollOffset(ScrollOffset(0, 0), ProgrammaticScroll); |
1052 webViewImpl()->resizeVisualViewport(IntSize(500, 300)); | 1058 webViewImpl()->resizeVisualViewport(IntSize(500, 300)); |
1053 visualViewport.setLocation(FloatPoint(30, 50)); | 1059 visualViewport.setLocation(FloatPoint(30, 50)); |
1054 | 1060 |
1055 webViewImpl()->setPageScaleFactor(2); | 1061 webViewImpl()->setPageScaleFactor(2); |
1056 webViewImpl()->scrollFocusedEditableElementIntoRect(IntRect(0, 0, 500, 200)); | 1062 webViewImpl()->scrollFocusedEditableElementIntoRect(IntRect(0, 0, 500, 200)); |
1057 EXPECT_POINT_EQ(IntPoint(200 - 30 - 75, 600 - 50 - 65), | 1063 EXPECT_SIZE_EQ(ScrollOffset(200 - 30 - 75, 600 - 50 - 65), |
1058 frame()->view()->scrollPosition()); | 1064 frame()->view()->scrollOffset()); |
1059 EXPECT_FLOAT_POINT_EQ(FloatPoint(30, 50), | 1065 EXPECT_FLOAT_POINT_EQ(FloatPoint(30, 50), |
1060 visualViewport.visibleRect().location()); | 1066 visualViewport.visibleRect().location()); |
1061 } | 1067 } |
1062 | 1068 |
1063 // Test that resizing the WebView causes ViewportConstrained objects to relayout
. | 1069 // Test that resizing the WebView causes ViewportConstrained objects to relayout
. |
1064 TEST_P(ParameterizedVisualViewportTest, | 1070 TEST_P(ParameterizedVisualViewportTest, |
1065 TestWebViewResizeCausesViewportConstrainedLayout) { | 1071 TestWebViewResizeCausesViewportConstrainedLayout) { |
1066 initializeWithDesktopSettings(); | 1072 initializeWithDesktopSettings(); |
1067 webViewImpl()->resize(IntSize(500, 300)); | 1073 webViewImpl()->resize(IntSize(500, 300)); |
1068 | 1074 |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1200 frameView.layoutViewportScrollableArea(); | 1206 frameView.layoutViewportScrollableArea(); |
1201 VisualViewport& visualViewport = | 1207 VisualViewport& visualViewport = |
1202 frame()->page()->frameHost().visualViewport(); | 1208 frame()->page()->frameHost().visualViewport(); |
1203 Element* inputBox = frame()->document()->getElementById("box"); | 1209 Element* inputBox = frame()->document()->getElementById("box"); |
1204 | 1210 |
1205 webViewImpl()->setPageScaleFactor(2); | 1211 webViewImpl()->setPageScaleFactor(2); |
1206 | 1212 |
1207 // The element is already in the view so the scrollIntoView shouldn't move | 1213 // The element is already in the view so the scrollIntoView shouldn't move |
1208 // the viewport at all. | 1214 // the viewport at all. |
1209 webViewImpl()->setVisualViewportOffset(WebFloatPoint(250.25f, 100.25f)); | 1215 webViewImpl()->setVisualViewportOffset(WebFloatPoint(250.25f, 100.25f)); |
1210 layoutViewportScrollableArea->setScrollPosition(DoublePoint(0, 900.75), | 1216 layoutViewportScrollableArea->setScrollOffset(ScrollOffset(0, 900.75), |
1211 ProgrammaticScroll); | 1217 ProgrammaticScroll); |
1212 inputBox->scrollIntoViewIfNeeded(false); | 1218 inputBox->scrollIntoViewIfNeeded(false); |
1213 | 1219 |
1214 EXPECT_POINT_EQ(DoublePoint(0, 900), | 1220 EXPECT_SIZE_EQ(ScrollOffset(0, 900), |
1215 layoutViewportScrollableArea->scrollPositionDouble()); | 1221 layoutViewportScrollableArea->scrollOffset()); |
1216 EXPECT_POINT_EQ(FloatPoint(250.25f, 100.25f), visualViewport.location()); | 1222 EXPECT_POINT_EQ(FloatPoint(250.25f, 100.25f), visualViewport.location()); |
1217 | 1223 |
1218 // Change the fractional part of the frameview to one that would round down. | 1224 // Change the fractional part of the frameview to one that would round down. |
1219 layoutViewportScrollableArea->setScrollPosition(DoublePoint(0, 900.125), | 1225 layoutViewportScrollableArea->setScrollOffset(ScrollOffset(0, 900.125), |
1220 ProgrammaticScroll); | 1226 ProgrammaticScroll); |
1221 inputBox->scrollIntoViewIfNeeded(false); | 1227 inputBox->scrollIntoViewIfNeeded(false); |
1222 | 1228 |
1223 EXPECT_POINT_EQ(DoublePoint(0, 900), | 1229 EXPECT_SIZE_EQ(ScrollOffset(0, 900), |
1224 layoutViewportScrollableArea->scrollPositionDouble()); | 1230 layoutViewportScrollableArea->scrollOffset()); |
1225 EXPECT_POINT_EQ(FloatPoint(250.25f, 100.25f), visualViewport.location()); | 1231 EXPECT_POINT_EQ(FloatPoint(250.25f, 100.25f), visualViewport.location()); |
1226 | 1232 |
1227 // Repeat both tests above with the visual viewport at a high fractional. | 1233 // Repeat both tests above with the visual viewport at a high fractional. |
1228 webViewImpl()->setVisualViewportOffset(WebFloatPoint(250.875f, 100.875f)); | 1234 webViewImpl()->setVisualViewportOffset(WebFloatPoint(250.875f, 100.875f)); |
1229 layoutViewportScrollableArea->setScrollPosition(DoublePoint(0, 900.75), | 1235 layoutViewportScrollableArea->setScrollOffset(ScrollOffset(0, 900.75), |
1230 ProgrammaticScroll); | 1236 ProgrammaticScroll); |
1231 inputBox->scrollIntoViewIfNeeded(false); | 1237 inputBox->scrollIntoViewIfNeeded(false); |
1232 | 1238 |
1233 EXPECT_POINT_EQ(DoublePoint(0, 900), | 1239 EXPECT_SIZE_EQ(ScrollOffset(0, 900), |
1234 layoutViewportScrollableArea->scrollPositionDouble()); | 1240 layoutViewportScrollableArea->scrollOffset()); |
1235 EXPECT_POINT_EQ(FloatPoint(250.875f, 100.875f), visualViewport.location()); | 1241 EXPECT_POINT_EQ(FloatPoint(250.875f, 100.875f), visualViewport.location()); |
1236 | 1242 |
1237 // Change the fractional part of the frameview to one that would round down. | 1243 // Change the fractional part of the frameview to one that would round down. |
1238 layoutViewportScrollableArea->setScrollPosition(DoublePoint(0, 900.125), | 1244 layoutViewportScrollableArea->setScrollOffset(ScrollOffset(0, 900.125), |
1239 ProgrammaticScroll); | 1245 ProgrammaticScroll); |
1240 inputBox->scrollIntoViewIfNeeded(false); | 1246 inputBox->scrollIntoViewIfNeeded(false); |
1241 | 1247 |
1242 EXPECT_POINT_EQ(DoublePoint(0, 900), | 1248 EXPECT_SIZE_EQ(ScrollOffset(0, 900), |
1243 layoutViewportScrollableArea->scrollPositionDouble()); | 1249 layoutViewportScrollableArea->scrollOffset()); |
1244 EXPECT_POINT_EQ(FloatPoint(250.875f, 100.875f), visualViewport.location()); | 1250 EXPECT_POINT_EQ(FloatPoint(250.875f, 100.875f), visualViewport.location()); |
1245 | 1251 |
1246 // Both viewports with a 0.5 fraction. | 1252 // Both viewports with a 0.5 fraction. |
1247 webViewImpl()->setVisualViewportOffset(WebFloatPoint(250.5f, 100.5f)); | 1253 webViewImpl()->setVisualViewportOffset(WebFloatPoint(250.5f, 100.5f)); |
1248 layoutViewportScrollableArea->setScrollPosition(DoublePoint(0, 900.5), | 1254 layoutViewportScrollableArea->setScrollOffset(ScrollOffset(0, 900.5), |
1249 ProgrammaticScroll); | 1255 ProgrammaticScroll); |
1250 inputBox->scrollIntoViewIfNeeded(false); | 1256 inputBox->scrollIntoViewIfNeeded(false); |
1251 | 1257 |
1252 EXPECT_POINT_EQ(DoublePoint(0, 900), | 1258 EXPECT_SIZE_EQ(ScrollOffset(0, 900), |
1253 layoutViewportScrollableArea->scrollPositionDouble()); | 1259 layoutViewportScrollableArea->scrollOffset()); |
1254 EXPECT_POINT_EQ(FloatPoint(250.5f, 100.5f), visualViewport.location()); | 1260 EXPECT_POINT_EQ(FloatPoint(250.5f, 100.5f), visualViewport.location()); |
1255 } | 1261 } |
1256 | 1262 |
1257 static IntPoint expectedMaxFrameViewScrollOffset(VisualViewport& visualViewport, | 1263 static ScrollOffset expectedMaxFrameViewScrollOffset( |
1258 FrameView& frameView) { | 1264 VisualViewport& visualViewport, |
| 1265 FrameView& frameView) { |
1259 float aspectRatio = visualViewport.visibleRect().width() / | 1266 float aspectRatio = visualViewport.visibleRect().width() / |
1260 visualViewport.visibleRect().height(); | 1267 visualViewport.visibleRect().height(); |
1261 float newHeight = frameView.frameRect().width() / aspectRatio; | 1268 float newHeight = frameView.frameRect().width() / aspectRatio; |
1262 return IntPoint( | 1269 return ScrollOffset( |
1263 frameView.contentsSize().width() - frameView.frameRect().width(), | 1270 frameView.contentsSize().width() - frameView.frameRect().width(), |
1264 frameView.contentsSize().height() - newHeight); | 1271 frameView.contentsSize().height() - newHeight); |
1265 } | 1272 } |
1266 | 1273 |
1267 TEST_F(VisualViewportTest, TestTopControlsAdjustment) { | 1274 TEST_F(VisualViewportTest, TestTopControlsAdjustment) { |
1268 initializeWithAndroidSettings(); | 1275 initializeWithAndroidSettings(); |
1269 webViewImpl()->resizeWithTopControls(IntSize(500, 450), 20, false); | 1276 webViewImpl()->resizeWithTopControls(IntSize(500, 450), 20, false); |
1270 | 1277 |
1271 registerMockedHttpURLLoad("content-width-1000.html"); | 1278 registerMockedHttpURLLoad("content-width-1000.html"); |
1272 navigateTo(m_baseURL + "content-width-1000.html"); | 1279 navigateTo(m_baseURL + "content-width-1000.html"); |
1273 | 1280 |
1274 VisualViewport& visualViewport = | 1281 VisualViewport& visualViewport = |
1275 frame()->page()->frameHost().visualViewport(); | 1282 frame()->page()->frameHost().visualViewport(); |
1276 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); | 1283 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); |
1277 | 1284 |
1278 visualViewport.setScale(1); | 1285 visualViewport.setScale(1); |
1279 EXPECT_SIZE_EQ(IntSize(500, 450), visualViewport.visibleRect().size()); | 1286 EXPECT_SIZE_EQ(IntSize(500, 450), visualViewport.visibleRect().size()); |
1280 EXPECT_SIZE_EQ(IntSize(1000, 900), frameView.frameRect().size()); | 1287 EXPECT_SIZE_EQ(IntSize(1000, 900), frameView.frameRect().size()); |
1281 | 1288 |
1282 // Simulate bringing down the top controls by 20px. | 1289 // Simulate bringing down the top controls by 20px. |
1283 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), | 1290 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), |
1284 WebFloatSize(), 1, 1); | 1291 WebFloatSize(), 1, 1); |
1285 EXPECT_SIZE_EQ(IntSize(500, 430), visualViewport.visibleRect().size()); | 1292 EXPECT_SIZE_EQ(IntSize(500, 430), visualViewport.visibleRect().size()); |
1286 | 1293 |
1287 // Test that the scroll bounds are adjusted appropriately: the visual viewport | 1294 // Test that the scroll bounds are adjusted appropriately: the visual viewport |
1288 // should be shrunk by 20px to 430px. The outer viewport was shrunk to maintai
n the | 1295 // should be shrunk by 20px to 430px. The outer viewport was shrunk to maintai
n the |
1289 // aspect ratio so it's height is 860px. | 1296 // aspect ratio so it's height is 860px. |
1290 visualViewport.move(FloatPoint(10000, 10000)); | 1297 visualViewport.move(ScrollOffset(10000, 10000)); |
1291 EXPECT_POINT_EQ(FloatPoint(500, 860 - 430), visualViewport.location()); | 1298 EXPECT_POINT_EQ(FloatPoint(500, 860 - 430), visualViewport.location()); |
1292 | 1299 |
1293 // The outer viewport (FrameView) should be affected as well. | 1300 // The outer viewport (FrameView) should be affected as well. |
1294 frameView.scrollBy(IntSize(10000, 10000), UserScroll); | 1301 frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll); |
1295 EXPECT_POINT_EQ(expectedMaxFrameViewScrollOffset(visualViewport, frameView), | 1302 EXPECT_SIZE_EQ(expectedMaxFrameViewScrollOffset(visualViewport, frameView), |
1296 frameView.scrollPosition()); | 1303 frameView.scrollOffset()); |
1297 | 1304 |
1298 // Simulate bringing up the top controls by 10.5px. | 1305 // Simulate bringing up the top controls by 10.5px. |
1299 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), | 1306 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), |
1300 WebFloatSize(), 1, -10.5f / 20); | 1307 WebFloatSize(), 1, -10.5f / 20); |
1301 EXPECT_FLOAT_SIZE_EQ(FloatSize(500, 440.5f), | 1308 EXPECT_FLOAT_SIZE_EQ(FloatSize(500, 440.5f), |
1302 visualViewport.visibleRect().size()); | 1309 visualViewport.visibleRect().size()); |
1303 | 1310 |
1304 // maximumScrollPosition |ceil|s the top controls adjustment. | 1311 // maximumScrollPosition |ceil|s the top controls adjustment. |
1305 visualViewport.move(FloatPoint(10000, 10000)); | 1312 visualViewport.move(ScrollOffset(10000, 10000)); |
1306 EXPECT_FLOAT_POINT_EQ(FloatPoint(500, 881 - 441), visualViewport.location()); | 1313 EXPECT_FLOAT_POINT_EQ(FloatPoint(500, 881 - 441), visualViewport.location()); |
1307 | 1314 |
1308 // The outer viewport (FrameView) should be affected as well. | 1315 // The outer viewport (FrameView) should be affected as well. |
1309 frameView.scrollBy(IntSize(10000, 10000), UserScroll); | 1316 frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll); |
1310 EXPECT_POINT_EQ(expectedMaxFrameViewScrollOffset(visualViewport, frameView), | 1317 EXPECT_SIZE_EQ(expectedMaxFrameViewScrollOffset(visualViewport, frameView), |
1311 frameView.scrollPosition()); | 1318 frameView.scrollOffset()); |
1312 } | 1319 } |
1313 | 1320 |
1314 TEST_F(VisualViewportTest, TestTopControlsAdjustmentWithScale) { | 1321 TEST_F(VisualViewportTest, TestTopControlsAdjustmentWithScale) { |
1315 initializeWithAndroidSettings(); | 1322 initializeWithAndroidSettings(); |
1316 webViewImpl()->resizeWithTopControls(IntSize(500, 450), 20, false); | 1323 webViewImpl()->resizeWithTopControls(IntSize(500, 450), 20, false); |
1317 | 1324 |
1318 registerMockedHttpURLLoad("content-width-1000.html"); | 1325 registerMockedHttpURLLoad("content-width-1000.html"); |
1319 navigateTo(m_baseURL + "content-width-1000.html"); | 1326 navigateTo(m_baseURL + "content-width-1000.html"); |
1320 | 1327 |
1321 VisualViewport& visualViewport = | 1328 VisualViewport& visualViewport = |
1322 frame()->page()->frameHost().visualViewport(); | 1329 frame()->page()->frameHost().visualViewport(); |
1323 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); | 1330 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); |
1324 | 1331 |
1325 visualViewport.setScale(2); | 1332 visualViewport.setScale(2); |
1326 EXPECT_SIZE_EQ(IntSize(250, 225), visualViewport.visibleRect().size()); | 1333 EXPECT_SIZE_EQ(IntSize(250, 225), visualViewport.visibleRect().size()); |
1327 EXPECT_SIZE_EQ(IntSize(1000, 900), frameView.frameRect().size()); | 1334 EXPECT_SIZE_EQ(IntSize(1000, 900), frameView.frameRect().size()); |
1328 | 1335 |
1329 // Simulate bringing down the top controls by 20px. Since we're zoomed in, | 1336 // Simulate bringing down the top controls by 20px. Since we're zoomed in, |
1330 // the top controls take up half as much space (in document-space) than | 1337 // the top controls take up half as much space (in document-space) than |
1331 // they do at an unzoomed level. | 1338 // they do at an unzoomed level. |
1332 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), | 1339 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), |
1333 WebFloatSize(), 1, 1); | 1340 WebFloatSize(), 1, 1); |
1334 EXPECT_SIZE_EQ(IntSize(250, 215), visualViewport.visibleRect().size()); | 1341 EXPECT_SIZE_EQ(IntSize(250, 215), visualViewport.visibleRect().size()); |
1335 | 1342 |
1336 // Test that the scroll bounds are adjusted appropriately. | 1343 // Test that the scroll bounds are adjusted appropriately. |
1337 visualViewport.move(FloatPoint(10000, 10000)); | 1344 visualViewport.move(ScrollOffset(10000, 10000)); |
1338 EXPECT_POINT_EQ(FloatPoint(750, 860 - 215), visualViewport.location()); | 1345 EXPECT_POINT_EQ(FloatPoint(750, 860 - 215), visualViewport.location()); |
1339 | 1346 |
1340 // The outer viewport (FrameView) should be affected as well. | 1347 // The outer viewport (FrameView) should be affected as well. |
1341 frameView.scrollBy(IntSize(10000, 10000), UserScroll); | 1348 frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll); |
1342 IntPoint expected = | 1349 ScrollOffset expected = |
1343 expectedMaxFrameViewScrollOffset(visualViewport, frameView); | 1350 expectedMaxFrameViewScrollOffset(visualViewport, frameView); |
1344 EXPECT_POINT_EQ(expected, frameView.scrollPosition()); | 1351 EXPECT_SIZE_EQ(expected, frameView.scrollOffset()); |
1345 | 1352 |
1346 // Scale back out, FrameView max scroll shouldn't have changed. Visual | 1353 // Scale back out, FrameView max scroll shouldn't have changed. Visual |
1347 // viewport should be moved up to accomodate larger view. | 1354 // viewport should be moved up to accomodate larger view. |
1348 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), | 1355 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), |
1349 WebFloatSize(), 0.5f, 0); | 1356 WebFloatSize(), 0.5f, 0); |
1350 EXPECT_EQ(1, visualViewport.scale()); | 1357 EXPECT_EQ(1, visualViewport.scale()); |
1351 EXPECT_POINT_EQ(expected, frameView.scrollPosition()); | 1358 EXPECT_SIZE_EQ(expected, frameView.scrollOffset()); |
1352 frameView.scrollBy(IntSize(10000, 10000), UserScroll); | 1359 frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll); |
1353 EXPECT_POINT_EQ(expected, frameView.scrollPosition()); | 1360 EXPECT_SIZE_EQ(expected, frameView.scrollOffset()); |
1354 | 1361 |
1355 EXPECT_POINT_EQ(FloatPoint(500, 860 - 430), visualViewport.location()); | 1362 EXPECT_POINT_EQ(FloatPoint(500, 860 - 430), visualViewport.location()); |
1356 visualViewport.move(FloatPoint(10000, 10000)); | 1363 visualViewport.move(ScrollOffset(10000, 10000)); |
1357 EXPECT_POINT_EQ(FloatPoint(500, 860 - 430), visualViewport.location()); | 1364 EXPECT_POINT_EQ(FloatPoint(500, 860 - 430), visualViewport.location()); |
1358 | 1365 |
1359 // Scale out, use a scale that causes fractional rects. | 1366 // Scale out, use a scale that causes fractional rects. |
1360 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), | 1367 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), |
1361 WebFloatSize(), 0.8f, -1); | 1368 WebFloatSize(), 0.8f, -1); |
1362 EXPECT_SIZE_EQ(FloatSize(625, 562.5), visualViewport.visibleRect().size()); | 1369 EXPECT_SIZE_EQ(FloatSize(625, 562.5), visualViewport.visibleRect().size()); |
1363 | 1370 |
1364 // Bring out the top controls by 11 | 1371 // Bring out the top controls by 11 |
1365 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), | 1372 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), |
1366 WebFloatSize(), 1, 11 / 20.f); | 1373 WebFloatSize(), 1, 11 / 20.f); |
1367 EXPECT_SIZE_EQ(FloatSize(625, 548.75), visualViewport.visibleRect().size()); | 1374 EXPECT_SIZE_EQ(FloatSize(625, 548.75), visualViewport.visibleRect().size()); |
1368 | 1375 |
1369 // Ensure max scroll offsets are updated properly. | 1376 // Ensure max scroll offsets are updated properly. |
1370 visualViewport.move(FloatPoint(10000, 10000)); | 1377 visualViewport.move(ScrollOffset(10000, 10000)); |
1371 EXPECT_FLOAT_POINT_EQ(FloatPoint(375, 877.5 - 548.75), | 1378 EXPECT_FLOAT_POINT_EQ(FloatPoint(375, 877.5 - 548.75), |
1372 visualViewport.location()); | 1379 visualViewport.location()); |
1373 | 1380 |
1374 frameView.scrollBy(IntSize(10000, 10000), UserScroll); | 1381 frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll); |
1375 EXPECT_POINT_EQ(expectedMaxFrameViewScrollOffset(visualViewport, frameView), | 1382 EXPECT_SIZE_EQ(expectedMaxFrameViewScrollOffset(visualViewport, frameView), |
1376 frameView.scrollPosition()); | 1383 frameView.scrollOffset()); |
1377 } | 1384 } |
1378 | 1385 |
1379 // Tests that a scroll all the way to the bottom of the page, while hiding the | 1386 // Tests that a scroll all the way to the bottom of the page, while hiding the |
1380 // top controls doesn't cause a clamp in the viewport scroll offset when the | 1387 // top controls doesn't cause a clamp in the viewport scroll offset when the |
1381 // top controls initiated resize occurs. | 1388 // top controls initiated resize occurs. |
1382 TEST_F(VisualViewportTest, TestTopControlsAdjustmentAndResize) { | 1389 TEST_F(VisualViewportTest, TestTopControlsAdjustmentAndResize) { |
1383 int topControlsHeight = 20; | 1390 int topControlsHeight = 20; |
1384 int visualViewportHeight = 450; | 1391 int visualViewportHeight = 450; |
1385 int layoutViewportHeight = 900; | 1392 int layoutViewportHeight = 900; |
1386 float pageScale = 2; | 1393 float pageScale = 2; |
(...skipping 17 matching lines...) Expand all Loading... |
1404 EXPECT_SIZE_EQ( | 1411 EXPECT_SIZE_EQ( |
1405 IntSize(250, (visualViewportHeight - topControlsHeight) / pageScale), | 1412 IntSize(250, (visualViewportHeight - topControlsHeight) / pageScale), |
1406 visualViewport.visibleRect().size()); | 1413 visualViewport.visibleRect().size()); |
1407 EXPECT_SIZE_EQ( | 1414 EXPECT_SIZE_EQ( |
1408 IntSize(1000, layoutViewportHeight - topControlsHeight / minPageScale), | 1415 IntSize(1000, layoutViewportHeight - topControlsHeight / minPageScale), |
1409 frameView.frameRect().size()); | 1416 frameView.frameRect().size()); |
1410 EXPECT_SIZE_EQ(IntSize(500, visualViewportHeight - topControlsHeight), | 1417 EXPECT_SIZE_EQ(IntSize(500, visualViewportHeight - topControlsHeight), |
1411 visualViewport.size()); | 1418 visualViewport.size()); |
1412 | 1419 |
1413 // Scroll all the way to the bottom, hiding the top controls in the process. | 1420 // Scroll all the way to the bottom, hiding the top controls in the process. |
1414 visualViewport.move(FloatPoint(10000, 10000)); | 1421 visualViewport.move(ScrollOffset(10000, 10000)); |
1415 frameView.scrollBy(IntSize(10000, 10000), UserScroll); | 1422 frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll); |
1416 webViewImpl()->topControls().setShownRatio(0); | 1423 webViewImpl()->topControls().setShownRatio(0); |
1417 | 1424 |
1418 EXPECT_SIZE_EQ(IntSize(250, visualViewportHeight / pageScale), | 1425 EXPECT_SIZE_EQ(IntSize(250, visualViewportHeight / pageScale), |
1419 visualViewport.visibleRect().size()); | 1426 visualViewport.visibleRect().size()); |
1420 | 1427 |
1421 IntPoint frameViewExpected = | 1428 ScrollOffset frameViewExpected = |
1422 expectedMaxFrameViewScrollOffset(visualViewport, frameView); | 1429 expectedMaxFrameViewScrollOffset(visualViewport, frameView); |
1423 FloatPoint visualViewportExpected = | 1430 FloatPoint visualViewportExpected = |
1424 FloatPoint(750, layoutViewportHeight - visualViewportHeight / pageScale); | 1431 FloatPoint(750, layoutViewportHeight - visualViewportHeight / pageScale); |
1425 | 1432 |
1426 EXPECT_POINT_EQ(visualViewportExpected, visualViewport.location()); | 1433 EXPECT_POINT_EQ(visualViewportExpected, visualViewport.location()); |
1427 EXPECT_POINT_EQ(frameViewExpected, frameView.scrollPosition()); | 1434 EXPECT_SIZE_EQ(frameViewExpected, frameView.scrollOffset()); |
1428 | 1435 |
1429 FloatPoint totalExpected = visualViewportExpected + frameViewExpected; | 1436 FloatPoint totalExpected = visualViewportExpected + frameViewExpected; |
1430 | 1437 |
1431 // Resize the widget to match the top controls adjustment. Ensure that the | 1438 // Resize the widget to match the top controls adjustment. Ensure that the |
1432 // total offset (i.e. what the user sees) doesn't change because of clamping | 1439 // total offset (i.e. what the user sees) doesn't change because of clamping |
1433 // the offsets to valid values. | 1440 // the offsets to valid values. |
1434 webViewImpl()->resizeWithTopControls(WebSize(500, visualViewportHeight), 20, | 1441 webViewImpl()->resizeWithTopControls(WebSize(500, visualViewportHeight), 20, |
1435 false); | 1442 false); |
1436 | 1443 |
1437 EXPECT_SIZE_EQ(IntSize(500, visualViewportHeight), visualViewport.size()); | 1444 EXPECT_SIZE_EQ(IntSize(500, visualViewportHeight), visualViewport.size()); |
1438 EXPECT_SIZE_EQ(IntSize(250, visualViewportHeight / pageScale), | 1445 EXPECT_SIZE_EQ(IntSize(250, visualViewportHeight / pageScale), |
1439 visualViewport.visibleRect().size()); | 1446 visualViewport.visibleRect().size()); |
1440 EXPECT_SIZE_EQ(IntSize(1000, layoutViewportHeight), | 1447 EXPECT_SIZE_EQ(IntSize(1000, layoutViewportHeight), |
1441 frameView.frameRect().size()); | 1448 frameView.frameRect().size()); |
1442 EXPECT_POINT_EQ(totalExpected, | 1449 EXPECT_POINT_EQ(totalExpected, |
1443 frameView.scrollPosition() + visualViewport.location()); | 1450 visualViewport.location() + frameView.scrollOffset()); |
1444 } | 1451 } |
1445 | 1452 |
1446 // Tests that a scroll all the way to the bottom while showing the top controls | 1453 // Tests that a scroll all the way to the bottom while showing the top controls |
1447 // doesn't cause a clamp to the viewport scroll offset when the top controls | 1454 // doesn't cause a clamp to the viewport scroll offset when the top controls |
1448 // initiated resize occurs. | 1455 // initiated resize occurs. |
1449 TEST_F(VisualViewportTest, TestTopControlsShrinkAdjustmentAndResize) { | 1456 TEST_F(VisualViewportTest, TestTopControlsShrinkAdjustmentAndResize) { |
1450 int topControlsHeight = 20; | 1457 int topControlsHeight = 20; |
1451 int visualViewportHeight = 500; | 1458 int visualViewportHeight = 500; |
1452 int layoutViewportHeight = 1000; | 1459 int layoutViewportHeight = 1000; |
1453 int contentHeight = 2000; | 1460 int contentHeight = 2000; |
(...skipping 18 matching lines...) Expand all Loading... |
1472 EXPECT_SIZE_EQ(IntSize(250, visualViewportHeight / pageScale), | 1479 EXPECT_SIZE_EQ(IntSize(250, visualViewportHeight / pageScale), |
1473 visualViewport.visibleRect().size()); | 1480 visualViewport.visibleRect().size()); |
1474 EXPECT_SIZE_EQ(IntSize(1000, layoutViewportHeight), | 1481 EXPECT_SIZE_EQ(IntSize(1000, layoutViewportHeight), |
1475 frameView.frameRect().size()); | 1482 frameView.frameRect().size()); |
1476 EXPECT_SIZE_EQ(IntSize(500, visualViewportHeight), visualViewport.size()); | 1483 EXPECT_SIZE_EQ(IntSize(500, visualViewportHeight), visualViewport.size()); |
1477 | 1484 |
1478 // Scroll all the way to the bottom, showing the the top controls in the | 1485 // Scroll all the way to the bottom, showing the the top controls in the |
1479 // process. (This could happen via window.scrollTo during a scroll, for | 1486 // process. (This could happen via window.scrollTo during a scroll, for |
1480 // example). | 1487 // example). |
1481 webViewImpl()->topControls().setShownRatio(1); | 1488 webViewImpl()->topControls().setShownRatio(1); |
1482 visualViewport.move(FloatPoint(10000, 10000)); | 1489 visualViewport.move(ScrollOffset(10000, 10000)); |
1483 frameView.scrollBy(IntSize(10000, 10000), UserScroll); | 1490 frameView.scrollBy(ScrollOffset(10000, 10000), UserScroll); |
1484 | 1491 |
1485 EXPECT_SIZE_EQ( | 1492 EXPECT_SIZE_EQ( |
1486 IntSize(250, (visualViewportHeight - topControlsHeight) / pageScale), | 1493 IntSize(250, (visualViewportHeight - topControlsHeight) / pageScale), |
1487 visualViewport.visibleRect().size()); | 1494 visualViewport.visibleRect().size()); |
1488 | 1495 |
1489 IntPoint frameViewExpected = IntPoint( | 1496 ScrollOffset frameViewExpected( |
1490 0, contentHeight - | 1497 0, contentHeight - |
1491 (layoutViewportHeight - topControlsHeight / minPageScale)); | 1498 (layoutViewportHeight - topControlsHeight / minPageScale)); |
1492 FloatPoint visualViewportExpected = | 1499 FloatPoint visualViewportExpected = |
1493 FloatPoint(750, (layoutViewportHeight - topControlsHeight / minPageScale - | 1500 FloatPoint(750, (layoutViewportHeight - topControlsHeight / minPageScale - |
1494 visualViewport.visibleRect().height())); | 1501 visualViewport.visibleRect().height())); |
1495 | 1502 |
1496 EXPECT_POINT_EQ(visualViewportExpected, visualViewport.location()); | 1503 EXPECT_POINT_EQ(visualViewportExpected, visualViewport.location()); |
1497 EXPECT_POINT_EQ(frameViewExpected, frameView.scrollPosition()); | 1504 EXPECT_SIZE_EQ(frameViewExpected, frameView.scrollOffset()); |
1498 | 1505 |
1499 FloatPoint totalExpected = visualViewportExpected + frameViewExpected; | 1506 FloatPoint totalExpected = visualViewportExpected + frameViewExpected; |
1500 | 1507 |
1501 // Resize the widget to match the top controls adjustment. Ensure that the | 1508 // Resize the widget to match the top controls adjustment. Ensure that the |
1502 // total offset (i.e. what the user sees) doesn't change because of clamping | 1509 // total offset (i.e. what the user sees) doesn't change because of clamping |
1503 // the offsets to valid values. | 1510 // the offsets to valid values. |
1504 webViewImpl()->resizeWithTopControls( | 1511 webViewImpl()->resizeWithTopControls( |
1505 WebSize(500, visualViewportHeight - topControlsHeight), 20, true); | 1512 WebSize(500, visualViewportHeight - topControlsHeight), 20, true); |
1506 | 1513 |
1507 EXPECT_SIZE_EQ(IntSize(500, visualViewportHeight - topControlsHeight), | 1514 EXPECT_SIZE_EQ(IntSize(500, visualViewportHeight - topControlsHeight), |
1508 visualViewport.size()); | 1515 visualViewport.size()); |
1509 EXPECT_SIZE_EQ( | 1516 EXPECT_SIZE_EQ( |
1510 IntSize(250, (visualViewportHeight - topControlsHeight) / pageScale), | 1517 IntSize(250, (visualViewportHeight - topControlsHeight) / pageScale), |
1511 visualViewport.visibleRect().size()); | 1518 visualViewport.visibleRect().size()); |
1512 EXPECT_SIZE_EQ( | 1519 EXPECT_SIZE_EQ( |
1513 IntSize(1000, layoutViewportHeight - topControlsHeight / minPageScale), | 1520 IntSize(1000, layoutViewportHeight - topControlsHeight / minPageScale), |
1514 frameView.frameRect().size()); | 1521 frameView.frameRect().size()); |
1515 EXPECT_POINT_EQ(totalExpected, | 1522 EXPECT_POINT_EQ(totalExpected, |
1516 frameView.scrollPosition() + visualViewport.location()); | 1523 visualViewport.location() + frameView.scrollOffset()); |
1517 } | 1524 } |
1518 | 1525 |
1519 // Tests that a resize due to top controls hiding doesn't incorrectly clamp the | 1526 // Tests that a resize due to top controls hiding doesn't incorrectly clamp the |
1520 // main frame's scroll offset. crbug.com/428193. | 1527 // main frame's scroll offset. crbug.com/428193. |
1521 TEST_F(VisualViewportTest, TestTopControlHidingResizeDoesntClampMainFrame) { | 1528 TEST_F(VisualViewportTest, TestTopControlHidingResizeDoesntClampMainFrame) { |
1522 initializeWithAndroidSettings(); | 1529 initializeWithAndroidSettings(); |
1523 webViewImpl()->resizeWithTopControls(webViewImpl()->size(), 500, false); | 1530 webViewImpl()->resizeWithTopControls(webViewImpl()->size(), 500, false); |
1524 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), | 1531 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), |
1525 WebFloatSize(), 1, 1); | 1532 WebFloatSize(), 1, 1); |
1526 webViewImpl()->resizeWithTopControls(WebSize(1000, 1000), 500, true); | 1533 webViewImpl()->resizeWithTopControls(WebSize(1000, 1000), 500, true); |
1527 | 1534 |
1528 registerMockedHttpURLLoad("content-width-1000.html"); | 1535 registerMockedHttpURLLoad("content-width-1000.html"); |
1529 navigateTo(m_baseURL + "content-width-1000.html"); | 1536 navigateTo(m_baseURL + "content-width-1000.html"); |
1530 | 1537 |
1531 // Scroll the FrameView to the bottom of the page but "hide" the top | 1538 // Scroll the FrameView to the bottom of the page but "hide" the top |
1532 // controls on the compositor side so the max scroll position should account | 1539 // controls on the compositor side so the max scroll position should account |
1533 // for the full viewport height. | 1540 // for the full viewport height. |
1534 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), | 1541 webViewImpl()->applyViewportDeltas(WebFloatSize(), WebFloatSize(), |
1535 WebFloatSize(), 1, -1); | 1542 WebFloatSize(), 1, -1); |
1536 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); | 1543 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); |
1537 frameView.setScrollPosition(IntPoint(0, 10000), ProgrammaticScroll); | 1544 frameView.setScrollOffset(ScrollOffset(0, 10000), ProgrammaticScroll); |
1538 EXPECT_EQ(500, frameView.scrollPositionDouble().y()); | 1545 EXPECT_EQ(500, frameView.scrollOffset().height()); |
1539 | 1546 |
1540 // Now send the resize, make sure the scroll offset doesn't change. | 1547 // Now send the resize, make sure the scroll offset doesn't change. |
1541 webViewImpl()->resizeWithTopControls(WebSize(1000, 1500), 500, false); | 1548 webViewImpl()->resizeWithTopControls(WebSize(1000, 1500), 500, false); |
1542 EXPECT_EQ(500, frameView.scrollPositionDouble().y()); | 1549 EXPECT_EQ(500, frameView.scrollOffset().height()); |
1543 } | 1550 } |
1544 | 1551 |
1545 static void configureHiddenScrollbarsSettings(WebSettings* settings) { | 1552 static void configureHiddenScrollbarsSettings(WebSettings* settings) { |
1546 VisualViewportTest::configureAndroidSettings(settings); | 1553 VisualViewportTest::configureAndroidSettings(settings); |
1547 settings->setHideScrollbars(true); | 1554 settings->setHideScrollbars(true); |
1548 } | 1555 } |
1549 | 1556 |
1550 // Tests that scrollbar layers are not attached to the inner viewport container | 1557 // Tests that scrollbar layers are not attached to the inner viewport container |
1551 // layer when hideScrollbars WebSetting is true. | 1558 // layer when hideScrollbars WebSetting is true. |
1552 TEST_F(VisualViewportTest, | 1559 TEST_F(VisualViewportTest, |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1604 initializeWithDesktopSettings(); | 1611 initializeWithDesktopSettings(); |
1605 webViewImpl()->resize(IntSize(100, 200)); | 1612 webViewImpl()->resize(IntSize(100, 200)); |
1606 | 1613 |
1607 navigateTo("about:blank"); | 1614 navigateTo("about:blank"); |
1608 webViewImpl()->updateAllLifecyclePhases(); | 1615 webViewImpl()->updateAllLifecyclePhases(); |
1609 | 1616 |
1610 webViewImpl()->resizeVisualViewport(IntSize(100, 100)); | 1617 webViewImpl()->resizeVisualViewport(IntSize(100, 100)); |
1611 | 1618 |
1612 VisualViewport& visualViewport = | 1619 VisualViewport& visualViewport = |
1613 frame()->page()->frameHost().visualViewport(); | 1620 frame()->page()->frameHost().visualViewport(); |
1614 visualViewport.move(FloatPoint(0, 100)); | 1621 visualViewport.move(ScrollOffset(0, 100)); |
1615 | 1622 |
1616 EXPECT_EQ(100, visualViewport.location().y()); | 1623 EXPECT_EQ(100, visualViewport.location().y()); |
1617 | 1624 |
1618 webViewImpl()->resizeVisualViewport(IntSize(100, 200)); | 1625 webViewImpl()->resizeVisualViewport(IntSize(100, 200)); |
1619 | 1626 |
1620 EXPECT_EQ(0, visualViewport.location().y()); | 1627 EXPECT_EQ(0, visualViewport.location().y()); |
1621 } | 1628 } |
1622 | 1629 |
1623 TEST_P(ParameterizedVisualViewportTest, | 1630 TEST_P(ParameterizedVisualViewportTest, |
1624 ElementBoundsInViewportSpaceAccountsForViewport) { | 1631 ElementBoundsInViewportSpaceAccountsForViewport) { |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1772 TEST_P(ParameterizedVisualViewportTest, FractionalMaxScrollOffset) { | 1779 TEST_P(ParameterizedVisualViewportTest, FractionalMaxScrollOffset) { |
1773 initializeWithDesktopSettings(); | 1780 initializeWithDesktopSettings(); |
1774 webViewImpl()->resize(IntSize(101, 201)); | 1781 webViewImpl()->resize(IntSize(101, 201)); |
1775 navigateTo("about:blank"); | 1782 navigateTo("about:blank"); |
1776 | 1783 |
1777 VisualViewport& visualViewport = | 1784 VisualViewport& visualViewport = |
1778 frame()->page()->frameHost().visualViewport(); | 1785 frame()->page()->frameHost().visualViewport(); |
1779 ScrollableArea* scrollableArea = &visualViewport; | 1786 ScrollableArea* scrollableArea = &visualViewport; |
1780 | 1787 |
1781 webViewImpl()->setPageScaleFactor(1.0); | 1788 webViewImpl()->setPageScaleFactor(1.0); |
1782 EXPECT_FLOAT_POINT_EQ(DoublePoint(), | 1789 EXPECT_SIZE_EQ(ScrollOffset(), scrollableArea->maximumScrollOffset()); |
1783 scrollableArea->maximumScrollPositionDouble()); | |
1784 | 1790 |
1785 webViewImpl()->setPageScaleFactor(2); | 1791 webViewImpl()->setPageScaleFactor(2); |
1786 EXPECT_FLOAT_POINT_EQ(DoublePoint(101. / 2., 201. / 2.), | 1792 EXPECT_SIZE_EQ(ScrollOffset(101. / 2., 201. / 2.), |
1787 scrollableArea->maximumScrollPositionDouble()); | 1793 scrollableArea->maximumScrollOffset()); |
1788 } | 1794 } |
1789 | 1795 |
1790 // Tests that the slow scrolling after an impl scroll on the visual viewport | 1796 // Tests that the slow scrolling after an impl scroll on the visual viewport |
1791 // is continuous. crbug.com/453460 was caused by the impl-path not updating the | 1797 // is continuous. crbug.com/453460 was caused by the impl-path not updating the |
1792 // ScrollAnimatorBase class. | 1798 // ScrollAnimatorBase class. |
1793 TEST_P(ParameterizedVisualViewportTest, SlowScrollAfterImplScroll) { | 1799 TEST_P(ParameterizedVisualViewportTest, SlowScrollAfterImplScroll) { |
1794 initializeWithDesktopSettings(); | 1800 initializeWithDesktopSettings(); |
1795 webViewImpl()->resize(IntSize(800, 600)); | 1801 webViewImpl()->resize(IntSize(800, 600)); |
1796 navigateTo("about:blank"); | 1802 navigateTo("about:blank"); |
1797 | 1803 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1831 navigateTo(m_baseURL + "hit-test.html"); | 1837 navigateTo(m_baseURL + "hit-test.html"); |
1832 | 1838 |
1833 webViewImpl()->resize(IntSize(500, 500)); | 1839 webViewImpl()->resize(IntSize(500, 500)); |
1834 webViewImpl()->updateAllLifecyclePhases(); | 1840 webViewImpl()->updateAllLifecyclePhases(); |
1835 | 1841 |
1836 WebDocument webDoc = webViewImpl()->mainFrame()->document(); | 1842 WebDocument webDoc = webViewImpl()->mainFrame()->document(); |
1837 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); | 1843 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); |
1838 | 1844 |
1839 webViewImpl()->setPageScaleFactor(2); | 1845 webViewImpl()->setPageScaleFactor(2); |
1840 webViewImpl()->setVisualViewportOffset(WebFloatPoint(200, 230)); | 1846 webViewImpl()->setVisualViewportOffset(WebFloatPoint(200, 230)); |
1841 frameView.layoutViewportScrollableArea()->setScrollPosition( | 1847 frameView.layoutViewportScrollableArea()->setScrollOffset( |
1842 DoublePoint(400, 1100), ProgrammaticScroll); | 1848 ScrollOffset(400, 1100), ProgrammaticScroll); |
1843 | 1849 |
1844 // FIXME(504057): PaintLayerScrollableArea dirties the compositing state. | 1850 // FIXME(504057): PaintLayerScrollableArea dirties the compositing state. |
1845 forceFullCompositingUpdate(); | 1851 forceFullCompositingUpdate(); |
1846 | 1852 |
1847 // Because of where the visual viewport is located, this should hit the bottom
right | 1853 // Because of where the visual viewport is located, this should hit the bottom
right |
1848 // target (target 4). | 1854 // target (target 4). |
1849 WebAXObject hitNode = | 1855 WebAXObject hitNode = |
1850 webDoc.accessibilityObject().hitTest(WebPoint(154, 165)); | 1856 webDoc.accessibilityObject().hitTest(WebPoint(154, 165)); |
1851 WebAXNameFrom nameFrom; | 1857 WebAXNameFrom nameFrom; |
1852 WebVector<WebAXObject> nameObjects; | 1858 WebVector<WebAXObject> nameObjects; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1889 | 1895 |
1890 // Test points that will cause non-integer values. | 1896 // Test points that will cause non-integer values. |
1891 EXPECT_FLOAT_POINT_EQ( | 1897 EXPECT_FLOAT_POINT_EQ( |
1892 FloatPoint(50.5, 62.4), | 1898 FloatPoint(50.5, 62.4), |
1893 visualViewport.viewportToRootFrame(FloatPoint(81, 100.8))); | 1899 visualViewport.viewportToRootFrame(FloatPoint(81, 100.8))); |
1894 EXPECT_FLOAT_POINT_EQ( | 1900 EXPECT_FLOAT_POINT_EQ( |
1895 FloatPoint(81, 100.8), | 1901 FloatPoint(81, 100.8), |
1896 visualViewport.rootFrameToViewport(FloatPoint(50.5, 62.4))); | 1902 visualViewport.rootFrameToViewport(FloatPoint(50.5, 62.4))); |
1897 | 1903 |
1898 // Scrolling the main frame should have no effect. | 1904 // Scrolling the main frame should have no effect. |
1899 frameView.layoutViewportScrollableArea()->setScrollPosition( | 1905 frameView.layoutViewportScrollableArea()->setScrollOffset( |
1900 DoublePoint(100, 120), ProgrammaticScroll); | 1906 ScrollOffset(100, 120), ProgrammaticScroll); |
1901 EXPECT_FLOAT_POINT_EQ(FloatPoint(50, 62), visualViewport.viewportToRootFrame( | 1907 EXPECT_FLOAT_POINT_EQ(FloatPoint(50, 62), visualViewport.viewportToRootFrame( |
1902 FloatPoint(80, 100))); | 1908 FloatPoint(80, 100))); |
1903 EXPECT_FLOAT_POINT_EQ(FloatPoint(80, 100), | 1909 EXPECT_FLOAT_POINT_EQ(FloatPoint(80, 100), |
1904 visualViewport.rootFrameToViewport(FloatPoint(50, 62))); | 1910 visualViewport.rootFrameToViewport(FloatPoint(50, 62))); |
1905 } | 1911 } |
1906 | 1912 |
1907 // Tests that the window dimensions are available before a full layout occurs. | 1913 // Tests that the window dimensions are available before a full layout occurs. |
1908 // More specifically, it checks that the innerWidth and innerHeight window | 1914 // More specifically, it checks that the innerWidth and innerHeight window |
1909 // properties will trigger a layout which will cause an update to viewport | 1915 // properties will trigger a layout which will cause an update to viewport |
1910 // constraints and a refreshed initial scale. crbug.com/466718 | 1916 // constraints and a refreshed initial scale. crbug.com/466718 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1952 pinchUpdate.data.pinchUpdate.scale = 2; | 1958 pinchUpdate.data.pinchUpdate.scale = 2; |
1953 pinchUpdate.data.pinchUpdate.zoomDisabled = false; | 1959 pinchUpdate.data.pinchUpdate.zoomDisabled = false; |
1954 | 1960 |
1955 webViewImpl()->handleInputEvent(pinchUpdate); | 1961 webViewImpl()->handleInputEvent(pinchUpdate); |
1956 | 1962 |
1957 VisualViewport& visualViewport = | 1963 VisualViewport& visualViewport = |
1958 webViewImpl()->page()->frameHost().visualViewport(); | 1964 webViewImpl()->page()->frameHost().visualViewport(); |
1959 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); | 1965 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); |
1960 | 1966 |
1961 EXPECT_FLOAT_POINT_EQ(FloatPoint(50, 50), visualViewport.location()); | 1967 EXPECT_FLOAT_POINT_EQ(FloatPoint(50, 50), visualViewport.location()); |
1962 EXPECT_FLOAT_POINT_EQ(FloatPoint(0, 0), frameView.scrollPositionDouble()); | 1968 EXPECT_SIZE_EQ(ScrollOffset(0, 0), frameView.scrollOffset()); |
1963 } | 1969 } |
1964 | 1970 |
1965 TEST_P(ParameterizedVisualViewportTest, ResizeWithScrollAnchoring) { | 1971 TEST_P(ParameterizedVisualViewportTest, ResizeWithScrollAnchoring) { |
1966 bool wasScrollAnchoringEnabled = | 1972 bool wasScrollAnchoringEnabled = |
1967 RuntimeEnabledFeatures::scrollAnchoringEnabled(); | 1973 RuntimeEnabledFeatures::scrollAnchoringEnabled(); |
1968 RuntimeEnabledFeatures::setScrollAnchoringEnabled(true); | 1974 RuntimeEnabledFeatures::setScrollAnchoringEnabled(true); |
1969 | 1975 |
1970 initializeWithDesktopSettings(); | 1976 initializeWithDesktopSettings(); |
1971 webViewImpl()->resize(IntSize(800, 600)); | 1977 webViewImpl()->resize(IntSize(800, 600)); |
1972 | 1978 |
1973 registerMockedHttpURLLoad("icb-relative-content.html"); | 1979 registerMockedHttpURLLoad("icb-relative-content.html"); |
1974 navigateTo(m_baseURL + "icb-relative-content.html"); | 1980 navigateTo(m_baseURL + "icb-relative-content.html"); |
1975 | 1981 |
1976 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); | 1982 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); |
1977 frameView.layoutViewportScrollableArea()->setScrollPosition( | 1983 frameView.layoutViewportScrollableArea()->setScrollOffset( |
1978 DoublePoint(700, 500), ProgrammaticScroll); | 1984 ScrollOffset(700, 500), ProgrammaticScroll); |
1979 | 1985 |
1980 webViewImpl()->resize(IntSize(800, 300)); | 1986 webViewImpl()->resize(IntSize(800, 300)); |
1981 EXPECT_POINT_EQ( | 1987 EXPECT_SIZE_EQ(ScrollOffset(700, 200), |
1982 DoublePoint(700, 200), | 1988 frameView.layoutViewportScrollableArea()->scrollOffset()); |
1983 frameView.layoutViewportScrollableArea()->scrollPositionDouble()); | |
1984 | 1989 |
1985 RuntimeEnabledFeatures::setScrollAnchoringEnabled(wasScrollAnchoringEnabled); | 1990 RuntimeEnabledFeatures::setScrollAnchoringEnabled(wasScrollAnchoringEnabled); |
1986 } | 1991 } |
1987 | 1992 |
1988 // Ensure that resize anchoring as happens when top controls hide/show affects | 1993 // Ensure that resize anchoring as happens when top controls hide/show affects |
1989 // the scrollable area that's currently set as the root scroller. | 1994 // the scrollable area that's currently set as the root scroller. |
1990 TEST_P(ParameterizedVisualViewportTest, ResizeAnchoringWithRootScroller) { | 1995 TEST_P(ParameterizedVisualViewportTest, ResizeAnchoringWithRootScroller) { |
1991 bool wasRootScrollerEnabled = | 1996 bool wasRootScrollerEnabled = |
1992 RuntimeEnabledFeatures::setRootScrollerEnabled(); | 1997 RuntimeEnabledFeatures::setRootScrollerEnabled(); |
1993 RuntimeEnabledFeatures::setSetRootScrollerEnabled(true); | 1998 RuntimeEnabledFeatures::setSetRootScrollerEnabled(true); |
1994 | 1999 |
1995 initializeWithAndroidSettings(); | 2000 initializeWithAndroidSettings(); |
1996 webViewImpl()->resize(IntSize(800, 600)); | 2001 webViewImpl()->resize(IntSize(800, 600)); |
1997 | 2002 |
1998 registerMockedHttpURLLoad("root-scroller-div.html"); | 2003 registerMockedHttpURLLoad("root-scroller-div.html"); |
1999 navigateTo(m_baseURL + "root-scroller-div.html"); | 2004 navigateTo(m_baseURL + "root-scroller-div.html"); |
2000 | 2005 |
2001 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); | 2006 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); |
2002 | 2007 |
2003 Element* scroller = frame()->document()->getElementById("rootScroller"); | 2008 Element* scroller = frame()->document()->getElementById("rootScroller"); |
2004 NonThrowableExceptionState nonThrow; | 2009 NonThrowableExceptionState nonThrow; |
2005 frame()->document()->setRootScroller(scroller, nonThrow); | 2010 frame()->document()->setRootScroller(scroller, nonThrow); |
2006 | 2011 |
2007 webViewImpl()->setPageScaleFactor(3.f); | 2012 webViewImpl()->setPageScaleFactor(3.f); |
2008 frameView.getScrollableArea()->setScrollPosition(DoublePoint(0, 400), | 2013 frameView.getScrollableArea()->setScrollOffset(ScrollOffset(0, 400), |
2009 ProgrammaticScroll); | 2014 ProgrammaticScroll); |
2010 | 2015 |
2011 VisualViewport& visualViewport = | 2016 VisualViewport& visualViewport = |
2012 webViewImpl()->page()->frameHost().visualViewport(); | 2017 webViewImpl()->page()->frameHost().visualViewport(); |
2013 visualViewport.setScrollPosition(DoublePoint(0, 400), ProgrammaticScroll); | 2018 visualViewport.setScrollOffset(ScrollOffset(0, 400), ProgrammaticScroll); |
2014 | 2019 |
2015 webViewImpl()->resize(IntSize(800, 500)); | 2020 webViewImpl()->resize(IntSize(800, 500)); |
2016 | 2021 |
2017 EXPECT_POINT_EQ( | 2022 EXPECT_SIZE_EQ(ScrollOffset(), |
2018 DoublePoint(), | 2023 frameView.layoutViewportScrollableArea()->scrollOffset()); |
2019 frameView.layoutViewportScrollableArea()->scrollPositionDouble()); | |
2020 | 2024 |
2021 RuntimeEnabledFeatures::setSetRootScrollerEnabled(wasRootScrollerEnabled); | 2025 RuntimeEnabledFeatures::setSetRootScrollerEnabled(wasRootScrollerEnabled); |
2022 } | 2026 } |
2023 | 2027 |
2024 // Ensure that resize anchoring as happens when the device is rotated affects | 2028 // Ensure that resize anchoring as happens when the device is rotated affects |
2025 // the scrollable area that's currently set as the root scroller. | 2029 // the scrollable area that's currently set as the root scroller. |
2026 TEST_P(ParameterizedVisualViewportTest, RotationAnchoringWithRootScroller) { | 2030 TEST_P(ParameterizedVisualViewportTest, RotationAnchoringWithRootScroller) { |
2027 bool wasRootScrollerEnabled = | 2031 bool wasRootScrollerEnabled = |
2028 RuntimeEnabledFeatures::setRootScrollerEnabled(); | 2032 RuntimeEnabledFeatures::setRootScrollerEnabled(); |
2029 RuntimeEnabledFeatures::setSetRootScrollerEnabled(true); | 2033 RuntimeEnabledFeatures::setSetRootScrollerEnabled(true); |
2030 | 2034 |
2031 initializeWithAndroidSettings(); | 2035 initializeWithAndroidSettings(); |
2032 webViewImpl()->resize(IntSize(800, 600)); | 2036 webViewImpl()->resize(IntSize(800, 600)); |
2033 | 2037 |
2034 registerMockedHttpURLLoad("root-scroller-div.html"); | 2038 registerMockedHttpURLLoad("root-scroller-div.html"); |
2035 navigateTo(m_baseURL + "root-scroller-div.html"); | 2039 navigateTo(m_baseURL + "root-scroller-div.html"); |
2036 | 2040 |
2037 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); | 2041 FrameView& frameView = *webViewImpl()->mainFrameImpl()->frameView(); |
2038 | 2042 |
2039 Element* scroller = frame()->document()->getElementById("rootScroller"); | 2043 Element* scroller = frame()->document()->getElementById("rootScroller"); |
2040 NonThrowableExceptionState nonThrow; | 2044 NonThrowableExceptionState nonThrow; |
2041 frame()->document()->setRootScroller(scroller, nonThrow); | 2045 frame()->document()->setRootScroller(scroller, nonThrow); |
2042 webViewImpl()->updateAllLifecyclePhases(); | 2046 webViewImpl()->updateAllLifecyclePhases(); |
2043 | 2047 |
2044 scroller->setScrollTop(800); | 2048 scroller->setScrollTop(800); |
2045 | 2049 |
2046 webViewImpl()->resize(IntSize(600, 800)); | 2050 webViewImpl()->resize(IntSize(600, 800)); |
2047 | 2051 |
2048 EXPECT_POINT_EQ( | 2052 EXPECT_SIZE_EQ(ScrollOffset(), |
2049 DoublePoint(), | 2053 frameView.layoutViewportScrollableArea()->scrollOffset()); |
2050 frameView.layoutViewportScrollableArea()->scrollPositionDouble()); | |
2051 EXPECT_EQ(600, scroller->scrollTop()); | 2054 EXPECT_EQ(600, scroller->scrollTop()); |
2052 | 2055 |
2053 RuntimeEnabledFeatures::setSetRootScrollerEnabled(wasRootScrollerEnabled); | 2056 RuntimeEnabledFeatures::setSetRootScrollerEnabled(wasRootScrollerEnabled); |
2054 } | 2057 } |
2055 | 2058 |
2056 } // namespace | 2059 } // namespace |
OLD | NEW |