diff options
author | Leon Scroggins <scroggo@google.com> | 2010-12-16 18:17:23 -0500 |
---|---|---|
committer | Leon Scroggins <scroggo@google.com> | 2010-12-17 11:04:14 -0500 |
commit | 8a4fd2f8e7f78538adad82f4c95e8746f880abcc (patch) | |
tree | 05b18c27ac6b5936ee27c853d4ac7410d896819f | |
parent | b67529b905440e2ba550742773b927abad882c19 (diff) | |
download | frameworks_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.java | 6 | ||||
-rw-r--r-- | core/java/android/webkit/WebView.java | 29 |
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; |