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

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

Issue 690613003: Adding Unit Test Coverage for Select Action Bar Cut, Paste, Select All options (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Refactored the HTML content to prevent flaky failures. Created 6 years, 1 month 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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.content.ClipData; 7 import android.content.ClipData;
8 import android.content.ClipboardManager; 8 import android.content.ClipboardManager;
9 import android.content.Context; 9 import android.content.Context;
10 import android.test.suitebuilder.annotation.SmallTest; 10 import android.test.suitebuilder.annotation.SmallTest;
(...skipping 11 matching lines...) Expand all
22 22
23 /** 23 /**
24 * Integration tests for text selection-related behavior. 24 * Integration tests for text selection-related behavior.
25 */ 25 */
26 public class ContentViewCoreSelectionTest extends ContentShellTestBase { 26 public class ContentViewCoreSelectionTest extends ContentShellTestBase {
27 private static final String DATA_URL = UrlUtils.encodeHtmlDataUri( 27 private static final String DATA_URL = UrlUtils.encodeHtmlDataUri(
28 "<html><head><meta name=\"viewport\"" 28 "<html><head><meta name=\"viewport\""
29 + "content=\"width=device-width, initial-scale=1.1, maximum-scale=1. 5\" /></head>" 29 + "content=\"width=device-width, initial-scale=1.1, maximum-scale=1. 5\" /></head>"
30 + "<body><form action=\"about:blank\">" 30 + "<body><form action=\"about:blank\">"
31 + "<input id=\"empty_input_text\" type=\"text\" />" 31 + "<input id=\"empty_input_text\" type=\"text\" />"
32 + "<br/><input id=\"input_text\" type=\"text\" value=\"SampleInputTe xt\" />"
33 + "<br/><textarea id=\"textarea\" rows=\"2\" cols=\"20\">SampleTextA rea</textarea>"
34 + "<br/><input id=\"input_password\" type=\"password\" value=\"Sampl ePassword\" />"
32 + "<br/><p><span id=\"plain_text_1\">SamplePlainTextOne</span></p>" 35 + "<br/><p><span id=\"plain_text_1\">SamplePlainTextOne</span></p>"
jdduke (slow) 2014/11/07 17:14:34 Interesting, I wonder if the selection/insertion h
33 + "<br/><p><span id=\"plain_text_2\">SamplePlainTextTwo</span></p>" 36 + "<br/><p><span id=\"plain_text_2\">SamplePlainTextTwo</span></p>"
34 + "<br/><input id=\"empty_input_text\" type=\"text\" />"
35 + "<br/><input id=\"input_text\" type=\"text\" value=\"SampleInputTe xt\" />"
36 + "<br/><textarea id=\"empty_textarea\" rows=\"2\" cols=\"20\"></tex tarea>"
37 + "<br/><textarea id=\"textarea\" rows=\"2\" cols=\"20\">Sample Text </textarea>"
38 + "<br/><input id=\"readonly_text\" type=\"text\" readonly value=\"S ample Text\"/>" 37 + "<br/><input id=\"readonly_text\" type=\"text\" readonly value=\"S ample Text\"/>"
39 + "<br/><input id=\"disabled_text\" type=\"text\" disabled value=\"S ample Text\" />" 38 + "<br/><input id=\"disabled_text\" type=\"text\" disabled value=\"S ample Text\" />"
40 + "<br/><input id=\"input_password\" type=\"password\" value=\"Sampl ePassword\" />"
41 + "</form></body></html>"); 39 + "</form></body></html>");
42 private ContentViewCore mContentViewCore; 40 private ContentViewCore mContentViewCore;
43 41
44 @Override 42 @Override
45 public void setUp() throws Exception { 43 public void setUp() throws Exception {
46 super.setUp(); 44 super.setUp();
47 45
48 launchContentShellWithUrl(DATA_URL); 46 launchContentShellWithUrl(DATA_URL);
49 assertTrue("Page failed to load", waitForActiveShellToBeDoneLoading()); 47 assertTrue("Page failed to load", waitForActiveShellToBeDoneLoading());
50 48
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 assertTrue(mContentViewCore.hasSelection()); 121 assertTrue(mContentViewCore.hasSelection());
124 122
125 setAttachedOnUiThread(true); 123 setAttachedOnUiThread(true);
126 assertWaitForSelectActionBarVisible(true); 124 assertWaitForSelectActionBarVisible(true);
127 assertTrue(mContentViewCore.hasSelection()); 125 assertTrue(mContentViewCore.hasSelection());
128 } 126 }
129 127
130 @SmallTest 128 @SmallTest
131 @Feature({"TextInput"}) 129 @Feature({"TextInput"})
132 public void testPastePopupNotShownOnLongPressingNonEmptyInput() throws Throw able { 130 public void testPastePopupNotShownOnLongPressingNonEmptyInput() throws Throw able {
133 copyStringToClipboard(); 131 copyStringToClipboard("SampleTextToCopy");
134 DOMUtils.longPressNode(this, mContentViewCore, "empty_input_text"); 132 DOMUtils.longPressNode(this, mContentViewCore, "empty_input_text");
135 assertWaitForPastePopupStatus(true); 133 assertWaitForPastePopupStatus(true);
136 DOMUtils.longPressNode(this, mContentViewCore, "input_text"); 134 DOMUtils.longPressNode(this, mContentViewCore, "input_text");
137 assertWaitForSelectActionBarVisible(true); 135 assertWaitForSelectActionBarVisible(true);
138 assertWaitForPastePopupStatus(false); 136 assertWaitForPastePopupStatus(false);
139 } 137 }
140 138
141 @SmallTest 139 @SmallTest
142 @Feature({"TextInput"}) 140 @Feature({"TextInput"})
143 public void testPastePopupClearedOnTappingEmptyInput() throws Throwable { 141 public void testPastePopupClearedOnTappingEmptyInput() throws Throwable {
144 copyStringToClipboard(); 142 copyStringToClipboard("SampleTextToCopy");
145 DOMUtils.longPressNode(this, mContentViewCore, "empty_input_text"); 143 DOMUtils.longPressNode(this, mContentViewCore, "empty_input_text");
146 assertWaitForPastePopupStatus(true); 144 assertWaitForPastePopupStatus(true);
147 DOMUtils.clickNode(this, mContentViewCore, "empty_input_text"); 145 DOMUtils.clickNode(this, mContentViewCore, "empty_input_text");
148 assertWaitForPastePopupStatus(false); 146 assertWaitForPastePopupStatus(false);
149 } 147 }
150 148
151 @SmallTest 149 @SmallTest
152 @Feature({"TextInput"}) 150 @Feature({"TextInput"})
153 public void testPastePopupClearedOnTappingNonEmptyInput() throws Throwable { 151 public void testPastePopupClearedOnTappingNonEmptyInput() throws Throwable {
154 copyStringToClipboard(); 152 copyStringToClipboard("SampleTextToCopy");
155 DOMUtils.longPressNode(this, mContentViewCore, "empty_input_text"); 153 DOMUtils.longPressNode(this, mContentViewCore, "empty_input_text");
156 assertWaitForPastePopupStatus(true); 154 assertWaitForPastePopupStatus(true);
157 DOMUtils.clickNode(this, mContentViewCore, "input_text"); 155 DOMUtils.clickNode(this, mContentViewCore, "input_text");
158 assertWaitForPastePopupStatus(false); 156 assertWaitForPastePopupStatus(false);
159 } 157 }
160 158
161 @SmallTest 159 @SmallTest
162 @Feature({"TextInput"}) 160 @Feature({"TextInput"})
163 public void testPastePopupClearedOnTappingOutsideInput() throws Throwable { 161 public void testPastePopupClearedOnTappingOutsideInput() throws Throwable {
164 copyStringToClipboard(); 162 copyStringToClipboard("SampleTextToCopy");
165 DOMUtils.longPressNode(this, mContentViewCore, "empty_input_text"); 163 DOMUtils.longPressNode(this, mContentViewCore, "empty_input_text");
166 assertWaitForPastePopupStatus(true); 164 assertWaitForPastePopupStatus(true);
167 DOMUtils.clickNode(this, mContentViewCore, "plain_text_2"); 165 DOMUtils.clickNode(this, mContentViewCore, "plain_text_2");
168 assertWaitForPastePopupStatus(false); 166 assertWaitForPastePopupStatus(false);
169 } 167 }
170 168
171 @SmallTest 169 @SmallTest
172 @Feature({"TextInput"}) 170 @Feature({"TextInput"})
173 public void testPastePopupClearedOnLongPressingOutsideInput() throws Throwab le { 171 public void testPastePopupClearedOnLongPressingOutsideInput() throws Throwab le {
174 copyStringToClipboard(); 172 copyStringToClipboard("SampleTextToCopy");
175 DOMUtils.longPressNode(this, mContentViewCore, "empty_input_text"); 173 DOMUtils.longPressNode(this, mContentViewCore, "empty_input_text");
176 assertWaitForPastePopupStatus(true); 174 assertWaitForPastePopupStatus(true);
177 DOMUtils.longPressNode(this, mContentViewCore, "plain_text_2"); 175 DOMUtils.longPressNode(this, mContentViewCore, "plain_text_2");
178 assertWaitForPastePopupStatus(false); 176 assertWaitForPastePopupStatus(false);
179 } 177 }
180 178
181 @SmallTest 179 @SmallTest
182 @Feature({"TextInput"}) 180 @Feature({"TextInput"})
183 public void testPastePopupNotShownOnLongPressingReadOnlyInput() throws Throw able { 181 public void testPastePopupNotShownOnLongPressingReadOnlyInput() throws Throw able {
184 copyStringToClipboard(); 182 copyStringToClipboard("SampleTextToCopy");
185 DOMUtils.longPressNode(this, mContentViewCore, "empty_input_text"); 183 DOMUtils.longPressNode(this, mContentViewCore, "empty_input_text");
186 assertWaitForPastePopupStatus(true); 184 assertWaitForPastePopupStatus(true);
187 assertTrue(mContentViewCore.hasInsertion()); 185 assertTrue(mContentViewCore.hasInsertion());
188 DOMUtils.longPressNode(this, mContentViewCore, "readonly_text"); 186 DOMUtils.longPressNode(this, mContentViewCore, "readonly_text");
189 assertWaitForPastePopupStatus(false); 187 assertWaitForPastePopupStatus(false);
190 assertFalse(mContentViewCore.hasInsertion()); 188 assertFalse(mContentViewCore.hasInsertion());
191 } 189 }
192 190
193 @SmallTest 191 @SmallTest
194 @Feature({"TextInput"}) 192 @Feature({"TextInput"})
195 public void testPastePopupNotShownOnLongPressingDisabledInput() throws Throw able { 193 public void testPastePopupNotShownOnLongPressingDisabledInput() throws Throw able {
196 copyStringToClipboard(); 194 copyStringToClipboard("SampleTextToCopy");
197 DOMUtils.longPressNode(this, mContentViewCore, "empty_input_text"); 195 DOMUtils.longPressNode(this, mContentViewCore, "empty_input_text");
198 assertWaitForPastePopupStatus(true); 196 assertWaitForPastePopupStatus(true);
199 assertTrue(mContentViewCore.hasInsertion()); 197 assertTrue(mContentViewCore.hasInsertion());
200 DOMUtils.longPressNode(this, mContentViewCore, "disabled_text"); 198 DOMUtils.longPressNode(this, mContentViewCore, "disabled_text");
201 assertWaitForPastePopupStatus(false); 199 assertWaitForPastePopupStatus(false);
202 assertFalse(mContentViewCore.hasInsertion()); 200 assertFalse(mContentViewCore.hasInsertion());
203 } 201 }
204 202
205 @SmallTest 203 @SmallTest
206 @Feature({"TextInput"}) 204 @Feature({"TextInput"})
(...skipping 23 matching lines...) Expand all
230 DOMUtils.longPressNode(this, mContentViewCore, "plain_text_1"); 228 DOMUtils.longPressNode(this, mContentViewCore, "plain_text_1");
231 assertWaitForSelectActionBarVisible(true); 229 assertWaitForSelectActionBarVisible(true);
232 assertTrue(mContentViewCore.hasSelection()); 230 assertTrue(mContentViewCore.hasSelection());
233 assertNotNull(mContentViewCore.getSelectActionHandler()); 231 assertNotNull(mContentViewCore.getSelectActionHandler());
234 assertFalse(mContentViewCore.getSelectActionHandler().isSelectionEditabl e()); 232 assertFalse(mContentViewCore.getSelectActionHandler().isSelectionEditabl e());
235 assertFalse(mContentViewCore.getSelectActionHandler().isSelectionPasswor d()); 233 assertFalse(mContentViewCore.getSelectActionHandler().isSelectionPasswor d());
236 } 234 }
237 235
238 @SmallTest 236 @SmallTest
239 @Feature({"TextInput"}) 237 @Feature({"TextInput"})
238 public void testActionBarConfiguredCorrectlyForTextArea() throws Throwable {
239 DOMUtils.longPressNode(this, mContentViewCore, "textarea");
240 assertWaitForSelectActionBarVisible(true);
241 assertTrue(mContentViewCore.hasSelection());
242 assertNotNull(mContentViewCore.getSelectActionHandler());
243 assertTrue(mContentViewCore.getSelectActionHandler().isSelectionEditable ());
244 assertFalse(mContentViewCore.getSelectActionHandler().isSelectionPasswor d());
245 }
246
247 @SmallTest
248 @Feature({"TextInput"})
240 public void testSelectActionBarPlainTextCopy() throws Exception { 249 public void testSelectActionBarPlainTextCopy() throws Exception {
241 DOMUtils.longPressNode(this, mContentViewCore, "plain_text_1"); 250 DOMUtils.longPressNode(this, mContentViewCore, "plain_text_1");
242 assertWaitForSelectActionBarVisible(true); 251 assertWaitForSelectActionBarVisible(true);
243 assertTrue(mContentViewCore.hasSelection()); 252 assertTrue(mContentViewCore.hasSelection());
244 assertNotNull(mContentViewCore.getSelectActionHandler()); 253 assertNotNull(mContentViewCore.getSelectActionHandler());
245 selectActionBarCopy(); 254 selectActionBarCopy();
246 assertClipboardContents(mContentViewCore.getContext(), "SamplePlainTextO ne"); 255 assertClipboardContents(mContentViewCore.getContext(), "SamplePlainTextO ne");
247 } 256 }
248 257
249 @SmallTest 258 @SmallTest
(...skipping 19 matching lines...) Expand all
269 DOMUtils.longPressNode(this, mContentViewCore, "input_password"); 278 DOMUtils.longPressNode(this, mContentViewCore, "input_password");
270 assertWaitForSelectActionBarVisible(true); 279 assertWaitForSelectActionBarVisible(true);
271 assertTrue(mContentViewCore.hasSelection()); 280 assertTrue(mContentViewCore.hasSelection());
272 assertNotNull(mContentViewCore.getSelectActionHandler()); 281 assertNotNull(mContentViewCore.getSelectActionHandler());
273 selectActionBarCopy(); 282 selectActionBarCopy();
274 // Copy option won't be there for Password, hence no change in Clipboard 283 // Copy option won't be there for Password, hence no change in Clipboard
275 // Validating with previous Clipboard content 284 // Validating with previous Clipboard content
276 assertClipboardContents(mContentViewCore.getContext(), "SamplePlainTextO ne"); 285 assertClipboardContents(mContentViewCore.getContext(), "SamplePlainTextO ne");
277 } 286 }
278 287
288 @SmallTest
289 @Feature({"TextInput"})
290 public void testSelectActionBarTextAreaCopy() throws Exception {
291 DOMUtils.longPressNode(this, mContentViewCore, "textarea");
292 assertWaitForSelectActionBarVisible(true);
293 assertTrue(mContentViewCore.hasSelection());
294 assertNotNull(mContentViewCore.getSelectActionHandler());
295 selectActionBarCopy();
296 assertClipboardContents(mContentViewCore.getContext(), "SampleTextArea") ;
297 }
298
299 @SmallTest
300 @Feature({"TextSelection"})
301 public void testSelectActionBarPlainTextCut() throws Exception {
302 copyStringToClipboard("SampleTextToCopy");
303 DOMUtils.longPressNode(this, mContentViewCore, "plain_text_1");
304 assertWaitForSelectActionBarVisible(true);
305 assertTrue(mContentViewCore.hasSelection());
306 assertEquals(mContentViewCore.getSelectedText(), "SamplePlainTextOne");
307 assertNotNull(mContentViewCore.getSelectActionHandler());
308 selectActionBarCut();
309 assertWaitForSelectActionBarVisible(true);
310 assertTrue(mContentViewCore.hasSelection());
311 // Cut option won't be available for plain text.
312 // Hence validating previous Clipboard content.
313 assertClipboardContents(mContentViewCore.getContext(), "SampleTextToCopy ");
314 }
315
316 @SmallTest
317 @Feature({"TextInput"})
318 public void testSelectActionBarInputCut() throws Exception {
319 DOMUtils.longPressNode(this, mContentViewCore, "input_text");
320 assertWaitForSelectActionBarVisible(true);
321 assertTrue(mContentViewCore.hasSelection());
322 assertEquals(mContentViewCore.getSelectedText(), "SampleInputText");
323 assertNotNull(mContentViewCore.getSelectActionHandler());
324 selectActionBarCut();
325 assertWaitForSelectActionBarVisible(false);
326 assertFalse(mContentViewCore.hasSelection());
327 assertClipboardContents(mContentViewCore.getContext(), "SampleInputText" );
328 assertEquals(mContentViewCore.getSelectedText(), "");
329 }
330
331 @SmallTest
332 @Feature({"TextInput"})
333 public void testSelectActionBarPasswordCut() throws Exception {
334 copyStringToClipboard("SampleTextToCopy");
335 DOMUtils.longPressNode(this, mContentViewCore, "input_password");
336 assertWaitForSelectActionBarVisible(true);
337 assertTrue(mContentViewCore.hasSelection());
338 assertNotNull(mContentViewCore.getSelectActionHandler());
339 selectActionBarCut();
340 assertWaitForSelectActionBarVisible(true);
341 assertTrue(mContentViewCore.hasSelection());
342 // Cut option won't be there for Password, hence no change in Clipboard
343 // Validating with previous Clipboard content
344 assertClipboardContents(mContentViewCore.getContext(), "SampleTextToCopy ");
345 }
346
347 @SmallTest
348 @Feature({"TextInput"})
349 public void testSelectActionBarTextAreaCut() throws Exception {
350 DOMUtils.longPressNode(this, mContentViewCore, "textarea");
351 assertWaitForSelectActionBarVisible(true);
352 assertTrue(mContentViewCore.hasSelection());
353 assertEquals(mContentViewCore.getSelectedText(), "SampleTextArea");
354 assertNotNull(mContentViewCore.getSelectActionHandler());
355 selectActionBarCut();
356 assertWaitForSelectActionBarVisible(false);
357 assertFalse(mContentViewCore.hasSelection());
358 assertClipboardContents(mContentViewCore.getContext(), "SampleTextArea") ;
359 assertEquals(mContentViewCore.getSelectedText(), "");
360 }
361
362 @SmallTest
363 @Feature({"TextSelection"})
364 public void testSelectActionBarPlainTextSelectAll() throws Exception {
365 DOMUtils.longPressNode(this, mContentViewCore, "plain_text_1");
366 assertWaitForSelectActionBarVisible(true);
367 assertTrue(mContentViewCore.hasSelection());
368 assertNotNull(mContentViewCore.getSelectActionHandler());
369 selectActionBarSelectAll();
370 assertTrue(mContentViewCore.hasSelection());
371 assertWaitForSelectActionBarVisible(true);
372 }
373
374 @SmallTest
375 @Feature({"TextInput"})
376 public void testSelectActionBarInputSelectAll() throws Exception {
377 DOMUtils.longPressNode(this, mContentViewCore, "input_text");
378 assertWaitForSelectActionBarVisible(true);
379 assertTrue(mContentViewCore.hasSelection());
380 assertNotNull(mContentViewCore.getSelectActionHandler());
381 selectActionBarSelectAll();
382 assertTrue(mContentViewCore.hasSelection());
383 assertWaitForSelectActionBarVisible(true);
384 assertEquals(mContentViewCore.getSelectedText(), "SampleInputText");
385 }
386
387 @SmallTest
388 @Feature({"TextInput"})
389 public void testSelectActionBarPasswordSelectAll() throws Exception {
390 DOMUtils.longPressNode(this, mContentViewCore, "input_password");
391 assertWaitForSelectActionBarVisible(true);
392 assertTrue(mContentViewCore.hasSelection());
393 assertNotNull(mContentViewCore.getSelectActionHandler());
394 selectActionBarSelectAll();
395 assertTrue(mContentViewCore.hasSelection());
396 assertWaitForSelectActionBarVisible(true);
397 }
398
399 @SmallTest
400 @Feature({"TextInput"})
401 public void testSelectActionBarTextAreaSelectAll() throws Exception {
402 DOMUtils.longPressNode(this, mContentViewCore, "textarea");
403 assertWaitForSelectActionBarVisible(true);
404 assertTrue(mContentViewCore.hasSelection());
405 assertNotNull(mContentViewCore.getSelectActionHandler());
406 selectActionBarSelectAll();
407 assertTrue(mContentViewCore.hasSelection());
408 assertWaitForSelectActionBarVisible(true);
409 assertEquals(mContentViewCore.getSelectedText(), "SampleTextArea");
410 }
411
412 @SmallTest
413 @Feature({"TextSelection"})
414 public void testSelectActionBarPlainTextPaste() throws Exception {
415 copyStringToClipboard("SampleTextToCopy");
416 DOMUtils.longPressNode(this, mContentViewCore, "plain_text_1");
417 assertWaitForSelectActionBarVisible(true);
418 assertTrue(mContentViewCore.hasSelection());
419 assertNotNull(mContentViewCore.getSelectActionHandler());
420 selectActionBarPaste();
421 DOMUtils.longPressNode(this, mContentViewCore, "plain_text_1");
422 assertWaitForSelectActionBarVisible(true);
423 assertTrue(mContentViewCore.hasSelection());
424 // Paste option won't be available for plain text.
425 // Hence content won't be changed.
426 assertNotSame(mContentViewCore.getSelectedText(), "SampleTextToCopy");
427 }
428
429 @SmallTest
430 @Feature({"TextInput"})
431 public void testSelectActionBarInputPaste() throws Exception {
432 copyStringToClipboard("SampleTextToCopy");
433 DOMUtils.longPressNode(this, mContentViewCore, "input_text");
434 assertWaitForSelectActionBarVisible(true);
435 assertTrue(mContentViewCore.hasSelection());
436 assertNotNull(mContentViewCore.getSelectActionHandler());
437 selectActionBarPaste();
438 DOMUtils.clickNode(this, mContentViewCore, "plain_text_1");
439 DOMUtils.longPressNode(this, mContentViewCore, "input_text");
440 assertWaitForSelectActionBarVisible(true);
441 assertTrue(mContentViewCore.hasSelection());
442 assertEquals(mContentViewCore.getSelectedText(), "SampleTextToCopy");
443 }
444
445 @SmallTest
446 @Feature({"TextInput"})
447 public void testSelectActionBarPasswordPaste() throws Exception {
448 copyStringToClipboard("SampleTextToCopy");
449 DOMUtils.longPressNode(this, mContentViewCore, "input_password");
450 assertWaitForSelectActionBarVisible(true);
451 assertTrue(mContentViewCore.hasSelection());
452 assertNotNull(mContentViewCore.getSelectActionHandler());
453 selectActionBarPaste();
454 DOMUtils.clickNode(this, mContentViewCore, "plain_text_1");
455 DOMUtils.longPressNode(this, mContentViewCore, "input_password");
456 assertWaitForSelectActionBarVisible(true);
457 assertTrue(mContentViewCore.hasSelection());
458 assertNotSame(mContentViewCore.getSelectedText(), "SampleTextToCopy");
459 }
460
461 @SmallTest
462 @Feature({"TextInput"})
463 public void testSelectActionBarTextAreaPaste() throws Exception {
464 copyStringToClipboard("SampleTextToCopy");
465 DOMUtils.longPressNode(this, mContentViewCore, "textarea");
466 assertWaitForSelectActionBarVisible(true);
467 assertTrue(mContentViewCore.hasSelection());
468 assertNotNull(mContentViewCore.getSelectActionHandler());
469 selectActionBarPaste();
470 DOMUtils.clickNode(this, mContentViewCore, "plain_text_1");
471 DOMUtils.longPressNode(this, mContentViewCore, "textarea");
472 assertWaitForSelectActionBarVisible(true);
473 assertTrue(mContentViewCore.hasSelection());
474 assertEquals(mContentViewCore.getSelectedText(), "SampleTextToCopy");
475 }
476
477 private void selectActionBarPaste() {
478 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
479 @Override
480 public void run() {
481 mContentViewCore.getSelectActionHandler().paste();
482 }
483 });
484 }
485
486 private void selectActionBarSelectAll() {
487 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
488 @Override
489 public void run() {
490 mContentViewCore.getSelectActionHandler().selectAll();
491 }
492 });
493 }
494
495 private void selectActionBarCut() {
496 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
497 @Override
498 public void run() {
499 mContentViewCore.getSelectActionHandler().cut();
500 }
501 });
502 }
503
279 private void selectActionBarCopy() { 504 private void selectActionBarCopy() {
280 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 505 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
281 @Override 506 @Override
282 public void run() { 507 public void run() {
283 mContentViewCore.getSelectActionHandler().copy(); 508 mContentViewCore.getSelectActionHandler().copy();
284 } 509 }
285 }); 510 });
286 } 511 }
287 512
288 private void assertClipboardContents(final Context context, final String exp ectedContents) 513 private void assertClipboardContents(final Context context, final String exp ectedContents)
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 private void requestFocusOnUiThread(final boolean gainFocus) { 571 private void requestFocusOnUiThread(final boolean gainFocus) {
347 final ContentViewCore contentViewCore = mContentViewCore; 572 final ContentViewCore contentViewCore = mContentViewCore;
348 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 573 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
349 @Override 574 @Override
350 public void run() { 575 public void run() {
351 contentViewCore.onFocusChanged(gainFocus); 576 contentViewCore.onFocusChanged(gainFocus);
352 } 577 }
353 }); 578 });
354 } 579 }
355 580
356 private void copyStringToClipboard() { 581 private void copyStringToClipboard(String string) {
357 ClipboardManager clipboardManager = 582 ClipboardManager clipboardManager =
358 (ClipboardManager) getActivity().getSystemService( 583 (ClipboardManager) getActivity().getSystemService(
359 Context.CLIPBOARD_SERVICE); 584 Context.CLIPBOARD_SERVICE);
360 ClipData clip = ClipData.newPlainText("test", "Text to copy"); 585 ClipData clip = ClipData.newPlainText("test", string);
361 clipboardManager.setPrimaryClip(clip); 586 clipboardManager.setPrimaryClip(clip);
362 } 587 }
363 588
364 private void assertWaitForPastePopupStatus(final boolean show) throws Interr uptedException { 589 private void assertWaitForPastePopupStatus(final boolean show) throws Interr uptedException {
365 assertTrue(CriteriaHelper.pollForCriteria(new Criteria() { 590 assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
366 @Override 591 @Override
367 public boolean isSatisfied() { 592 public boolean isSatisfied() {
368 return show == mContentViewCore.getPastePopupForTest().isShowing (); 593 return show == mContentViewCore.getPastePopupForTest().isShowing ();
369 } 594 }
370 })); 595 }));
371 } 596 }
372 } 597 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698