| Index: android_webview/javatests/src/org/chromium/android_webview/test/AndroidScrollIntegrationTest.java
|
| diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AndroidScrollIntegrationTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AndroidScrollIntegrationTest.java
|
| index d53b0e86c85397a1281835bb575757af9642972f..830da069eaea7191c15612c7b595f6bc04dfba60 100644
|
| --- a/android_webview/javatests/src/org/chromium/android_webview/test/AndroidScrollIntegrationTest.java
|
| +++ b/android_webview/javatests/src/org/chromium/android_webview/test/AndroidScrollIntegrationTest.java
|
| @@ -23,6 +23,7 @@ import org.chromium.content.browser.test.util.Criteria;
|
| import org.chromium.content.browser.test.util.CriteriaHelper;
|
| import org.chromium.ui.gfx.DeviceDisplayInfo;
|
|
|
| +import java.util.concurrent.Callable;
|
| import java.util.concurrent.CountDownLatch;
|
| import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
| @@ -544,4 +545,115 @@ public class AndroidScrollIntegrationTest extends AwTestBase {
|
| }
|
| });
|
| }
|
| +
|
| + @SmallTest
|
| + @Feature({"AndroidWebView"})
|
| + public void testFlingScroll() throws Throwable {
|
| + final TestAwContentsClient contentsClient = new TestAwContentsClient();
|
| + final ScrollTestContainerView testContainerView =
|
| + (ScrollTestContainerView) createAwTestContainerViewOnMainSync(contentsClient);
|
| + enableJavaScriptOnUiThread(testContainerView.getAwContents());
|
| +
|
| + loadTestPageAndWaitForFirstFrame(testContainerView, contentsClient, null, "");
|
| +
|
| + assertScrollOnMainSync(testContainerView, 0, 0);
|
| +
|
| + final CallbackHelper onScrollToCallbackHelper =
|
| + testContainerView.getOnScrollToCallbackHelper();
|
| + final int scrollToCallCount = onScrollToCallbackHelper.getCallCount();
|
| +
|
| + getInstrumentation().runOnMainSync(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + testContainerView.getAwContents().flingScroll(1000, 1000);
|
| + }
|
| + });
|
| +
|
| + onScrollToCallbackHelper.waitForCallback(scrollToCallCount);
|
| +
|
| + getInstrumentation().runOnMainSync(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + assertTrue(testContainerView.getScrollX() > 0);
|
| + assertTrue(testContainerView.getScrollY() > 0);
|
| + }
|
| + });
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"AndroidWebView"})
|
| + public void testPageDown() throws Throwable {
|
| + final TestAwContentsClient contentsClient = new TestAwContentsClient();
|
| + final ScrollTestContainerView testContainerView =
|
| + (ScrollTestContainerView) createAwTestContainerViewOnMainSync(contentsClient);
|
| + enableJavaScriptOnUiThread(testContainerView.getAwContents());
|
| +
|
| + loadTestPageAndWaitForFirstFrame(testContainerView, contentsClient, null, "");
|
| +
|
| + assertScrollOnMainSync(testContainerView, 0, 0);
|
| +
|
| + final int maxScrollYPix = runTestOnUiThreadAndGetResult(new Callable<Integer>() {
|
| + @Override
|
| + public Integer call() {
|
| + return (testContainerView.getAwContents().computeVerticalScrollRange() -
|
| + testContainerView.getHeight());
|
| + }
|
| + });
|
| +
|
| + final CallbackHelper onScrollToCallbackHelper =
|
| + testContainerView.getOnScrollToCallbackHelper();
|
| + final int scrollToCallCount = onScrollToCallbackHelper.getCallCount();
|
| +
|
| + getInstrumentation().runOnMainSync(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + testContainerView.getAwContents().pageDown(true);
|
| + }
|
| + });
|
| +
|
| + // Wait for the animation to hit the bottom of the page.
|
| + for (int i = 1; ; ++i) {
|
| + onScrollToCallbackHelper.waitForCallback(scrollToCallCount, i);
|
| + if (checkScrollOnMainSync(testContainerView, 0, maxScrollYPix))
|
| + break;
|
| + }
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"AndroidWebView"})
|
| + public void testPageUp() throws Throwable {
|
| + final TestAwContentsClient contentsClient = new TestAwContentsClient();
|
| + final ScrollTestContainerView testContainerView =
|
| + (ScrollTestContainerView) createAwTestContainerViewOnMainSync(contentsClient);
|
| + enableJavaScriptOnUiThread(testContainerView.getAwContents());
|
| +
|
| + final double deviceDIPScale =
|
| + DeviceDisplayInfo.create(testContainerView.getContext()).getDIPScale();
|
| + final int targetScrollYCss = 243;
|
| + final int targetScrollYPix = (int) Math.round(targetScrollYCss * deviceDIPScale);
|
| +
|
| + loadTestPageAndWaitForFirstFrame(testContainerView, contentsClient, null, "");
|
| +
|
| + assertScrollOnMainSync(testContainerView, 0, 0);
|
| +
|
| + scrollToOnMainSync(testContainerView, 0, targetScrollYPix);
|
| +
|
| + final CallbackHelper onScrollToCallbackHelper =
|
| + testContainerView.getOnScrollToCallbackHelper();
|
| + final int scrollToCallCount = onScrollToCallbackHelper.getCallCount();
|
| +
|
| + getInstrumentation().runOnMainSync(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + testContainerView.getAwContents().pageUp(true);
|
| + }
|
| + });
|
| +
|
| + // Wait for the animation to hit the bottom of the page.
|
| + for (int i = 1; ; ++i) {
|
| + onScrollToCallbackHelper.waitForCallback(scrollToCallCount, i);
|
| + if (checkScrollOnMainSync(testContainerView, 0, 0))
|
| + break;
|
| + }
|
| + }
|
| }
|
|
|