Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2305)

Unified Diff: Source/web/tests/WebFrameTest.cpp

Issue 1056983004: OverscrollGlow for mainThread-{BLINK CHANGES} (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Modified Tests Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/web/WebPluginScrollbarImpl.cpp ('k') | Source/web/tests/data/overscroll/div-overscroll.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/web/tests/WebFrameTest.cpp
diff --git a/Source/web/tests/WebFrameTest.cpp b/Source/web/tests/WebFrameTest.cpp
index a9b8a62910172d7c6ce7b7f96546b23979721e0e..4918cacdc04df3c42270f8e39b81c858125e80e6 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;
@@ -7341,4 +7340,146 @@ 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_FLOAT_EQ(unUsedWidth, unUsedDelta.width());
+ EXPECT_FLOAT_EQ(unUsedHeight, unUsedDelta.height());
+ EXPECT_FLOAT_EQ(accumulatedWidth, accumulatedRootOverscroll.width());
+ EXPECT_FLOAT_EQ(accumulatedHeight, accumulatedRootOverscroll.height());
+ }
+};
+
+TEST_F(WebFrameOverscrollTest, AccumulatedRootOverscrollAndUnsedDeltaSetAndUnset)
+{
+ FakeCompositingWebViewClient client;
+ registerMockedHttpURLLoad("overscroll/overscroll.html");
+ FrameTestHelpers::WebViewHelper webViewHelper;
+ WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "overscroll/overscroll.html", true, 0, &client, configureAndroid);
+ webViewImpl->layout();
+
+ // Resets accumulatedRootOverscroll and unusedDelta on scroll end.
+ ScrollBegin(&webViewHelper);
+ ScrollUpdate(&webViewHelper, 0, -13);
+ ScrollEnd(&webViewHelper);
+ CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 0, 0, 0);
+
+ // Calculation of accumulatedRootOverscroll and unusedDelta on Single scrollUpdate.
+ ScrollBegin(&webViewHelper);
+ ScrollUpdate(&webViewHelper, 0, -13);
+ CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 13, 0, 13);
+ ScrollEnd(&webViewHelper);
+
+ // Calculation of accumulatedRootOverscroll and unusedDelta on multiple scrollUpdate.
+ ScrollBegin(&webViewHelper);
+ ScrollUpdate(&webViewHelper, 0, -13);
+ CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 13, 0, 13);
+ ScrollUpdate(&webViewHelper, -20, -13);
+ CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 20, 13, 20, 26);
majidvp 2015/05/28 20:30:46 To test reset logic in middle of a single gesture
MuVen 2015/05/29 09:37:15 Done.
+ ScrollUpdate(&webViewHelper, -20, 0);
+ CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 20, 0, 40, 26);
+ ScrollEnd(&webViewHelper);
+ CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 0, 0, 0);
+}
+
+TEST_F(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerDivOverScroll)
+{
+ FakeCompositingWebViewClient client;
+ registerMockedHttpURLLoad("overscroll/div-overscroll.html");
+ FrameTestHelpers::WebViewHelper webViewHelper;
+ WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "overscroll/div-overscroll.html", true, 0, &client, configureAndroid);
+ webViewImpl->layout();
+
+ ScrollBegin(&webViewHelper);
+
+ // Scroll the Div to the end.
+ ScrollUpdate(&webViewHelper, 0, -316);
+ CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 0, 0, 0);
+
+ // Now On Scrolling DIV, scroll is bubbled and root layer is over-scrolled.
+ ScrollUpdate(&webViewHelper, 0, -50);
+ CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 50, 0, 50);
+
+ ScrollEnd(&webViewHelper);
+ CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 0, 0, 0);
+}
+
+TEST_F(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerIFrameOverScroll)
+{
+ FakeCompositingWebViewClient client;
+ registerMockedHttpURLLoad("overscroll/iframe-overscroll.html");
+ registerMockedHttpURLLoad("overscroll/scrollable-iframe.html");
+ FrameTestHelpers::WebViewHelper webViewHelper;
+ WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "overscroll/iframe-overscroll.html", true, 0, &client, configureAndroid);
+ webViewImpl->layout();
+
+ ScrollBegin(&webViewHelper);
+
+ // Scroll the IFrame to the end.
+ ScrollUpdate(&webViewHelper, 0, -320);
+ CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 0, 0, 0);
+
+ // Now On Scrolling IFrame, scroll is bubbled and root layer is over-scrolled.
+ ScrollUpdate(&webViewHelper, 0, -50);
+ CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 50, 0, 50);
+}
+
+TEST_F(WebFrameOverscrollTest, ScaledPageRootLayerOverscrolled)
+{
+ FakeCompositingWebViewClient client;
+ registerMockedHttpURLLoad("overscroll/overscroll.html");
+ FrameTestHelpers::WebViewHelper webViewHelper;
+ WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "overscroll/overscroll.html", true, 0, &client, configureAndroid);
+ webViewImpl->setPageScaleFactor(3.f);
+ webViewImpl->layout();
+
+ // Calculation of accumulatedRootOverscroll and unusedDelta on scaled page.
+ ScrollBegin(&webViewHelper);
+ ScrollUpdate(&webViewHelper, 0, 30);
+ CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, -10, 0, -10);
+
+ ScrollUpdate(&webViewHelper, 0, 30);
+ CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, -10, 0, -20);
+
+ ScrollUpdate(&webViewHelper, 30, 30);
+ CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, -10, -10, -10, -30);
+
+ ScrollUpdate(&webViewHelper, 30, 0);
+ CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, -10, 0, -20, -30);
+
+ ScrollEnd(&webViewHelper);
+ CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 0, 0, 0);
+}
+
} // namespace blink
« no previous file with comments | « Source/web/WebPluginScrollbarImpl.cpp ('k') | Source/web/tests/data/overscroll/div-overscroll.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698