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 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
145 EXPECT_EQ(expected.x(), actual.x()); \ | 145 EXPECT_EQ(expected.x(), actual.x()); \ |
146 EXPECT_EQ(expected.y(), actual.y()); \ | 146 EXPECT_EQ(expected.y(), actual.y()); \ |
147 } while (false) | 147 } while (false) |
148 | 148 |
149 #define EXPECT_FLOAT_POINT_EQ(expected, actual) \ | 149 #define EXPECT_FLOAT_POINT_EQ(expected, actual) \ |
150 do { \ | 150 do { \ |
151 EXPECT_FLOAT_EQ(expected.x(), actual.x()); \ | 151 EXPECT_FLOAT_EQ(expected.x(), actual.x()); \ |
152 EXPECT_FLOAT_EQ(expected.y(), actual.y()); \ | 152 EXPECT_FLOAT_EQ(expected.y(), actual.y()); \ |
153 } while (false) | 153 } while (false) |
154 | 154 |
155 #define EXPECT_FLOAT_SIZE_EQ(expected, actual) \ | |
156 do { \ | |
157 EXPECT_FLOAT_EQ(expected.width(), actual.width()); \ | |
158 EXPECT_FLOAT_EQ(expected.height(), actual.height()); \ | |
159 } while (false) | |
160 | |
155 class WebFrameTest : public ::testing::Test { | 161 class WebFrameTest : public ::testing::Test { |
156 protected: | 162 protected: |
157 WebFrameTest() | 163 WebFrameTest() |
158 : m_baseURL("http://internal.test/") | 164 : m_baseURL("http://internal.test/") |
159 , m_notBaseURL("http://external.test/") | 165 , m_notBaseURL("http://external.test/") |
160 , m_chromeURL("chrome://") | 166 , m_chromeURL("chrome://") |
161 { | 167 { |
162 } | 168 } |
163 | 169 |
164 virtual ~WebFrameTest() | 170 virtual ~WebFrameTest() |
(...skipping 7169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
7334 EXPECT_EQ(fourthFrame, parent->lastChild()); | 7340 EXPECT_EQ(fourthFrame, parent->lastChild()); |
7335 | 7341 |
7336 EXPECT_EQ(parent, firstFrame->parent()); | 7342 EXPECT_EQ(parent, firstFrame->parent()); |
7337 EXPECT_EQ(parent, secondFrame->parent()); | 7343 EXPECT_EQ(parent, secondFrame->parent()); |
7338 EXPECT_EQ(parent, thirdFrame->parent()); | 7344 EXPECT_EQ(parent, thirdFrame->parent()); |
7339 EXPECT_EQ(parent, fourthFrame->parent()); | 7345 EXPECT_EQ(parent, fourthFrame->parent()); |
7340 | 7346 |
7341 view->close(); | 7347 view->close(); |
7342 } | 7348 } |
7343 | 7349 |
7350 class WebFrameOverscrollTest : public WebFrameTest { | |
7351 protected: | |
7352 WebGestureEvent generateEvent(WebInputEvent::Type type, int deltaX = 0, int deltaY = 0) | |
7353 { | |
7354 WebGestureEvent event; | |
7355 event.type = type; | |
7356 event.x = 100; | |
7357 event.y = 100; | |
7358 if (type == WebInputEvent::GestureScrollUpdate) { | |
7359 event.data.scrollUpdate.deltaX = deltaX; | |
7360 event.data.scrollUpdate.deltaY = deltaY; | |
7361 } | |
7362 return event; | |
7363 } | |
7364 | |
7365 void ScrollBegin(FrameTestHelpers::WebViewHelper* webViewHelper) | |
7366 { | |
7367 webViewHelper->webViewImpl()->handleInputEvent(generateEvent(WebInputEve nt::GestureScrollBegin)); | |
7368 } | |
7369 | |
7370 void ScrollUpdate(FrameTestHelpers::WebViewHelper* webViewHelper, float delt aX, float deltaY) | |
7371 { | |
7372 webViewHelper->webViewImpl()->handleInputEvent(generateEvent(WebInputEve nt::GestureScrollUpdate, deltaX, deltaY)); | |
7373 } | |
7374 | |
7375 void ScrollEnd(FrameTestHelpers::WebViewHelper* webViewHelper) | |
7376 { | |
7377 webViewHelper->webViewImpl()->handleInputEvent(generateEvent(WebInputEve nt::GestureScrollEnd)); | |
7378 } | |
7379 FloatSize AccumulatedRootOverscroll(FrameTestHelpers::WebViewHelper* webView Helper) | |
7380 { | |
7381 return webViewHelper->webViewImpl()->mainFrameImpl()->frame()->eventHand ler().accumulatedRootOverscrollForTesting(); | |
7382 } | |
7383 | |
7384 FloatSize UnusedDelta(FrameTestHelpers::WebViewHelper* webViewHelper) | |
7385 { | |
7386 return webViewHelper->webViewImpl()->mainFrameImpl()->frame()->eventHand ler().unusedDeltaForTesting(); | |
7387 } | |
7388 | |
7389 }; | |
7390 | |
7391 TEST_F(WebFrameOverscrollTest, AccumulatedRootOverscrollAndUnsedDeltaSetAndUnset ) | |
7392 { | |
7393 FakeCompositingWebViewClient client; | |
7394 registerMockedHttpURLLoad("overscroll/overscroll.html"); | |
7395 FrameTestHelpers::WebViewHelper webViewHelper; | |
7396 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "over scroll/overscroll.html", true, 0, &client, configureAndroid); | |
7397 webViewImpl->layout(); | |
7398 | |
7399 // Resets accumulatedRootOverscroll and unusedDelta on scroll end. | |
7400 ScrollBegin(&webViewHelper); | |
7401 ScrollUpdate(&webViewHelper, 0, -13); | |
7402 ScrollEnd(&webViewHelper); | |
7403 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper)); | |
7404 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), AccumulatedRootOverscroll(&webViewHelp er)); | |
7405 | |
7406 // Calculation of accumulatedRootOverscroll and unusedDelta on Single scroll Update. | |
7407 ScrollBegin(&webViewHelper); | |
7408 ScrollUpdate(&webViewHelper, 0, -13); | |
7409 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 13), UnusedDelta(&webViewHelper)); | |
7410 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 13), AccumulatedRootOverscroll(&webViewHel per)); | |
7411 ScrollEnd(&webViewHelper); | |
7412 | |
7413 // Calculation of accumulatedRootOverscroll and unusedDelta on multiple scro llUpdate. | |
7414 ScrollBegin(&webViewHelper); | |
7415 ScrollUpdate(&webViewHelper, 0, -13); | |
7416 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 13), UnusedDelta(&webViewHelper)); | |
7417 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 13), AccumulatedRootOverscroll(&webViewHel per)); | |
7418 | |
7419 ScrollUpdate(&webViewHelper, -20, -13); | |
7420 EXPECT_FLOAT_SIZE_EQ(FloatSize(20, 13), UnusedDelta(&webViewHelper)); | |
7421 EXPECT_FLOAT_SIZE_EQ(FloatSize(20, 26), AccumulatedRootOverscroll(&webViewHe lper)); | |
7422 | |
7423 ScrollUpdate(&webViewHelper, 0, 26); | |
7424 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, -26), UnusedDelta(&webViewHelper)); | |
7425 EXPECT_FLOAT_SIZE_EQ(FloatSize(20, 0), AccumulatedRootOverscroll(&webViewHel per)); | |
7426 | |
7427 ScrollUpdate(&webViewHelper, 20, 0); | |
7428 EXPECT_FLOAT_SIZE_EQ(FloatSize(-20, 0), UnusedDelta(&webViewHelper)); | |
7429 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), AccumulatedRootOverscroll(&webViewHelp er)); | |
7430 | |
7431 ScrollEnd(&webViewHelper); | |
7432 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper)); | |
7433 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), AccumulatedRootOverscroll(&webViewHelp er)); | |
7434 } | |
7435 | |
7436 TEST_F(WebFrameOverscrollTest, AccumulatedOverscrollAndUnusedDeltaReset) | |
7437 { | |
7438 FakeCompositingWebViewClient client; | |
7439 registerMockedHttpURLLoad("overscroll/div-overscroll.html"); | |
7440 FrameTestHelpers::WebViewHelper webViewHelper; | |
7441 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "over scroll/div-overscroll.html", true, 0, &client, configureAndroid); | |
7442 webViewImpl->layout(); | |
7443 | |
7444 ScrollBegin(&webViewHelper); | |
7445 | |
7446 // Scroll the Div to the end. | |
7447 ScrollUpdate(&webViewHelper, 0, -316); | |
7448 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper)); | |
7449 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), AccumulatedRootOverscroll(&webViewHelp er)); | |
7450 | |
7451 // Now On Scrolling DIV, scroll is bubbled and root layer is over-scrolled. | |
7452 ScrollUpdate(&webViewHelper, 0, -50); | |
7453 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 50), UnusedDelta(&webViewHelper)); | |
7454 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 50), AccumulatedRootOverscroll(&webViewHel per)); | |
7455 | |
7456 // Resets the Accumulated and unusedDelta on scrolling up. | |
7457 ScrollUpdate(&webViewHelper, 0, 50); | |
majidvp
2015/06/01 15:58:29
Should use a value smaller than 50 otherwise the z
majidvp
2015/06/02 17:00:31
What about this?
MuVen
2015/06/03 09:32:18
Done.
| |
7458 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper)); | |
7459 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), AccumulatedRootOverscroll(&webViewHelp er)); | |
7460 | |
7461 ScrollUpdate(&webViewHelper, 0, -50); | |
7462 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper)); | |
7463 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), AccumulatedRootOverscroll(&webViewHelp er)); | |
7464 | |
7465 // Now On Scrolling DIV, scroll is bubbled and root layer is over-scrolled. | |
7466 ScrollUpdate(&webViewHelper, 0, -100); | |
7467 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 100), UnusedDelta(&webViewHelper)); | |
7468 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 100), AccumulatedRootOverscroll(&webViewHe lper)); | |
7469 | |
7470 // Page scrolls vertically, but over-scrolls horizontally. | |
7471 ScrollUpdate(&webViewHelper, 100, 50); | |
7472 EXPECT_FLOAT_SIZE_EQ(FloatSize(-100, 0), UnusedDelta(&webViewHelper)); | |
7473 EXPECT_FLOAT_SIZE_EQ(FloatSize(-100, 0), AccumulatedRootOverscroll(&webViewH elper)); | |
7474 | |
7475 ScrollUpdate(&webViewHelper, 0, -50); | |
7476 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper)); | |
7477 EXPECT_FLOAT_SIZE_EQ(FloatSize(-100, 0), AccumulatedRootOverscroll(&webViewH elper)); | |
7478 | |
7479 // Page scrolls horizontally, but over-scrolls vertically. | |
7480 ScrollUpdate(&webViewHelper, -100, -100); | |
7481 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 100), UnusedDelta(&webViewHelper)); | |
7482 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 100), AccumulatedRootOverscroll(&webViewHe lper)); | |
7483 | |
7484 ScrollEnd(&webViewHelper); | |
7485 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper)); | |
7486 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), AccumulatedRootOverscroll(&webViewHelp er)); | |
7487 } | |
7488 | |
7489 TEST_F(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerDivOverScroll) | |
7490 { | |
7491 FakeCompositingWebViewClient client; | |
7492 registerMockedHttpURLLoad("overscroll/div-overscroll.html"); | |
7493 FrameTestHelpers::WebViewHelper webViewHelper; | |
7494 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "over scroll/div-overscroll.html", true, 0, &client, configureAndroid); | |
7495 webViewImpl->layout(); | |
7496 | |
7497 ScrollBegin(&webViewHelper); | |
7498 | |
7499 // Scroll the Div to the end. | |
7500 ScrollUpdate(&webViewHelper, 0, -316); | |
7501 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper)); | |
7502 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), AccumulatedRootOverscroll(&webViewHelp er)); | |
7503 | |
7504 // Now On Scrolling DIV, scroll is bubbled and root layer is over-scrolled. | |
7505 ScrollUpdate(&webViewHelper, 0, -50); | |
7506 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 50), UnusedDelta(&webViewHelper)); | |
7507 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 50), AccumulatedRootOverscroll(&webViewHel per)); | |
7508 } | |
7509 | |
7510 TEST_F(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerIFrameOverScroll) | |
7511 { | |
7512 FakeCompositingWebViewClient client; | |
7513 registerMockedHttpURLLoad("overscroll/iframe-overscroll.html"); | |
7514 registerMockedHttpURLLoad("overscroll/scrollable-iframe.html"); | |
7515 FrameTestHelpers::WebViewHelper webViewHelper; | |
7516 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "over scroll/iframe-overscroll.html", true, 0, &client, configureAndroid); | |
7517 webViewImpl->layout(); | |
7518 | |
7519 ScrollBegin(&webViewHelper); | |
7520 | |
7521 // Scroll the IFrame to the end. | |
7522 ScrollUpdate(&webViewHelper, 0, -320); | |
7523 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper)); | |
7524 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), AccumulatedRootOverscroll(&webViewHelp er)); | |
7525 | |
7526 // Now On Scrolling IFrame, scroll is bubbled and root layer is over-scrolle d. | |
7527 ScrollUpdate(&webViewHelper, 0, -50); | |
7528 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 50), UnusedDelta(&webViewHelper)); | |
7529 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 50), AccumulatedRootOverscroll(&webViewHel per)); | |
7530 } | |
7531 | |
7532 TEST_F(WebFrameOverscrollTest, ScaledPageRootLayerOverscrolled) | |
7533 { | |
7534 FakeCompositingWebViewClient client; | |
7535 registerMockedHttpURLLoad("overscroll/overscroll.html"); | |
7536 FrameTestHelpers::WebViewHelper webViewHelper; | |
7537 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "over scroll/overscroll.html", true, 0, &client, configureAndroid); | |
7538 webViewImpl->setPageScaleFactor(3.f); | |
7539 webViewImpl->layout(); | |
7540 | |
7541 // Calculation of accumulatedRootOverscroll and unusedDelta on scaled page. | |
7542 ScrollBegin(&webViewHelper); | |
7543 ScrollUpdate(&webViewHelper, 0, 30); | |
7544 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, -10), UnusedDelta(&webViewHelper)); | |
7545 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, -10), AccumulatedRootOverscroll(&webViewHe lper)); | |
7546 | |
7547 ScrollUpdate(&webViewHelper, 0, 30); | |
7548 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, -10), UnusedDelta(&webViewHelper)); | |
7549 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, -20), AccumulatedRootOverscroll(&webViewHe lper)); | |
7550 | |
7551 ScrollUpdate(&webViewHelper, 30, 30); | |
7552 EXPECT_FLOAT_SIZE_EQ(FloatSize(-10, -10), UnusedDelta(&webViewHelper)); | |
7553 EXPECT_FLOAT_SIZE_EQ(FloatSize(-10, -30), AccumulatedRootOverscroll(&webView Helper)); | |
7554 | |
7555 ScrollUpdate(&webViewHelper, 30, 0); | |
7556 EXPECT_FLOAT_SIZE_EQ(FloatSize(-10, 0), UnusedDelta(&webViewHelper)); | |
7557 EXPECT_FLOAT_SIZE_EQ(FloatSize(-20, -30), AccumulatedRootOverscroll(&webView Helper)); | |
7558 | |
7559 ScrollEnd(&webViewHelper); | |
7560 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper)); | |
7561 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), AccumulatedRootOverscroll(&webViewHelp er)); | |
7562 } | |
7563 | |
7344 } // namespace blink | 7564 } // namespace blink |
OLD | NEW |