summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjdduke <jdduke@chromium.org>2015-02-25 10:25:54 -0800
committerCommit bot <commit-bot@chromium.org>2015-02-25 18:26:28 +0000
commite2d2b8ec967d92754b97942dbb20685b318bf8d9 (patch)
treeeab4d21162dd4cccb38dddc839f0f074e9a8fb1b
parent5fa486e25133222537f9c13410f77e1debd7caf5 (diff)
downloadchromium_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}
-rw-r--r--android_webview/java/src/org/chromium/android_webview/AwContentViewClient.java5
-rw-r--r--android_webview/java/src/org/chromium/android_webview/AwContents.java2
-rw-r--r--content/public/android/java/src/org/chromium/content/browser/ContentViewClient.java8
-rw-r--r--content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java4
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")