diff options
author | jdduke <jdduke@chromium.org> | 2015-02-25 10:25:54 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-02-25 18:26:28 +0000 |
commit | e2d2b8ec967d92754b97942dbb20685b318bf8d9 (patch) | |
tree | eab4d21162dd4cccb38dddc839f0f074e9a8fb1b | |
parent | 5fa486e25133222537f9c13410f77e1debd7caf5 (diff) | |
download | chromium_src-e2d2b8ec967d92754b97942dbb20685b318bf8d9.zip chromium_src-e2d2b8ec967d92754b97942dbb20685b318bf8d9.tar.gz chromium_src-e2d2b8ec967d92754b97942dbb20685b318bf8d9.tar.bz2 |
aw: Keep selection handles when flinging
Currently, PopupWindow-based selection handles are hidden when scrolling
begins. However, WebView uses an entirely separate code path for flings,
about which PopupWindow knows nothing. Thus, the handles could
re-appear in the middle of a View-driven fling.
Expose whether such a fling is active via the ContentViewClient, making
such information available to the selection handle visibility logic.
This ensures the handles stay hidden for the duration of the fling.
Review URL: https://codereview.chromium.org/958673003
Cr-Commit-Position: refs/heads/master@{#318080}
4 files changed, 17 insertions, 2 deletions
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContentViewClient.java b/android_webview/java/src/org/chromium/android_webview/AwContentViewClient.java index c1f1608..13313e3 100644 --- a/android_webview/java/src/org/chromium/android_webview/AwContentViewClient.java +++ b/android_webview/java/src/org/chromium/android_webview/AwContentViewClient.java @@ -133,4 +133,9 @@ public class AwContentViewClient extends ContentViewClient implements ContentVid public boolean isJavascriptEnabled() { return mAwSettings != null && mAwSettings.getJavaScriptEnabled(); } + + @Override + public boolean isExternalFlingActive() { + return mAwContents.isFlingActive(); + } } 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 8d0d278..e53f4f7 100644 --- a/android_webview/java/src/org/chromium/android_webview/AwContents.java +++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java @@ -2250,7 +2250,7 @@ public class AwContents implements SmartClipProvider, } @CalledByNative - private boolean isFlingActive() { + public boolean isFlingActive() { return mScrollOffsetManager.isFlingActive(); } diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewClient.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewClient.java index 06de1fd..92288ad 100644 --- a/content/public/android/java/src/org/chromium/content/browser/ContentViewClient.java +++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewClient.java @@ -163,6 +163,14 @@ public class ContentViewClient { } /** + * @return Whether an externally managed (i.e., not compositor-driven) fling + * of this ContentView is active. + */ + public boolean isExternalFlingActive() { + return false; + } + + /** * Check whether a key should be propagated to the embedder or not. * We need to send almost every key to Blink. However: * 1. We don't want to block the device on the renderer for diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java index 89fa619..226e4ea 100644 --- a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java +++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java @@ -1180,7 +1180,9 @@ public class ContentViewCore } public boolean isScrollInProgress() { - return mTouchScrollInProgress || mPotentiallyActiveFlingCount > 0; + return mTouchScrollInProgress + || mPotentiallyActiveFlingCount > 0 + || getContentViewClient().isExternalFlingActive(); } @SuppressWarnings("unused") |