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

Unified Diff: android_webview/javatests/src/org/chromium/android_webview/test/AndroidScrollIntegrationTest.java

Issue 22613004: [android_webivew] Implement flingScroll, pageUp, pageDown (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 4 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 side-by-side diff with in-line comments
Download patch
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;
+ }
+ }
}

Powered by Google App Engine
This is Rietveld 408576698