@SmallTest @Feature({"AndroidWebView"}) public void testOverScrollX() throws Throwable { final TestAwContentsClient contentsClient = new TestAwContentsClient(); final ScrollTestContainerView testContainerView = (ScrollTestContainerView) createAwTestContainerViewOnMainSync(contentsClient); final OverScrollByCallbackHelper overScrollByCallbackHelper = testContainerView.getOverScrollByCallbackHelper(); enableJavaScriptOnUiThread(testContainerView.getAwContents()); final int overScrollDeltaX = 30; final int oneStep = 1; loadTestPageAndWaitForFirstFrame(testContainerView, contentsClient, null, ""); // Scroll separately in different dimensions because of vertical/horizontal scroll // snap. final int overScrollCallCount = overScrollByCallbackHelper.getCallCount(); AwTestTouchUtils.dragCompleteView( testContainerView, 0, overScrollDeltaX, 0, 0, oneStep, null /* completionLatch */); overScrollByCallbackHelper.waitForCallback(overScrollCallCount); // Unfortunately the gesture detector seems to 'eat' some number of pixels. For now // checking that the value is < 0 (overscroll is reported as negative values) will have to // do. assertTrue(0 > overScrollByCallbackHelper.getDeltaX()); assertEquals(0, overScrollByCallbackHelper.getDeltaY()); assertScrollOnMainSync(testContainerView, 0, 0); }
@SmallTest @Feature({"AndroidWebView"}) public void testOverScrollY() throws Throwable { final TestAwContentsClient contentsClient = new TestAwContentsClient(); final ScrollTestContainerView testContainerView = (ScrollTestContainerView) createAwTestContainerViewOnMainSync(contentsClient); final OverScrollByCallbackHelper overScrollByCallbackHelper = testContainerView.getOverScrollByCallbackHelper(); enableJavaScriptOnUiThread(testContainerView.getAwContents()); final int overScrollDeltaY = 30; final int oneStep = 1; loadTestPageAndWaitForFirstFrame(testContainerView, contentsClient, null, ""); int overScrollCallCount = overScrollByCallbackHelper.getCallCount(); AwTestTouchUtils.dragCompleteView( testContainerView, 0, 0, 0, overScrollDeltaY, oneStep, null /* completionLatch */); overScrollByCallbackHelper.waitForCallback(overScrollCallCount); assertEquals(0, overScrollByCallbackHelper.getDeltaX()); assertTrue(0 > overScrollByCallbackHelper.getDeltaY()); assertScrollOnMainSync(testContainerView, 0, 0); }
@Override protected boolean overScrollBy( int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) { mOverScrollByCallbackHelper.notifyCalled(deltaX, deltaY, scrollRangeY); return super.overScrollBy( deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, maxOverScrollY, isTouchEvent); }