Chromium Code Reviews| Index: android_webview/java/src/org/chromium/android_webview/AwContents.java |
| diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java |
| index 9060c091319daeb93e497aee886b4e3450569c6e..aee90089e5c682eb84c246513acd1c36b8f64cf0 100644 |
| --- a/android_webview/java/src/org/chromium/android_webview/AwContents.java |
| +++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java |
| @@ -22,8 +22,10 @@ import android.os.Build; |
| import android.os.Bundle; |
| import android.os.Handler; |
| import android.os.Message; |
| +import android.os.SystemClock; |
| import android.text.TextUtils; |
| import android.util.Base64; |
| +import android.util.FloatMath; |
| import android.util.Log; |
| import android.util.Pair; |
| import android.view.KeyEvent; |
| @@ -33,6 +35,7 @@ import android.view.ViewGroup; |
| import android.view.accessibility.AccessibilityEvent; |
| import android.view.accessibility.AccessibilityNodeInfo; |
| import android.view.accessibility.AccessibilityNodeProvider; |
| +import android.view.animation.AnimationUtils; |
| import android.view.inputmethod.EditorInfo; |
| import android.view.inputmethod.InputConnection; |
| import android.webkit.GeolocationPermissions; |
| @@ -579,11 +582,6 @@ public class AwContents implements SmartClipProvider, |
| } |
| @Override |
| - public void onUnhandledFlingStartEvent(int velocityX, int velocityY) { |
| - mScrollOffsetManager.onUnhandledFlingStartEvent(velocityX, velocityY); |
| - } |
| - |
| - @Override |
| public void onScrollUpdateGestureConsumed() { |
| mScrollAccessibilityHelper.postViewScrolledAccessibilityEventCallback(); |
| } |
| @@ -1936,7 +1934,12 @@ public class AwContents implements SmartClipProvider, |
| */ |
| public void flingScroll(int velocityX, int velocityY) { |
| if (TRACE) Log.d(TAG, "flingScroll"); |
| - mScrollOffsetManager.flingScroll(velocityX, velocityY); |
| + // TODO(hush): crbug.com/493765. A hit test at 0, 0 may not |
| + // target the scroll at root scrolling layer. Instead, we |
| + // should add a method flingRootLayer to ContentViewCore |
| + // and call it here to specifically target the scroll at |
| + // the root layer. |
| + mContentViewCore.fling(SystemClock.uptimeMillis(), 0, 0, -velocityX, -velocityY); |
| } |
| /** |
| @@ -2549,8 +2552,8 @@ public class AwContents implements SmartClipProvider, |
| } |
| @CalledByNative |
| - public boolean isFlingActive() { |
| - return mScrollOffsetManager.isFlingActive(); |
| + public boolean isSmoothScrollingActive() { |
| + return mScrollOffsetManager.isSmoothScrollingActive(); |
| } |
| @CalledByNative |
| @@ -2570,15 +2573,24 @@ public class AwContents implements SmartClipProvider, |
| client.init(mContentViewCore); |
| } |
| + @SuppressLint("NewApi") |
|
boliu
2015/05/29 19:42:47
Add a comment which api
hush (inactive)
2015/06/05 21:47:21
Done.
|
| @CalledByNative |
| - private void didOverscroll(int deltaX, int deltaY) { |
| - if (mOverScrollGlow != null) { |
| - mOverScrollGlow.setOverScrollDeltas(deltaX, deltaY); |
| - } |
| - |
| + private void didOverscroll(int deltaX, int deltaY, float velocityX, float velocityY) { |
| mScrollOffsetManager.overScrollBy(deltaX, deltaY); |
| - if (mOverScrollGlow != null && mOverScrollGlow.isAnimating()) { |
| + if (mOverScrollGlow == null) return; |
| + |
| + mOverScrollGlow.setOverScrollDeltas(deltaX, deltaY); |
| + final int oldX = mContainerView.getScrollX(); |
| + final int oldY = mContainerView.getScrollY(); |
| + final int x = oldX + deltaX; |
| + final int y = oldY + deltaY; |
| + final int scrollRangeX = mScrollOffsetManager.computeMaximumHorizontalScrollOffset(); |
| + final int scrollRangeY = mScrollOffsetManager.computeMaximumVerticalScrollOffset(); |
| + mOverScrollGlow.absorbGlow(x, y, oldX, oldY, scrollRangeX, scrollRangeY, |
| + FloatMath.hypot(velocityX, velocityY)); |
| + |
| + if (mOverScrollGlow.isAnimating()) { |
| postInvalidateOnAnimation(); |
| } |
| } |
| @@ -2987,7 +2999,13 @@ public class AwContents implements SmartClipProvider, |
| @Override |
| public void computeScroll() { |
| - mScrollOffsetManager.computeScrollAndAbsorbGlow(mOverScrollGlow); |
| + if (mScrollOffsetManager.willComputeScroll()) { |
|
boliu
2015/05/29 19:42:47
What does it mean when this is true, but composito
hush (inactive)
2015/06/05 21:47:21
That's a good observation.
This means "pending_fli
|
| + mScrollOffsetManager.computeScrollAndAbsorbGlow(mOverScrollGlow); |
| + } else { |
| + if (isDestroyed()) return; |
| + nativeOnComputeScroll( |
| + mNativeAwContents, AnimationUtils.currentAnimationTimeMillis()); |
| + } |
| } |
| } |
| @@ -3026,6 +3044,8 @@ public class AwContents implements SmartClipProvider, |
| long nativeAwContents, String path, ValueCallback<String> callback); |
| private native void nativeAddVisitedLinks(long nativeAwContents, String[] visitedLinks); |
| + private native void nativeOnComputeScroll( |
| + long nativeAwContents, long currentAnimationTimeMillis); |
| private native boolean nativeOnDraw(long nativeAwContents, Canvas canvas, |
| boolean isHardwareAccelerated, int scrollX, int scrollY, |
| int visibleLeft, int visibleTop, int visibleRight, int visibleBottom); |