Index: Source/web/tests/WebFrameTest.cpp |
diff --git a/Source/web/tests/WebFrameTest.cpp b/Source/web/tests/WebFrameTest.cpp |
index 4351904cb1b84dd03fb324d86810f34742c2a423..5d38467c054f4323f158872a3bb95700540a5a89 100644 |
--- a/Source/web/tests/WebFrameTest.cpp |
+++ b/Source/web/tests/WebFrameTest.cpp |
@@ -237,6 +237,34 @@ protected: |
return frame->nodeImage(*element); |
} |
+ 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)); |
+ } |
+ |
std::string m_baseURL; |
std::string m_notBaseURL; |
std::string m_chromeURL; |
@@ -6215,6 +6243,102 @@ TEST_F(WebFrameTest, FullscreenLayerNonScrollable) |
ASSERT_TRUE(webScrollLayer->userScrollableVertical()); |
} |
+TEST_F(WebFrameTest, OverscrollGlowAnimation) |
+{ |
+ FakeCompositingWebViewClient client; |
+ registerMockedHttpURLLoad("mainthread-scrolling.html"); |
+ FrameTestHelpers::WebViewHelper webViewHelper; |
+ WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "mainthread-scrolling.html", true, 0, &client, configureAndroid); |
+ webViewImpl->settings()->setThreadedScrollingEnabled(false); |
majidvp
2015/05/14 21:08:39
Do you really need this?
MuVen
2015/05/26 09:58:35
Not requried.
|
+ webViewImpl->layout(); |
+ |
+ ScrollBegin(&webViewHelper); |
+ |
+ ScrollUpdate(&webViewHelper, 0, -13); |
+ FloatSize unUsedDelta = webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().unusedDeltaForTesting(); |
+ FloatSize accumulatedRootOverscroll = webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().accumulatedRootOverscrollForTesting(); |
+ EXPECT_EQ(0, unUsedDelta.width()); |
+ EXPECT_EQ(13, unUsedDelta.height()); |
+ EXPECT_EQ(0, accumulatedRootOverscroll.width()); |
+ EXPECT_EQ(13, accumulatedRootOverscroll.height()); |
+ |
+ ScrollUpdate(&webViewHelper, 0, -13); |
+ unUsedDelta = webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().unusedDeltaForTesting(); |
+ accumulatedRootOverscroll = webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().accumulatedRootOverscrollForTesting(); |
+ EXPECT_EQ(0, unUsedDelta.width()); |
+ EXPECT_EQ(13, unUsedDelta.height()); |
+ EXPECT_EQ(0, accumulatedRootOverscroll.width()); |
+ EXPECT_EQ(26, accumulatedRootOverscroll.height()); |
+ |
+ ScrollUpdate(&webViewHelper, -20, -13); |
+ unUsedDelta = webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().unusedDeltaForTesting(); |
+ accumulatedRootOverscroll = webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().accumulatedRootOverscrollForTesting(); |
+ EXPECT_EQ(20, unUsedDelta.width()); |
+ EXPECT_EQ(13, unUsedDelta.height()); |
+ EXPECT_EQ(20, accumulatedRootOverscroll.width()); |
+ EXPECT_EQ(39, accumulatedRootOverscroll.height()); |
+ |
+ ScrollEnd(&webViewHelper); |
+ unUsedDelta = webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().unusedDeltaForTesting(); |
+ accumulatedRootOverscroll = webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().accumulatedRootOverscrollForTesting(); |
+ EXPECT_EQ(0, unUsedDelta.width()); |
+ EXPECT_EQ(0, unUsedDelta.height()); |
+ EXPECT_EQ(0, accumulatedRootOverscroll.width()); |
+ EXPECT_EQ(0, accumulatedRootOverscroll.height()); |
+} |
+ |
+TEST_F(WebFrameTest, OverscrollGlowAnimationForInnerScroll) |
+{ |
+ FakeCompositingWebViewClient client; |
+ registerMockedHttpURLLoad("mainthread-inner-overscroll.html"); |
+ FrameTestHelpers::WebViewHelper webViewHelper; |
+ WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "mainthread-inner-overscroll.html", true, 0, &client, configureAndroid); |
+ webViewImpl->settings()->setThreadedScrollingEnabled(false); |
+ webViewImpl->layout(); |
+ |
+ ScrollBegin(&webViewHelper); |
+ |
+ ScrollUpdate(&webViewHelper, 0, 13); |
+ FloatSize unUsedDelta = webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().unusedDeltaForTesting(); |
+ FloatSize accumulatedRootOverscroll = webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().accumulatedRootOverscrollForTesting(); |
+ EXPECT_EQ(0, unUsedDelta.width()); |
+ EXPECT_EQ(-13, unUsedDelta.height()); |
+ EXPECT_EQ(0, accumulatedRootOverscroll.width()); |
+ EXPECT_EQ(-13, accumulatedRootOverscroll.height()); |
+ |
+ ScrollUpdate(&webViewHelper, 0, 13); |
+ unUsedDelta = webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().unusedDeltaForTesting(); |
+ accumulatedRootOverscroll = webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().accumulatedRootOverscrollForTesting(); |
+ EXPECT_EQ(0, unUsedDelta.width()); |
+ EXPECT_EQ(-13, unUsedDelta.height()); |
+ EXPECT_EQ(0, accumulatedRootOverscroll.width()); |
+ EXPECT_EQ(-26, accumulatedRootOverscroll.height()); |
+ |
+ ScrollUpdate(&webViewHelper, 13, 13); |
+ unUsedDelta = webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().unusedDeltaForTesting(); |
+ accumulatedRootOverscroll = webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().accumulatedRootOverscrollForTesting(); |
+ EXPECT_EQ(-13, unUsedDelta.width()); |
+ EXPECT_EQ(-13, unUsedDelta.height()); |
+ EXPECT_EQ(-13, accumulatedRootOverscroll.width()); |
+ EXPECT_EQ(-39, accumulatedRootOverscroll.height()); |
+ |
+ ScrollUpdate(&webViewHelper, 13, 0); |
+ unUsedDelta = webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().unusedDeltaForTesting(); |
+ accumulatedRootOverscroll = webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().accumulatedRootOverscrollForTesting(); |
+ EXPECT_EQ(-13, unUsedDelta.width()); |
+ EXPECT_EQ(0, unUsedDelta.height()); |
+ EXPECT_EQ(-26, accumulatedRootOverscroll.width()); |
+ EXPECT_EQ(-39, accumulatedRootOverscroll.height()); |
+ |
+ ScrollEnd(&webViewHelper); |
+ unUsedDelta = webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().unusedDeltaForTesting(); |
+ accumulatedRootOverscroll = webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().accumulatedRootOverscrollForTesting(); |
+ EXPECT_EQ(0, unUsedDelta.width()); |
+ EXPECT_EQ(0, unUsedDelta.height()); |
+ EXPECT_EQ(0, accumulatedRootOverscroll.width()); |
+ EXPECT_EQ(0, accumulatedRootOverscroll.height()); |
+} |
+ |
TEST_F(WebFrameTest, FullscreenMainFrame) |
{ |
FakeCompositingWebViewClient client; |