| Index: android_webview/javatests/src/org/chromium/android_webview/test/AwScrollOffsetManagerTest.java
|
| diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwScrollOffsetManagerTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwScrollOffsetManagerTest.java
|
| index c39477430362e7a3ec14663f886758414a1295b4..b6928203de6c2efa800ebb3933416580c33c68e4 100644
|
| --- a/android_webview/javatests/src/org/chromium/android_webview/test/AwScrollOffsetManagerTest.java
|
| +++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwScrollOffsetManagerTest.java
|
| @@ -5,11 +5,12 @@
|
| package org.chromium.android_webview.test;
|
|
|
| import android.content.Context;
|
| -import android.view.View;
|
| -import android.view.View.MeasureSpec;
|
| -import android.widget.OverScroller;
|
| +import android.graphics.Rect;
|
| import android.test.InstrumentationTestCase;
|
| import android.test.suitebuilder.annotation.SmallTest;
|
| +import android.view.View.MeasureSpec;
|
| +import android.view.View;
|
| +import android.widget.OverScroller;
|
|
|
| import org.chromium.android_webview.AwScrollOffsetManager;
|
| import org.chromium.base.test.util.Feature;
|
| @@ -106,6 +107,15 @@ public class AwScrollOffsetManagerTest extends InstrumentationTestCase {
|
| offsetManager.onContainerViewOverScrolled(scrollX, scrollY, false, false);
|
| }
|
|
|
| + private void simlateOverScrollPropagation(AwScrollOffsetManager offsetManager,
|
| + TestScrollOffsetManagerDelegate delegate) {
|
| + assertTrue(delegate.getOverScrollCallCount() > 0);
|
| +
|
| + offsetManager.onContainerViewOverScrolled(
|
| + delegate.getOverScrollDeltaX() + delegate.getScrollX(),
|
| + delegate.getOverScrollDeltaY() + delegate.getScrollY(), false, false);
|
| + }
|
| +
|
| @SmallTest
|
| @Feature({"AndroidWebView"})
|
| public void testWhenContentSizeMatchesView() {
|
| @@ -154,8 +164,8 @@ public class AwScrollOffsetManagerTest extends InstrumentationTestCase {
|
|
|
| private static final int VIEW_WIDTH = 211;
|
| private static final int VIEW_HEIGHT = 312;
|
| - private static final int MAX_HORIZONTAL_OFFSET = 61;
|
| - private static final int MAX_VERTICAL_OFFSET = 42;
|
| + private static final int MAX_HORIZONTAL_OFFSET = 757;
|
| + private static final int MAX_VERTICAL_OFFSET = 127;
|
| private static final int CONTENT_WIDTH = VIEW_WIDTH + MAX_HORIZONTAL_OFFSET;
|
| private static final int CONTENT_HEIGHT = VIEW_HEIGHT + MAX_VERTICAL_OFFSET;
|
|
|
| @@ -235,8 +245,8 @@ public class AwScrollOffsetManagerTest extends InstrumentationTestCase {
|
| @SmallTest
|
| @Feature({"AndroidWebView"})
|
| public void testDelegateOverridenScrollsDontExceedBounds() {
|
| - final int overrideScrollX = 222;
|
| - final int overrideScrollY = 333;
|
| + final int overrideScrollX = MAX_HORIZONTAL_OFFSET + 10;
|
| + final int overrideScrollY = MAX_VERTICAL_OFFSET + 20;
|
| TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDelegate() {
|
| @Override
|
| public int getContainerViewScrollX() {
|
| @@ -351,4 +361,97 @@ public class AwScrollOffsetManagerTest extends InstrumentationTestCase {
|
| assertTrue(delegate.getInvalidateCount() == 2);
|
| assertEquals(111, (int) scroller.getCurrVelocity());
|
| }
|
| +
|
| + @SmallTest
|
| + @Feature({"AndroidWebView"})
|
| + public void testRequestChildRectangleOnScreenDontScrollIfAlreadyThere() {
|
| + TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDelegate();
|
| + OverScroller scroller = new OverScroller(getInstrumentation().getContext());
|
| + AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate, scroller);
|
| +
|
| + offsetManager.setContentSize(CONTENT_WIDTH, CONTENT_HEIGHT);
|
| + offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT);
|
| +
|
| + offsetManager.requestChildRectangleOnScreen(0, 0,
|
| + new Rect(0, 0, VIEW_WIDTH / 4, VIEW_HEIGHT / 4), true);
|
| + assertEquals(0, delegate.getOverScrollDeltaX());
|
| + assertEquals(0, delegate.getOverScrollDeltaY());
|
| + assertEquals(0, delegate.getScrollX());
|
| + assertEquals(0, delegate.getScrollY());
|
| +
|
| + offsetManager.requestChildRectangleOnScreen(3 * VIEW_WIDTH / 4, 3 * VIEW_HEIGHT / 4,
|
| + new Rect(0, 0, VIEW_WIDTH / 4, VIEW_HEIGHT / 4), true);
|
| + assertEquals(0, delegate.getOverScrollDeltaX());
|
| + assertEquals(0, delegate.getOverScrollDeltaY());
|
| + assertEquals(0, delegate.getScrollX());
|
| + assertEquals(0, delegate.getScrollY());
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"AndroidWebView"})
|
| + public void testRequestChildRectangleOnScreenScrollToBottom() {
|
| + TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDelegate();
|
| + OverScroller scroller = new OverScroller(getInstrumentation().getContext());
|
| + AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate, scroller);
|
| +
|
| + final int rectWidth = 2;
|
| + final int rectHeight = 3;
|
| +
|
| + offsetManager.setContentSize(CONTENT_WIDTH, CONTENT_HEIGHT);
|
| + offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT);
|
| +
|
| + offsetManager.requestChildRectangleOnScreen(CONTENT_WIDTH - rectWidth,
|
| + CONTENT_HEIGHT - rectHeight, new Rect(0, 0, rectWidth, rectHeight), true);
|
| + simlateOverScrollPropagation(offsetManager, delegate);
|
| + assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getOverScrollDeltaX());
|
| + assertEquals(CONTENT_HEIGHT - rectHeight - VIEW_HEIGHT / 3, delegate.getOverScrollDeltaY());
|
| + assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getScrollX());
|
| + assertEquals(MAX_VERTICAL_OFFSET, delegate.getScrollY());
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"AndroidWebView"})
|
| + public void testRequestChildRectangleOnScreenScrollToBottomLargeRect() {
|
| + TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDelegate();
|
| + OverScroller scroller = new OverScroller(getInstrumentation().getContext());
|
| + AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate, scroller);
|
| +
|
| + final int rectWidth = VIEW_WIDTH;
|
| + final int rectHeight = VIEW_HEIGHT;
|
| +
|
| + offsetManager.setContentSize(CONTENT_WIDTH, CONTENT_HEIGHT);
|
| + offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT);
|
| +
|
| + offsetManager.requestChildRectangleOnScreen(CONTENT_WIDTH - rectWidth,
|
| + CONTENT_HEIGHT - rectHeight, new Rect(0, 0, rectWidth, rectHeight), true);
|
| + simlateOverScrollPropagation(offsetManager, delegate);
|
| + assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getOverScrollDeltaX());
|
| + assertEquals(MAX_VERTICAL_OFFSET, delegate.getOverScrollDeltaY());
|
| + assertEquals(MAX_HORIZONTAL_OFFSET, delegate.getScrollX());
|
| + assertEquals(MAX_VERTICAL_OFFSET, delegate.getScrollY());
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"AndroidWebView"})
|
| + public void testRequestChildRectangleOnScreenScrollToTop() {
|
| + TestScrollOffsetManagerDelegate delegate = new TestScrollOffsetManagerDelegate();
|
| + OverScroller scroller = new OverScroller(getInstrumentation().getContext());
|
| + AwScrollOffsetManager offsetManager = new AwScrollOffsetManager(delegate, scroller);
|
| +
|
| + final int rectWidth = 2;
|
| + final int rectHeight = 3;
|
| +
|
| + offsetManager.setContentSize(CONTENT_WIDTH, CONTENT_HEIGHT);
|
| + offsetManager.setContainerViewSize(VIEW_WIDTH, VIEW_HEIGHT);
|
| + simulateScrolling(offsetManager, delegate,
|
| + CONTENT_WIDTH - VIEW_WIDTH, CONTENT_HEIGHT - VIEW_HEIGHT);
|
| +
|
| + offsetManager.requestChildRectangleOnScreen(0, 0,
|
| + new Rect(0, 0, rectWidth, rectHeight), true);
|
| + simlateOverScrollPropagation(offsetManager, delegate);
|
| + assertEquals(-CONTENT_WIDTH + VIEW_WIDTH, delegate.getOverScrollDeltaX());
|
| + assertEquals(-CONTENT_HEIGHT + VIEW_HEIGHT, delegate.getOverScrollDeltaY());
|
| + assertEquals(0, delegate.getScrollX());
|
| + assertEquals(0, delegate.getScrollX());
|
| + }
|
| }
|
|
|