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

Unified Diff: android_webview/java/src/org/chromium/android_webview/AwContents.java

Issue 274323004: NOT FOR LANDING - [WebView] Allow fling animation via the LayerScrollOffsetDelegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix test Created 5 years, 10 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
« no previous file with comments | « android_webview/browser/browser_view_renderer_client.h ('k') | android_webview/native/aw_contents.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 c95137c7ec63a5d061f50cf0c56f4f90399adf86..325e6803cae5ca57d6a1ebac87ec963f82e27607 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwContents.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java
@@ -22,6 +22,7 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
+import android.util.FloatMath;
import android.util.Log;
import android.util.Pair;
import android.view.KeyEvent;
@@ -31,6 +32,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;
@@ -2279,14 +2281,29 @@ public class AwContents implements SmartClipProvider,
}
@CalledByNative
- private void didOverscroll(int deltaX, int deltaY) {
+ private void didOverscroll(int deltaX, int deltaY, float velocityX, float velocityY,
+ boolean firstOverscrollX, boolean firstOverscrollY) {
if (mOverScrollGlow != null) {
mOverScrollGlow.setOverScrollDeltas(deltaX, deltaY);
}
+ // TODO(jdduke): Skip this for components with non-zero velocity?
mScrollOffsetManager.overScrollBy(deltaX, deltaY);
- if (mOverScrollGlow != null && mOverScrollGlow.isAnimating()) {
+ if (mOverScrollGlow == null) return;
+
+ if ((velocityX != 0 && firstOverscrollX) || (velocityY != 0 && firstOverscrollY)) {
+ final int oldX = mContainerView.getScrollX();
+ final int oldY = mContainerView.getScrollY();
+ final int x = oldX + deltaX;
+ final int y = oldX + 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();
}
}
@@ -2682,6 +2699,8 @@ public class AwContents implements SmartClipProvider,
@Override
public void computeScroll() {
+ if (isDestroyed()) return;
+ nativeOnComputeScroll(mNativeAwContents, AnimationUtils.currentAnimationTimeMillis());
mScrollOffsetManager.computeScrollAndAbsorbGlow(mOverScrollGlow);
}
}
@@ -2719,6 +2738,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);
« no previous file with comments | « android_webview/browser/browser_view_renderer_client.h ('k') | android_webview/native/aw_contents.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698