summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeon Scroggins <scroggo@google.com>2010-12-16 18:17:23 -0500
committerLeon Scroggins <scroggo@google.com>2010-12-17 11:04:14 -0500
commit8a4fd2f8e7f78538adad82f4c95e8746f880abcc (patch)
tree05b18c27ac6b5936ee27c853d4ac7410d896819f
parentb67529b905440e2ba550742773b927abad882c19 (diff)
downloadframeworks_base-8a4fd2f8e7f78538adad82f4c95e8746f880abcc.zip
frameworks_base-8a4fd2f8e7f78538adad82f4c95e8746f880abcc.tar.gz
frameworks_base-8a4fd2f8e7f78538adad82f4c95e8746f880abcc.tar.bz2
Do not allow text selection if there is no ActionBar.
Bug:3276538 Change-Id: I060f14471e26e4bc1bf9773b847e0dbac9228426
-rw-r--r--core/java/android/webkit/SelectActionModeCallback.java6
-rw-r--r--core/java/android/webkit/WebView.java29
2 files changed, 27 insertions, 8 deletions
diff --git a/core/java/android/webkit/SelectActionModeCallback.java b/core/java/android/webkit/SelectActionModeCallback.java
index 54c9d9a..86a67c7 100644
--- a/core/java/android/webkit/SelectActionModeCallback.java
+++ b/core/java/android/webkit/SelectActionModeCallback.java
@@ -34,7 +34,11 @@ class SelectActionModeCallback implements ActionMode.Callback {
}
void finish() {
- mActionMode.finish();
+ // It is possible that onCreateActionMode was never called, in the case
+ // where there is no ActionBar, for example.
+ if (mActionMode != null) {
+ mActionMode.finish();
+ }
}
// ActionMode.Callback implementation
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 7195f98..05bb19d 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -3790,7 +3790,9 @@ public class WebView extends AbsoluteLayout
public boolean selectText() {
int x = viewToContentX((int) mLastTouchX + mScrollX);
int y = viewToContentY((int) mLastTouchY + mScrollY);
- setUpSelect();
+ if (!setUpSelect()) {
+ return false;
+ }
if (mNativeClass != 0 && nativeWordSelection(x, y)) {
nativeSetExtendSelection();
mDrawSelectionPointer = false;
@@ -4675,10 +4677,15 @@ public class WebView extends AbsoluteLayout
return false;
}
- private void setUpSelect() {
- if (0 == mNativeClass) return; // client isn't initialized
- if (inFullScreenMode()) return;
- if (mSelectingText) return;
+ /*
+ * Enter selecting text mode. Returns true if the WebView is now in
+ * selecting text mode (including if it was already in that mode, and this
+ * method did nothing).
+ */
+ private boolean setUpSelect() {
+ if (0 == mNativeClass) return false; // client isn't initialized
+ if (inFullScreenMode()) return false;
+ if (mSelectingText) return true;
mExtendSelection = false;
mSelectingText = mDrawSelectionPointer = true;
// don't let the picture change during text selection
@@ -4698,7 +4705,13 @@ public class WebView extends AbsoluteLayout
nativeHideCursor();
mSelectCallback = new SelectActionModeCallback();
mSelectCallback.setWebView(this);
- startActionMode(mSelectCallback);
+ if (startActionMode(mSelectCallback) == null) {
+ // There is no ActionMode, so do not allow the user to modify a
+ // selection.
+ selectionDone();
+ return false;
+ }
+ return true;
}
/**
@@ -4715,7 +4728,9 @@ public class WebView extends AbsoluteLayout
void selectAll() {
if (0 == mNativeClass) return; // client isn't initialized
if (inFullScreenMode()) return;
- if (!mSelectingText) setUpSelect();
+ if (!mSelectingText && !setUpSelect()) {
+ return;
+ }
nativeSelectAll();
mDrawSelectionPointer = false;
mExtendSelection = true;