Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 229 { | 229 { |
| 230 registerMockedHttpURLLoad("nodeimage.html"); | 230 registerMockedHttpURLLoad("nodeimage.html"); |
| 231 webViewHelper->initializeAndLoad(m_baseURL + "nodeimage.html"); | 231 webViewHelper->initializeAndLoad(m_baseURL + "nodeimage.html"); |
| 232 webViewHelper->webView()->resize(WebSize(640, 480)); | 232 webViewHelper->webView()->resize(WebSize(640, 480)); |
| 233 webViewHelper->webView()->layout(); | 233 webViewHelper->webView()->layout(); |
| 234 RefPtrWillBeRawPtr<LocalFrame> frame = toLocalFrame(webViewHelper->webVi ewImpl()->page()->mainFrame()); | 234 RefPtrWillBeRawPtr<LocalFrame> frame = toLocalFrame(webViewHelper->webVi ewImpl()->page()->mainFrame()); |
| 235 ASSERT(frame); | 235 ASSERT(frame); |
| 236 Element* element = frame->document()->getElementById(testcase.c_str()); | 236 Element* element = frame->document()->getElementById(testcase.c_str()); |
| 237 return frame->nodeImage(*element); | 237 return frame->nodeImage(*element); |
| 238 } | 238 } |
| 239 | |
| 240 std::string m_baseURL; | 239 std::string m_baseURL; |
| 241 std::string m_notBaseURL; | 240 std::string m_notBaseURL; |
| 242 std::string m_chromeURL; | 241 std::string m_chromeURL; |
| 243 }; | 242 }; |
| 244 | 243 |
| 245 TEST_F(WebFrameTest, ContentText) | 244 TEST_F(WebFrameTest, ContentText) |
| 246 { | 245 { |
| 247 registerMockedHttpURLLoad("iframes_test.html"); | 246 registerMockedHttpURLLoad("iframes_test.html"); |
| 248 registerMockedHttpURLLoad("visible_iframe.html"); | 247 registerMockedHttpURLLoad("visible_iframe.html"); |
| 249 registerMockedHttpURLLoad("invisible_iframe.html"); | 248 registerMockedHttpURLLoad("invisible_iframe.html"); |
| (...skipping 7084 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 7334 EXPECT_EQ(fourthFrame, parent->lastChild()); | 7333 EXPECT_EQ(fourthFrame, parent->lastChild()); |
| 7335 | 7334 |
| 7336 EXPECT_EQ(parent, firstFrame->parent()); | 7335 EXPECT_EQ(parent, firstFrame->parent()); |
| 7337 EXPECT_EQ(parent, secondFrame->parent()); | 7336 EXPECT_EQ(parent, secondFrame->parent()); |
| 7338 EXPECT_EQ(parent, thirdFrame->parent()); | 7337 EXPECT_EQ(parent, thirdFrame->parent()); |
| 7339 EXPECT_EQ(parent, fourthFrame->parent()); | 7338 EXPECT_EQ(parent, fourthFrame->parent()); |
| 7340 | 7339 |
| 7341 view->close(); | 7340 view->close(); |
| 7342 } | 7341 } |
| 7343 | 7342 |
| 7343 class WebFrameOverscrollTest : public WebFrameTest { | |
| 7344 protected: | |
| 7345 WebGestureEvent generateEvent(WebInputEvent::Type type, int deltaX = 0, int deltaY = 0) | |
| 7346 { | |
| 7347 WebGestureEvent event; | |
| 7348 event.type = type; | |
| 7349 event.x = 100; | |
| 7350 event.y = 100; | |
| 7351 if (type == WebInputEvent::GestureScrollUpdate) { | |
| 7352 event.data.scrollUpdate.deltaX = deltaX; | |
| 7353 event.data.scrollUpdate.deltaY = deltaY; | |
| 7354 } | |
| 7355 return event; | |
| 7356 } | |
| 7357 | |
| 7358 void ScrollBegin(FrameTestHelpers::WebViewHelper* webViewHelper) | |
| 7359 { | |
| 7360 webViewHelper->webViewImpl()->handleInputEvent(generateEvent(WebInputEve nt::GestureScrollBegin)); | |
| 7361 } | |
| 7362 | |
| 7363 void ScrollUpdate(FrameTestHelpers::WebViewHelper* webViewHelper, float delt aX, float deltaY) | |
| 7364 { | |
| 7365 webViewHelper->webViewImpl()->handleInputEvent(generateEvent(WebInputEve nt::GestureScrollUpdate, deltaX, deltaY)); | |
| 7366 } | |
| 7367 | |
| 7368 void ScrollEnd(FrameTestHelpers::WebViewHelper* webViewHelper) | |
| 7369 { | |
| 7370 webViewHelper->webViewImpl()->handleInputEvent(generateEvent(WebInputEve nt::GestureScrollEnd)); | |
| 7371 } | |
| 7372 | |
| 7373 void CompareUnusedDeltaAndAccumulatedRootOverscroll(FrameTestHelpers::WebVie wHelper* webViewHelper, float unUsedWidth, float unUsedHeight, float accumulated Width, float accumulatedHeight) | |
| 7374 { | |
| 7375 FloatSize unUsedDelta = webViewHelper->webViewImpl()->mainFrameImpl()->f rame()->eventHandler().unusedDeltaForTesting(); | |
| 7376 FloatSize accumulatedRootOverscroll = webViewHelper->webViewImpl()->main FrameImpl()->frame()->eventHandler().accumulatedRootOverscrollForTesting(); | |
| 7377 EXPECT_FLOAT_EQ(unUsedWidth, unUsedDelta.width()); | |
| 7378 EXPECT_FLOAT_EQ(unUsedHeight, unUsedDelta.height()); | |
| 7379 EXPECT_FLOAT_EQ(accumulatedWidth, accumulatedRootOverscroll.width()); | |
| 7380 EXPECT_FLOAT_EQ(accumulatedHeight, accumulatedRootOverscroll.height()); | |
| 7381 } | |
| 7382 }; | |
| 7383 | |
| 7384 TEST_F(WebFrameOverscrollTest, AccumulatedRootOverscrollAndUnsedDeltaSetAndUnset ) | |
| 7385 { | |
| 7386 FakeCompositingWebViewClient client; | |
| 7387 registerMockedHttpURLLoad("overscroll/overscroll.html"); | |
| 7388 FrameTestHelpers::WebViewHelper webViewHelper; | |
| 7389 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "over scroll/overscroll.html", true, 0, &client, configureAndroid); | |
| 7390 webViewImpl->layout(); | |
| 7391 | |
| 7392 // Resets accumulatedRootOverscroll and unusedDelta on scroll end. | |
| 7393 ScrollBegin(&webViewHelper); | |
| 7394 ScrollUpdate(&webViewHelper, 0, -13); | |
| 7395 ScrollEnd(&webViewHelper); | |
| 7396 CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 0, 0, 0); | |
| 7397 | |
| 7398 // Calculation of accumulatedRootOverscroll and unusedDelta on Single scroll Update. | |
| 7399 ScrollBegin(&webViewHelper); | |
| 7400 ScrollUpdate(&webViewHelper, 0, -13); | |
| 7401 CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 13, 0, 13) ; | |
| 7402 ScrollEnd(&webViewHelper); | |
| 7403 | |
| 7404 // Calculation of accumulatedRootOverscroll and unusedDelta on multiple scro llUpdate. | |
| 7405 ScrollBegin(&webViewHelper); | |
| 7406 ScrollUpdate(&webViewHelper, 0, -13); | |
| 7407 CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 13, 0, 13) ; | |
| 7408 ScrollUpdate(&webViewHelper, -20, -13); | |
| 7409 CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 20, 13, 20, 2 6); | |
|
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.
| |
| 7410 ScrollUpdate(&webViewHelper, -20, 0); | |
| 7411 CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 20, 0, 40, 26 ); | |
| 7412 ScrollEnd(&webViewHelper); | |
| 7413 CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 0, 0, 0); | |
| 7414 } | |
| 7415 | |
| 7416 TEST_F(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerDivOverScroll) | |
| 7417 { | |
| 7418 FakeCompositingWebViewClient client; | |
| 7419 registerMockedHttpURLLoad("overscroll/div-overscroll.html"); | |
| 7420 FrameTestHelpers::WebViewHelper webViewHelper; | |
| 7421 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "over scroll/div-overscroll.html", true, 0, &client, configureAndroid); | |
| 7422 webViewImpl->layout(); | |
| 7423 | |
| 7424 ScrollBegin(&webViewHelper); | |
| 7425 | |
| 7426 // Scroll the Div to the end. | |
| 7427 ScrollUpdate(&webViewHelper, 0, -316); | |
| 7428 CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 0, 0, 0); | |
| 7429 | |
| 7430 // Now On Scrolling DIV, scroll is bubbled and root layer is over-scrolled. | |
| 7431 ScrollUpdate(&webViewHelper, 0, -50); | |
| 7432 CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 50, 0, 50) ; | |
| 7433 | |
| 7434 ScrollEnd(&webViewHelper); | |
| 7435 CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 0, 0, 0); | |
| 7436 } | |
| 7437 | |
| 7438 TEST_F(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerIFrameOverScroll) | |
| 7439 { | |
| 7440 FakeCompositingWebViewClient client; | |
| 7441 registerMockedHttpURLLoad("overscroll/iframe-overscroll.html"); | |
| 7442 registerMockedHttpURLLoad("overscroll/scrollable-iframe.html"); | |
| 7443 FrameTestHelpers::WebViewHelper webViewHelper; | |
| 7444 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "over scroll/iframe-overscroll.html", true, 0, &client, configureAndroid); | |
| 7445 webViewImpl->layout(); | |
| 7446 | |
| 7447 ScrollBegin(&webViewHelper); | |
| 7448 | |
| 7449 // Scroll the IFrame to the end. | |
| 7450 ScrollUpdate(&webViewHelper, 0, -320); | |
| 7451 CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 0, 0, 0); | |
| 7452 | |
| 7453 // Now On Scrolling IFrame, scroll is bubbled and root layer is over-scrolle d. | |
| 7454 ScrollUpdate(&webViewHelper, 0, -50); | |
| 7455 CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 50, 0, 50) ; | |
| 7456 } | |
| 7457 | |
| 7458 TEST_F(WebFrameOverscrollTest, ScaledPageRootLayerOverscrolled) | |
| 7459 { | |
| 7460 FakeCompositingWebViewClient client; | |
| 7461 registerMockedHttpURLLoad("overscroll/overscroll.html"); | |
| 7462 FrameTestHelpers::WebViewHelper webViewHelper; | |
| 7463 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "over scroll/overscroll.html", true, 0, &client, configureAndroid); | |
| 7464 webViewImpl->setPageScaleFactor(3.f); | |
| 7465 webViewImpl->layout(); | |
| 7466 | |
| 7467 // Calculation of accumulatedRootOverscroll and unusedDelta on scaled page. | |
| 7468 ScrollBegin(&webViewHelper); | |
| 7469 ScrollUpdate(&webViewHelper, 0, 30); | |
| 7470 CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, -10, 0, -1 0); | |
| 7471 | |
| 7472 ScrollUpdate(&webViewHelper, 0, 30); | |
| 7473 CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, -10, 0, -2 0); | |
| 7474 | |
| 7475 ScrollUpdate(&webViewHelper, 30, 30); | |
| 7476 CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, -10, -10, -10 , -30); | |
| 7477 | |
| 7478 ScrollUpdate(&webViewHelper, 30, 0); | |
| 7479 CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, -10, 0, -20, -30); | |
| 7480 | |
| 7481 ScrollEnd(&webViewHelper); | |
| 7482 CompareUnusedDeltaAndAccumulatedRootOverscroll(&webViewHelper, 0, 0, 0, 0); | |
| 7483 } | |
| 7484 | |
| 7344 } // namespace blink | 7485 } // namespace blink |
| OLD | NEW |