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

Side by Side Diff: content/public/android/java/src/org/chromium/content/browser/SelectionPopupController.java

Issue 2722273002: Add Select All to Android floating insertion menu (Closed)
Patch Set: moving input location Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.content.browser; 5 package org.chromium.content.browser;
6 6
7 import android.annotation.TargetApi; 7 import android.annotation.TargetApi;
8 import android.app.Activity; 8 import android.app.Activity;
9 import android.app.SearchManager; 9 import android.app.SearchManager;
10 import android.content.ClipboardManager; 10 import android.content.ClipboardManager;
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 private ActionMode mActionMode; 95 private ActionMode mActionMode;
96 96
97 // Bit field for mappings from menu item to a flag indicating it is allowed. 97 // Bit field for mappings from menu item to a flag indicating it is allowed.
98 private int mAllowedMenuItems; 98 private int mAllowedMenuItems;
99 99
100 private boolean mHidden; 100 private boolean mHidden;
101 101
102 private boolean mEditable; 102 private boolean mEditable;
103 private boolean mIsPasswordType; 103 private boolean mIsPasswordType;
104 private boolean mIsInsertion; 104 private boolean mIsInsertion;
105 private boolean mCanSelectAllForPastePopup;
105 106
106 private boolean mUnselectAllOnDismiss; 107 private boolean mUnselectAllOnDismiss;
107 private String mLastSelectedText; 108 private String mLastSelectedText;
108 109
109 // Tracks whether a selection is currently active. When applied to selected text, indicates 110 // Tracks whether a selection is currently active. When applied to selected text, indicates
110 // whether the last selected text is still highlighted. 111 // whether the last selected text is still highlighted.
111 private boolean mHasSelection; 112 private boolean mHasSelection;
112 113
113 // Lazily created paste popup menu, triggered either via long press in an 114 // Lazily created paste popup menu, triggered either via long press in an
114 // editable region or from tapping the insertion handle. 115 // editable region or from tapping the insertion handle.
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 if (!isActionModeValid()) clearSelection(); 245 if (!isActionModeValid()) clearSelection();
245 } 246 }
246 247
247 @TargetApi(Build.VERSION_CODES.M) 248 @TargetApi(Build.VERSION_CODES.M)
248 private ActionMode startFloatingActionMode() { 249 private ActionMode startFloatingActionMode() {
249 ActionMode actionMode = mView.startActionMode( 250 ActionMode actionMode = mView.startActionMode(
250 new FloatingActionModeCallback(this, mCallback), ActionMode.TYPE _FLOATING); 251 new FloatingActionModeCallback(this, mCallback), ActionMode.TYPE _FLOATING);
251 return actionMode; 252 return actionMode;
252 } 253 }
253 254
254 void createAndShowPastePopup(int x, int y) { 255 void createAndShowPastePopup(int x, int y, boolean canSelectAll) {
255 if (mView.getParent() == null || mView.getVisibility() != View.VISIBLE) { 256 if (mView.getParent() == null || mView.getVisibility() != View.VISIBLE) {
256 return; 257 return;
257 } 258 }
258 259
259 if (!supportsFloatingActionMode() && !canPaste()) return; 260 if (!supportsFloatingActionMode() && !canPaste()) return;
260 destroyPastePopup(); 261 destroyPastePopup();
262 mCanSelectAllForPastePopup = canSelectAll;
261 PastePopupMenuDelegate delegate = new PastePopupMenuDelegate() { 263 PastePopupMenuDelegate delegate = new PastePopupMenuDelegate() {
262 @Override 264 @Override
263 public void paste() { 265 public void paste() {
264 mWebContents.paste(); 266 mWebContents.paste();
265 mWebContents.dismissTextHandles(); 267 mWebContents.dismissTextHandles();
266 } 268 }
267 269
268 @Override 270 @Override
269 public boolean canPaste() { 271 public boolean canPaste() {
270 return SelectionPopupController.this.canPaste(); 272 return SelectionPopupController.this.canPaste();
271 } 273 }
274
275 @Override
276 public void selectAll() {
277 SelectionPopupController.this.selectAll();
278 }
279
280 @Override
281 public boolean canSelectAll() {
282 return SelectionPopupController.this.canSelectAll();
283 }
272 }; 284 };
273 Context windowContext = mWindowAndroid.getContext().get(); 285 Context windowContext = mWindowAndroid.getContext().get();
274 if (windowContext == null) return; 286 if (windowContext == null) return;
275 if (supportsFloatingActionMode()) { 287 if (supportsFloatingActionMode()) {
276 mPastePopupMenu = new FloatingPastePopupMenu(windowContext, mView, d elegate); 288 mPastePopupMenu = new FloatingPastePopupMenu(windowContext, mView, d elegate);
277 } else { 289 } else {
278 mPastePopupMenu = new LegacyPastePopupMenu(windowContext, mView, del egate); 290 mPastePopupMenu = new LegacyPastePopupMenu(windowContext, mView, del egate);
279 } 291 }
280 showPastePopup(x, y); 292 showPastePopup(x, y);
281 } 293 }
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after
734 746
735 /** 747 /**
736 * @return true if the current selection is an insertion point. 748 * @return true if the current selection is an insertion point.
737 */ 749 */
738 @VisibleForTesting 750 @VisibleForTesting
739 public boolean isInsertion() { 751 public boolean isInsertion() {
740 return mIsInsertion; 752 return mIsInsertion;
741 } 753 }
742 754
743 /** 755 /**
756 * @return true if the current selection can select all.
757 */
758 @VisibleForTesting
759 public boolean canSelectAll() {
760 return mCanSelectAllForPastePopup;
761 }
762
763 /**
744 * @return true if the current selection is for incognito content. 764 * @return true if the current selection is for incognito content.
745 * Note: This should remain constant for the callback's lifetime. 765 * Note: This should remain constant for the callback's lifetime.
746 */ 766 */
747 private boolean isIncognito() { 767 private boolean isIncognito() {
748 return mWebContents.isIncognito(); 768 return mWebContents.isIncognito();
749 } 769 }
750 770
751 /** 771 /**
752 * @see ActionModeCallbackHelper#sanitizeQuery(String, int) 772 * @see ActionModeCallbackHelper#sanitizeQuery(String, int)
753 */ 773 */
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
998 1018
999 // Remain pending until SELECTION_HANDLES_MOVED arrives. 1019 // Remain pending until SELECTION_HANDLES_MOVED arrives.
1000 if (mPendingShowActionMode) return; 1020 if (mPendingShowActionMode) return;
1001 } 1021 }
1002 1022
1003 // Rely on this method to clear |mHidden| and unhide the action mode . 1023 // Rely on this method to clear |mHidden| and unhide the action mode .
1004 showActionModeOrClearOnFailure(); 1024 showActionModeOrClearOnFailure();
1005 } 1025 }
1006 }; 1026 };
1007 } 1027 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698