| Index: Source/web/tests/WebFrameTest.cpp
|
| diff --git a/Source/web/tests/WebFrameTest.cpp b/Source/web/tests/WebFrameTest.cpp
|
| index 4351904cb1b84dd03fb324d86810f34742c2a423..76554b0ae90e028ed6745674e5075eba62be3e8d 100644
|
| --- a/Source/web/tests/WebFrameTest.cpp
|
| +++ b/Source/web/tests/WebFrameTest.cpp
|
| @@ -236,7 +236,6 @@ protected:
|
| Element* element = frame->document()->getElementById(testcase.c_str());
|
| return frame->nodeImage(*element);
|
| }
|
| -
|
| std::string m_baseURL;
|
| std::string m_notBaseURL;
|
| std::string m_chromeURL;
|
| @@ -7411,4 +7410,129 @@ TEST_F(WebFrameTest, CreateLocalChildWithPreviousSibling)
|
| view->close();
|
| }
|
|
|
| +class WebFrameOverscrollTest : public WebFrameTest {
|
| +protected:
|
| + WebGestureEvent generateEvent(WebInputEvent::Type type, int deltaX = 0, int deltaY = 0)
|
| + {
|
| + WebGestureEvent event;
|
| + event.type = type;
|
| + event.x = 100;
|
| + event.y = 100;
|
| + if (type == WebInputEvent::GestureScrollUpdate) {
|
| + event.data.scrollUpdate.deltaX = deltaX;
|
| + event.data.scrollUpdate.deltaY = deltaY;
|
| + }
|
| + return event;
|
| + }
|
| +
|
| + void ScrollBegin(FrameTestHelpers::WebViewHelper* webViewHelper)
|
| + {
|
| + webViewHelper->webViewImpl()->handleInputEvent(generateEvent(WebInputEvent::GestureScrollBegin));
|
| + }
|
| +
|
| + void ScrollUpdate(FrameTestHelpers::WebViewHelper* webViewHelper, float deltaX, float deltaY)
|
| + {
|
| + webViewHelper->webViewImpl()->handleInputEvent(generateEvent(WebInputEvent::GestureScrollUpdate, deltaX, deltaY));
|
| + }
|
| +
|
| + void ScrollEnd(FrameTestHelpers::WebViewHelper* webViewHelper)
|
| + {
|
| + webViewHelper->webViewImpl()->handleInputEvent(generateEvent(WebInputEvent::GestureScrollEnd));
|
| + }
|
| +
|
| + void CompareUnusedDeltaAndAccumulatedRootOverscroll(FrameTestHelpers::WebViewHelper* webViewHelper, float unUsedWidth, float unUsedHeight, float accumulatedWidth, float accumulatedHeight)
|
| + {
|
| + FloatSize unUsedDelta = webViewHelper->webViewImpl()->mainFrameImpl()->frame()->eventHandler().unusedDeltaForTesting();
|
| + FloatSize accumulatedRootOverscroll = webViewHelper->webViewImpl()->mainFrameImpl()->frame()->eventHandler().accumulatedRootOverscrollForTesting();
|
| + EXPECT_EQ(unUsedWidth, unUsedDelta.width());
|
| + EXPECT_EQ(unUsedHeight, unUsedDelta.height());
|
| + EXPECT_EQ(accumulatedWidth, accumulatedRootOverscroll.width());
|
| + EXPECT_EQ(accumulatedHeight, accumulatedRootOverscroll.height());
|
| + }
|
| +};
|
| +
|
| +TEST_F(WebFrameOverscrollTest, AccumulatedRootOverscrollAndUnsedDeltaSetAndUnset)
|
| +{
|
| + FakeCompositingWebViewClient client;
|
| + registerMockedHttpURLLoad("mainthread-scrolling.html");
|
| + FrameTestHelpers::WebViewHelper webViewHelper;
|
| + WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "mainthread-scrolling.html", true, 0, &client, configureAndroid);
|
| + webViewImpl->layout();
|
| +
|
| + ScrollBegin(&webViewHelper);
|
| +
|
| + ScrollUpdate(&webViewHelper, 0, -13);
|
| + CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 13, 0, 13);
|
| +
|
| + ScrollUpdate(&webViewHelper, 0, -13);
|
| + CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 13, 0, 26);
|
| +
|
| + ScrollUpdate(&webViewHelper, -20, -13);
|
| + CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 20, 13, 20, 39);
|
| +
|
| + ScrollEnd(&webViewHelper);
|
| + CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 0, 0, 0);
|
| +
|
| + ScrollBegin(&webViewHelper);
|
| + ScrollUpdate(&webViewHelper, 0, -13);
|
| + ScrollEnd(&webViewHelper);
|
| + CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 0, 0, 0);
|
| +
|
| + ScrollBegin(&webViewHelper);
|
| + ScrollUpdate(&webViewHelper, 0, -13);
|
| + CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 13, 0, 13);
|
| +}
|
| +
|
| +TEST_F(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerDivOverScroll)
|
| +{
|
| + FakeCompositingWebViewClient client;
|
| + registerMockedHttpURLLoad("mainthread-inner-div-overscroll.html");
|
| + FrameTestHelpers::WebViewHelper webViewHelper;
|
| + WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "mainthread-inner-div-overscroll.html", true, 0, &client, configureAndroid);
|
| + webViewImpl->layout();
|
| +
|
| + ScrollBegin(&webViewHelper);
|
| +
|
| + ScrollUpdate(&webViewHelper, 0, 13);
|
| + CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, -13, 0, -13);
|
| +
|
| + ScrollUpdate(&webViewHelper, 0, 13);
|
| + CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, -13, 0, -26);
|
| +
|
| + ScrollUpdate(&webViewHelper, 13, 13);
|
| + CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, -13, -13, -13, -39);
|
| +
|
| + ScrollUpdate(&webViewHelper, 13, 0);
|
| + CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, -13, 0, -26, -39);
|
| +
|
| + ScrollEnd(&webViewHelper);
|
| + CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 0, 0, 0);
|
| +}
|
| +
|
| +TEST_F(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerIFrameOverScroll)
|
| +{
|
| + FakeCompositingWebViewClient client;
|
| + registerMockedHttpURLLoad("mainthread-inner-iframe-overscroll.html");
|
| + FrameTestHelpers::WebViewHelper webViewHelper;
|
| + WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "mainthread-inner-iframe-overscroll.html", true, 0, &client, configureAndroid);
|
| + webViewImpl->layout();
|
| +
|
| + ScrollBegin(&webViewHelper);
|
| +
|
| + ScrollUpdate(&webViewHelper, 0, 13);
|
| + CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, -13, 0, -13);
|
| +
|
| + ScrollUpdate(&webViewHelper, 0, 13);
|
| + CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, -13, 0, -26);
|
| +
|
| + ScrollUpdate(&webViewHelper, 13, 13);
|
| + CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, -13, -13, -13, -39);
|
| +
|
| + ScrollUpdate(&webViewHelper, 13, 0);
|
| + CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, -13, 0, -26, -39);
|
| +
|
| + ScrollEnd(&webViewHelper);
|
| + CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 0, 0, 0);
|
| +}
|
| +
|
| } // namespace blink
|
|
|