| 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 830da069eaea7191c15612c7b595f6bc04dfba60..2dad1134e353759bf6f2d8c58b8be2ba510b8208 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
|
| @@ -199,9 +199,6 @@ public class AndroidScrollIntegrationTest extends AwTestBase {
|
| private void assertScrollInJs(final AwContents awContents,
|
| final TestAwContentsClient contentsClient,
|
| final int xCss, final int yCss) throws Exception {
|
| - String x = executeJavaScriptAndWaitForResult(awContents, contentsClient, "window.scrollX");
|
| - String y = executeJavaScriptAndWaitForResult(awContents, contentsClient, "window.scrollY");
|
| -
|
| assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
|
| @Override
|
| public boolean isSatisfied() {
|
| @@ -221,6 +218,26 @@ public class AndroidScrollIntegrationTest extends AwTestBase {
|
| }, WAIT_TIMEOUT_SECONDS * 1000, CHECK_INTERVAL));
|
| }
|
|
|
| + private void assertScrolledToBottomInJs(final AwContents awContents,
|
| + final TestAwContentsClient contentsClient) throws Exception {
|
| + final String isBottomScript = "window.scrollY == " +
|
| + "(window.document.documentElement.scrollHeight - window.innerHeight)";
|
| + assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
|
| + @Override
|
| + public boolean isSatisfied() {
|
| + try {
|
| + String r = executeJavaScriptAndWaitForResult(awContents, contentsClient,
|
| + isBottomScript);
|
| + return r.equals("true");
|
| + } catch (Throwable t) {
|
| + t.printStackTrace();
|
| + fail("Failed to get window.scroll(X/Y): " + t.toString());
|
| + return false;
|
| + }
|
| + }
|
| + }, WAIT_TIMEOUT_SECONDS * 1000, CHECK_INTERVAL));
|
| + }
|
| +
|
| private void loadTestPageAndWaitForFirstFrame(final ScrollTestContainerView testContainerView,
|
| final TestAwContentsClient contentsClient,
|
| final String onscrollObserverName, final String extraContent) throws Exception {
|
| @@ -259,8 +276,8 @@ public class AndroidScrollIntegrationTest extends AwTestBase {
|
| DeviceDisplayInfo.create(testContainerView.getContext()).getDIPScale();
|
| final int targetScrollXCss = 233;
|
| final int targetScrollYCss = 322;
|
| - final int targetScrollXPix = (int) Math.round(targetScrollXCss * deviceDIPScale);
|
| - final int targetScrollYPix = (int) Math.round(targetScrollYCss * deviceDIPScale);
|
| + final int targetScrollXPix = (int) Math.ceil(targetScrollXCss * deviceDIPScale);
|
| + final int targetScrollYPix = (int) Math.ceil(targetScrollYCss * deviceDIPScale);
|
| final JavascriptEventObserver onscrollObserver = new JavascriptEventObserver();
|
|
|
| Log.w("AndroidScrollIntegrationTest", String.format("scroll in Js (%d, %d) -> (%d, %d)",
|
| @@ -295,8 +312,8 @@ public class AndroidScrollIntegrationTest extends AwTestBase {
|
| DeviceDisplayInfo.create(testContainerView.getContext()).getDIPScale();
|
| final int targetScrollXCss = 132;
|
| final int targetScrollYCss = 243;
|
| - final int targetScrollXPix = (int) Math.round(targetScrollXCss * deviceDIPScale);
|
| - final int targetScrollYPix = (int) Math.round(targetScrollYCss * deviceDIPScale);
|
| + final int targetScrollXPix = (int) Math.floor(targetScrollXCss * deviceDIPScale);
|
| + final int targetScrollYPix = (int) Math.floor(targetScrollYCss * deviceDIPScale);
|
|
|
| loadDataSync(testContainerView.getAwContents(), contentsClient.getOnPageFinishedHelper(),
|
| makeTestPage(null, null, ""), "text/html", false);
|
| @@ -323,13 +340,13 @@ public class AndroidScrollIntegrationTest extends AwTestBase {
|
| DeviceDisplayInfo.create(testContainerView.getContext()).getDIPScale();
|
| final int targetScrollXCss = 132;
|
| final int targetScrollYCss = 243;
|
| - final int targetScrollXPix = (int) Math.round(targetScrollXCss * deviceDIPScale);
|
| - final int targetScrollYPix = (int) Math.round(targetScrollYCss * deviceDIPScale);
|
| + final int targetScrollXPix = (int) Math.floor(targetScrollXCss * deviceDIPScale);
|
| + final int targetScrollYPix = (int) Math.floor(targetScrollYCss * deviceDIPScale);
|
|
|
| final int maxScrollXCss = 101;
|
| final int maxScrollYCss = 201;
|
| - final int maxScrollXPix = (int) Math.round(maxScrollXCss * deviceDIPScale);
|
| - final int maxScrollYPix = (int) Math.round(maxScrollYCss * deviceDIPScale);
|
| + final int maxScrollXPix = (int) Math.floor(maxScrollXCss * deviceDIPScale);
|
| + final int maxScrollYPix = (int) Math.floor(maxScrollYCss * deviceDIPScale);
|
|
|
| loadDataSync(testContainerView.getAwContents(), contentsClient.getOnPageFinishedHelper(),
|
| makeTestPage(null, null, ""), "text/html", false);
|
| @@ -368,8 +385,8 @@ public class AndroidScrollIntegrationTest extends AwTestBase {
|
| // Make sure we can't hit these values simply as a result of scrolling.
|
| assert (maxScrollXPix % dragStepSize) != 0;
|
| assert (maxScrollYPix % dragStepSize) != 0;
|
| - final int maxScrollXCss = (int) Math.round(maxScrollXPix / deviceDIPScale);
|
| - final int maxScrollYCss = (int) Math.round(maxScrollYPix / deviceDIPScale);
|
| + final int maxScrollXCss = (int) Math.floor(maxScrollXPix / deviceDIPScale);
|
| + final int maxScrollYCss = (int) Math.floor(maxScrollYPix / deviceDIPScale);
|
|
|
| setMaxScrollOnMainSync(testContainerView, maxScrollXPix, maxScrollYPix);
|
|
|
| @@ -524,7 +541,7 @@ public class AndroidScrollIntegrationTest extends AwTestBase {
|
|
|
| final CallbackHelper onScrollToCallbackHelper =
|
| testContainerView.getOnScrollToCallbackHelper();
|
| - final int scrollToCallCount = onScrollToCallbackHelper.getCallCount();
|
| + int scrollToCallCount = onScrollToCallbackHelper.getCallCount();
|
| executeJavaScriptAndWaitForResult(testContainerView.getAwContents(), contentsClient,
|
| "window.scrollTo(" + targetScrollXCss + "," + targetScrollYCss + ")");
|
| onScrollToCallbackHelper.waitForCallback(scrollToCallCount);
|
| @@ -544,6 +561,24 @@ public class AndroidScrollIntegrationTest extends AwTestBase {
|
| assertTrue(maxVertical - awContents.computeVerticalScrollOffset() < 3);
|
| }
|
| });
|
| +
|
| + scrollToCallCount = onScrollToCallbackHelper.getCallCount();
|
| + executeJavaScriptAndWaitForResult(testContainerView.getAwContents(), contentsClient,
|
| + "window.scrollTo(0, 0)");
|
| + onScrollToCallbackHelper.waitForCallback(scrollToCallCount);
|
| +
|
| + getInstrumentation().runOnMainSync(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + AwContents awContents = testContainerView.getAwContents();
|
| + int maxHorizontal = awContents.computeHorizontalScrollRange() -
|
| + testContainerView.getWidth();
|
| + int maxVertical = awContents.computeVerticalScrollRange() -
|
| + testContainerView.getHeight();
|
| + testContainerView.scrollTo(maxHorizontal, maxVertical);
|
| + }
|
| + });
|
| + assertScrolledToBottomInJs(testContainerView.getAwContents(), contentsClient);
|
| }
|
|
|
| @SmallTest
|
| @@ -630,7 +665,7 @@ public class AndroidScrollIntegrationTest extends AwTestBase {
|
| final double deviceDIPScale =
|
| DeviceDisplayInfo.create(testContainerView.getContext()).getDIPScale();
|
| final int targetScrollYCss = 243;
|
| - final int targetScrollYPix = (int) Math.round(targetScrollYCss * deviceDIPScale);
|
| + final int targetScrollYPix = (int) Math.ceil(targetScrollYCss * deviceDIPScale);
|
|
|
| loadTestPageAndWaitForFirstFrame(testContainerView, contentsClient, null, "");
|
|
|
|
|