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

Side by Side 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: addressed review comments Created 5 years, 6 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 unified diff | Download patch
OLDNEW
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
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
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, 0), UnusedDelta(&webViewHelper));
7410 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), AccumulatedRootOverscroll(&webViewHelp er));
7411 ScrollEnd(&webViewHelper);
7412
7413 // Calculation of accumulatedRootOverscroll and unusedDelta on multiple scro llUpdate.
7414 ScrollBegin(&webViewHelper);
7415 ScrollUpdate(&webViewHelper, -400, -400);
7416 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper));
7417 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), AccumulatedRootOverscroll(&webViewHelp er));
7418
7419 ScrollUpdate(&webViewHelper, 0, -13);
7420 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 13), UnusedDelta(&webViewHelper));
7421 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 13), AccumulatedRootOverscroll(&webViewHel per));
7422
7423 ScrollUpdate(&webViewHelper, -20, -13);
7424 EXPECT_FLOAT_SIZE_EQ(FloatSize(20, 13), UnusedDelta(&webViewHelper));
7425 EXPECT_FLOAT_SIZE_EQ(FloatSize(20, 26), AccumulatedRootOverscroll(&webViewHe lper));
7426
7427 ScrollUpdate(&webViewHelper, 0, 1);
7428 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper));
7429 EXPECT_FLOAT_SIZE_EQ(FloatSize(20, 0), AccumulatedRootOverscroll(&webViewHel per));
7430
7431 ScrollUpdate(&webViewHelper, 1, 0);
7432 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper));
7433 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), AccumulatedRootOverscroll(&webViewHelp er));
7434
7435 ScrollEnd(&webViewHelper);
7436 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper));
7437 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), AccumulatedRootOverscroll(&webViewHelp er));
7438 }
7439
7440 TEST_F(WebFrameOverscrollTest, AccumulatedOverscrollAndUnusedDeltaReset)
7441 {
7442 FakeCompositingWebViewClient client;
7443 registerMockedHttpURLLoad("overscroll/div-overscroll.html");
7444 FrameTestHelpers::WebViewHelper webViewHelper;
7445 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "over scroll/div-overscroll.html", true, 0, &client, configureAndroid);
7446 webViewImpl->layout();
7447
7448 ScrollBegin(&webViewHelper);
7449
7450 // Scroll the Div to the end.
7451 ScrollUpdate(&webViewHelper, 0, -316);
7452 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper));
7453 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), AccumulatedRootOverscroll(&webViewHelp er));
7454
7455 // Now On Scrolling DIV, scroll is bubbled and root layer is over-scrolled.
7456 ScrollUpdate(&webViewHelper, 0, -50);
7457 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 50), UnusedDelta(&webViewHelper));
7458 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 50), AccumulatedRootOverscroll(&webViewHel per));
7459
7460 // Resets the Accumulated and unusedDelta on scrolling up.
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 ScrollUpdate(&webViewHelper, 0, -50);
7466 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper));
7467 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), AccumulatedRootOverscroll(&webViewHelp er));
7468
7469 // Now On Scrolling DIV, scroll is bubbled and root layer is over-scrolled.
7470 ScrollUpdate(&webViewHelper, 0, -100);
7471 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 100), UnusedDelta(&webViewHelper));
7472 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 100), AccumulatedRootOverscroll(&webViewHe lper));
7473
7474 // Page scrolls vertically, but over-scrolls horizontally.
7475 ScrollUpdate(&webViewHelper, 100, 50);
7476 EXPECT_FLOAT_SIZE_EQ(FloatSize(-100, 0), UnusedDelta(&webViewHelper));
7477 EXPECT_FLOAT_SIZE_EQ(FloatSize(-100, 0), AccumulatedRootOverscroll(&webViewH elper));
7478
7479 ScrollUpdate(&webViewHelper, 0, -50);
7480 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper));
7481 EXPECT_FLOAT_SIZE_EQ(FloatSize(-100, 0), AccumulatedRootOverscroll(&webViewH elper));
7482
7483 // Page scrolls horizontally, but over-scrolls vertically.
7484 ScrollUpdate(&webViewHelper, -100, -100);
7485 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 100), UnusedDelta(&webViewHelper));
7486 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 100), AccumulatedRootOverscroll(&webViewHe lper));
7487
7488 ScrollEnd(&webViewHelper);
7489 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper));
7490 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), AccumulatedRootOverscroll(&webViewHelp er));
7491 }
7492
7493 TEST_F(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerDivOverScroll)
7494 {
7495 FakeCompositingWebViewClient client;
7496 registerMockedHttpURLLoad("overscroll/div-overscroll.html");
7497 FrameTestHelpers::WebViewHelper webViewHelper;
7498 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "over scroll/div-overscroll.html", true, 0, &client, configureAndroid);
7499 webViewImpl->layout();
7500
7501 ScrollBegin(&webViewHelper);
7502
7503 // Scroll the Div to the end.
7504 ScrollUpdate(&webViewHelper, 0, -316);
7505 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper));
7506 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), AccumulatedRootOverscroll(&webViewHelp er));
7507
7508 // Now On Scrolling DIV, scroll is bubbled and root layer is over-scrolled.
7509 ScrollUpdate(&webViewHelper, 0, -50);
7510 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 50), UnusedDelta(&webViewHelper));
7511 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 50), AccumulatedRootOverscroll(&webViewHel per));
7512 }
7513
7514 TEST_F(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerIFrameOverScroll)
7515 {
7516 FakeCompositingWebViewClient client;
7517 registerMockedHttpURLLoad("overscroll/iframe-overscroll.html");
7518 registerMockedHttpURLLoad("overscroll/scrollable-iframe.html");
7519 FrameTestHelpers::WebViewHelper webViewHelper;
7520 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "over scroll/iframe-overscroll.html", true, 0, &client, configureAndroid);
7521 webViewImpl->layout();
7522
7523 ScrollBegin(&webViewHelper);
7524
7525 // Scroll the IFrame to the end.
7526 ScrollUpdate(&webViewHelper, 0, -320);
7527 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper));
7528 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), AccumulatedRootOverscroll(&webViewHelp er));
7529
7530 // Now On Scrolling IFrame, scroll is bubbled and root layer is over-scrolle d.
7531 ScrollUpdate(&webViewHelper, 0, -50);
7532 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 50), UnusedDelta(&webViewHelper));
7533 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 50), AccumulatedRootOverscroll(&webViewHel per));
7534 }
7535
7536 TEST_F(WebFrameOverscrollTest, ScaledPageRootLayerOverscrolled)
7537 {
7538 FakeCompositingWebViewClient client;
7539 registerMockedHttpURLLoad("overscroll/overscroll.html");
7540 FrameTestHelpers::WebViewHelper webViewHelper;
7541 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "over scroll/overscroll.html", true, 0, &client, configureAndroid);
7542 webViewImpl->setPageScaleFactor(3.f);
7543 webViewImpl->layout();
7544
7545 // Calculation of accumulatedRootOverscroll and unusedDelta on scaled page.
7546 ScrollBegin(&webViewHelper);
7547 ScrollUpdate(&webViewHelper, 0, 30);
7548 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, -10), UnusedDelta(&webViewHelper));
7549 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, -10), AccumulatedRootOverscroll(&webViewHe lper));
7550
7551 ScrollUpdate(&webViewHelper, 0, 30);
7552 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, -10), UnusedDelta(&webViewHelper));
7553 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, -20), AccumulatedRootOverscroll(&webViewHe lper));
7554
7555 ScrollUpdate(&webViewHelper, 30, 30);
7556 EXPECT_FLOAT_SIZE_EQ(FloatSize(-10, -10), UnusedDelta(&webViewHelper));
7557 EXPECT_FLOAT_SIZE_EQ(FloatSize(-10, -30), AccumulatedRootOverscroll(&webView Helper));
7558
7559 ScrollUpdate(&webViewHelper, 30, 0);
7560 EXPECT_FLOAT_SIZE_EQ(FloatSize(-10, 0), UnusedDelta(&webViewHelper));
7561 EXPECT_FLOAT_SIZE_EQ(FloatSize(-20, -30), AccumulatedRootOverscroll(&webView Helper));
7562
7563 ScrollEnd(&webViewHelper);
7564 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), UnusedDelta(&webViewHelper));
7565 EXPECT_FLOAT_SIZE_EQ(FloatSize(0, 0), AccumulatedRootOverscroll(&webViewHelp er));
7566 }
7567
7344 } // namespace blink 7568 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698