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

Side by Side Diff: chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManagerTest.java

Issue 1239583003: Update touch selection notification names, add ESTABLISHED. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update a method name. Created 5 years, 4 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
« 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 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.chrome.browser.contextualsearch; 5 package org.chromium.chrome.browser.contextualsearch;
6 6
7 import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_NON_LOW_E ND_DEVICE; 7 import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_NON_LOW_E ND_DEVICE;
8 import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_PHONE; 8 import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_PHONE;
9 import static org.chromium.content.browser.test.util.CriteriaHelper.DEFAULT_POLL ING_INTERVAL; 9 import static org.chromium.content.browser.test.util.CriteriaHelper.DEFAULT_POLL ING_INTERVAL;
10 10
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 */ 300 */
301 private void waitForPanelToPeekAndAssert() throws InterruptedException { 301 private void waitForPanelToPeekAndAssert() throws InterruptedException {
302 assertTrue("Search Bar did not peek.", waitForPanelToEnterState(PanelSta te.PEEKED)); 302 assertTrue("Search Bar did not peek.", waitForPanelToEnterState(PanelSta te.PEEKED));
303 } 303 }
304 304
305 /** 305 /**
306 * Waits for the Search Panel to expand, and asserts that it did expand. 306 * Waits for the Search Panel to expand, and asserts that it did expand.
307 * @throws InterruptedException 307 * @throws InterruptedException
308 */ 308 */
309 private void waitForPanelToExpandAndAssert() throws InterruptedException { 309 private void waitForPanelToExpandAndAssert() throws InterruptedException {
310 assertTrue("Search Bar did not expand.", waitForPanelToEnterState(PanelS tate.EXPANDED)); 310 assertTrue("Search Panel did not expand.", waitForPanelToEnterState(Pane lState.EXPANDED));
311 } 311 }
312 312
313 /** 313 /**
314 * Waits for the Search Panel to maximize, and asserts that it did maximize. 314 * Waits for the Search Panel to maximize, and asserts that it did maximize.
315 * @throws InterruptedException 315 * @throws InterruptedException
316 */ 316 */
317 private void waitForPanelToMaximizeAndAssert() throws InterruptedException { 317 private void waitForPanelToMaximizeAndAssert() throws InterruptedException {
318 assertTrue("Search Bar did not maximize.", waitForPanelToEnterState(Pane lState.MAXIMIZED)); 318 assertTrue(
319 "Search Panel did not maximize.", waitForPanelToEnterState(Panel State.MAXIMIZED));
319 } 320 }
320 321
321 /** 322 /**
322 * Waits for the Search Panel to close, and asserts that it did close. 323 * Waits for the Search Panel to close, and asserts that it did close.
323 * @throws InterruptedException 324 * @throws InterruptedException
324 */ 325 */
325 private void waitForPanelToCloseAndAssert() throws InterruptedException { 326 private void waitForPanelToCloseAndAssert() throws InterruptedException {
326 // TODO(donnd): figure out why using waitForPanelToEnterState here doesn 't work. 327 assertTrue("Search Panel did not close.", waitForPanelToEnterState(Panel State.CLOSED));
327 assertTrue("Search Bar did not close.",
328 CriteriaHelper.pollForCriteria(new Criteria() {
329 @Override
330 public boolean isSatisfied() {
331 return !mManager.isSearchPanelShowing();
332 }
333 }, TEST_TIMEOUT, DEFAULT_POLLING_INTERVAL));
334 } 328 }
335 329
336 /** 330 /**
331 * Asserts that the panel was never opened.
332 * @throws InterruptedException
333 */
334 private void assertPanelNeverOpened() throws InterruptedException {
335 assertTrue(
336 "Search Panel actually did open.", waitForPanelToEnterState(Pane lState.UNDEFINED));
337 }
338
339 /**
337 * Waits for the Search Panel to enter the given {@code PanelState}. 340 * Waits for the Search Panel to enter the given {@code PanelState}.
338 * @throws InterruptedException 341 * @throws InterruptedException
339 */ 342 */
340 private boolean waitForPanelToEnterState(final PanelState state) throws Inte rruptedException { 343 private boolean waitForPanelToEnterState(final PanelState state) throws Inte rruptedException {
341 return CriteriaHelper.pollForCriteria(new Criteria() { 344 return CriteriaHelper.pollForCriteria(new Criteria() {
342 @Override 345 @Override
343 public boolean isSatisfied() { 346 public boolean isSatisfied() {
344 return mPanelDelegate != null 347 return mPanelDelegate != null
345 && mPanelDelegate.getPanelState() == state; 348 && mPanelDelegate.getPanelState() == state;
346 } 349 }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 CriteriaHelper.pollForCriteria(new Criteria() { 388 CriteriaHelper.pollForCriteria(new Criteria() {
386 @Override 389 @Override
387 public boolean isSatisfied() { 390 public boolean isSatisfied() {
388 return TextUtils.equals(text, getSelectedText()); 391 return TextUtils.equals(text, getSelectedText());
389 } 392 }
390 }, TEST_TIMEOUT, DEFAULT_POLLING_INTERVAL)); 393 }, TEST_TIMEOUT, DEFAULT_POLLING_INTERVAL));
391 } 394 }
392 395
393 /** 396 /**
394 * Waits for the selection to be dissolved. 397 * Waits for the selection to be dissolved.
398 * Use this method any time a test repeatedly establishes and dissolves a se lection to ensure
399 * that the selection has been completely dissolved before simulating the ne xt selection event.
395 * This is needed because the renderer's notification of a selection going a way is async, 400 * This is needed because the renderer's notification of a selection going a way is async,
396 * and a subsequent tap may think there's a current selection until it has b een dissolved. 401 * and a subsequent tap may think there's a current selection until it has b een dissolved.
397 */ 402 */
398 private void waitForSelectionDissolved() throws InterruptedException { 403 private void waitForSelectionDissolved() throws InterruptedException {
399 assertTrue("Selection never dissolved.", CriteriaHelper.pollForCriteria( new Criteria() { 404 assertTrue("Selection never dissolved.", CriteriaHelper.pollForCriteria( new Criteria() {
400 @Override 405 @Override
401 public boolean isSatisfied() { 406 public boolean isSatisfied() {
402 return !mSelectionController.isSelectionEstablished(); 407 return !mSelectionController.isSelectionEstablished();
403 } 408 }
404 }, TEST_TIMEOUT, DEFAULT_POLLING_INTERVAL)); 409 }, TEST_TIMEOUT, DEFAULT_POLLING_INTERVAL));
405 } 410 }
406 411
407 /** 412 /**
413 * Waits for the panel to close and then waits for the selection to dissolve .
414 */
415 private void waitForPanelToCloseAndSelectionDissolved() throws InterruptedEx ception {
416 waitForPanelToCloseAndAssert();
417 waitForSelectionDissolved();
418 }
419
420 /**
408 * A ContentViewCore that has some methods stubbed out for testing. 421 * A ContentViewCore that has some methods stubbed out for testing.
409 */ 422 */
410 private static final class StubbedContentViewCore extends ContentViewCore { 423 private static final class StubbedContentViewCore extends ContentViewCore {
411 private boolean mIsFocusedNodeEditable; 424 private boolean mIsFocusedNodeEditable;
412 425
413 public StubbedContentViewCore(Context context) { 426 public StubbedContentViewCore(Context context) {
414 super(context); 427 super(context);
415 } 428 }
416 429
417 public void setIsFocusedNodeEditableForTest(boolean isFocusedNodeEditabl e) { 430 public void setIsFocusedNodeEditableForTest(boolean isFocusedNodeEditabl e) {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 /** 471 /**
459 * Scrolls the base page. 472 * Scrolls the base page.
460 */ 473 */
461 private void scrollBasePage() { 474 private void scrollBasePage() {
462 swipe(0.f, 0.75f, 0.f, 0.7f, 100); 475 swipe(0.f, 0.75f, 0.f, 0.7f, 100);
463 } 476 }
464 477
465 /** 478 /**
466 * Taps the base page near the top. 479 * Taps the base page near the top.
467 */ 480 */
468 private void tapBasePage() throws InterruptedException { 481 private void tapBasePageToClosePanel() throws InterruptedException {
469 tapBasePage(0.1f, 0.1f); 482 tapBasePage(0.1f, 0.1f);
483 waitForPanelToCloseAndAssert();
470 } 484 }
471 485
472 /** 486 /**
473 * Taps the base page at the given x, y position. 487 * Taps the base page at the given x, y position.
474 */ 488 */
475 private void tapBasePage(float x, float y) throws InterruptedException { 489 private void tapBasePage(float x, float y) {
476 Point size = new Point(); 490 Point size = new Point();
477 getActivity().getWindowManager().getDefaultDisplay().getSize(size); 491 getActivity().getWindowManager().getDefaultDisplay().getSize(size);
478 x *= size.x; 492 x *= size.x;
479 y *= size.y; 493 y *= size.y;
480 singleClick(x, y); 494 singleClick(x, y);
481 waitForPanelToCloseAndAssert();
482 } 495 }
483 496
484 /** 497 /**
485 * Click various places to cause the panel to show, expand, then close. 498 * Click various places to cause the panel to show, expand, then close.
486 */ 499 */
487 private void clickToExpandAndClosePanel() throws InterruptedException, Timeo utException { 500 private void clickToExpandAndClosePanel() throws InterruptedException, Timeo utException {
488 clickWordNode("states"); 501 clickWordNode("states");
489 tapPeekingBarToExpandAndAssert(); 502 tapBarToExpandAndClosePanel();
490 tapBasePage(); 503 waitForSelectionDissolved();
491 waitForPanelToCloseAndAssert();
492 } 504 }
493 505
494 /** 506 /**
507 * Tap on the peeking Bar to expand the panel, then taps on the base page to close it.
508 */
509 private void tapBarToExpandAndClosePanel() throws InterruptedException {
510 tapPeekingBarToExpandAndAssert();
511 tapBasePageToClosePanel();
512 }
513
514 /**
495 * Generate a click in the panel's bar. 515 * Generate a click in the panel's bar.
496 * @barHeight The vertical position where the click should take place as a p ercentage 516 * @barHeight The vertical position where the click should take place as a p ercentage
497 * of the screen size. 517 * of the screen size.
498 */ 518 */
499 private void clickPanelBar(float barPositionVertical) { 519 private void clickPanelBar(float barPositionVertical) {
500 Point size = new Point(); 520 Point size = new Point();
501 getActivity().getWindowManager().getDefaultDisplay().getSize(size); 521 getActivity().getWindowManager().getDefaultDisplay().getSize(size);
502 float w = size.x; 522 float w = size.x;
503 float h = size.y; 523 float h = size.y;
504 boolean landscape = w > h; 524 boolean landscape = w > h;
(...skipping 14 matching lines...) Expand all
519 /** 539 /**
520 * Simple sequence useful for checking if a Search Term Resolution request i s sent. 540 * Simple sequence useful for checking if a Search Term Resolution request i s sent.
521 * Resets the fake server and clicks near to cause a search, then clicks far to let the panel 541 * Resets the fake server and clicks near to cause a search, then clicks far to let the panel
522 * drop down (taking us back to the same state). 542 * drop down (taking us back to the same state).
523 */ 543 */
524 private void clickToTriggerSearchTermResolution() 544 private void clickToTriggerSearchTermResolution()
525 throws InterruptedException, TimeoutException { 545 throws InterruptedException, TimeoutException {
526 mFakeServer.reset(); 546 mFakeServer.reset();
527 clickWordNode("states"); 547 clickWordNode("states");
528 clickNode("states-far"); 548 clickNode("states-far");
529 waitForPanelToCloseAndAssert(); 549 waitForPanelToCloseAndSelectionDissolved();
530 } 550 }
531 551
532 /** 552 /**
533 * Simple sequence useful for checking if a Search Request is prefetched. 553 * Simple sequence useful for checking if a Search Request is prefetched.
534 * Resets the fake server and clicks near to cause a search, fakes a server response to 554 * Resets the fake server and clicks near to cause a search, fakes a server response to
535 * trigger a prefetch, then clicks far to let the panel drop down 555 * trigger a prefetch, then clicks far to let the panel drop down
536 * which takes us back to the starting state except the the fake server know s 556 * which takes us back to the starting state except the the fake server know s
537 * if a prefetch occurred. 557 * if a prefetch occurred.
538 */ 558 */
539 private void clickToTriggerPrefetch() throws InterruptedException, TimeoutEx ception { 559 private void clickToTriggerPrefetch() throws InterruptedException, TimeoutEx ception {
540 mFakeServer.reset(); 560 mFakeServer.reset();
541 clickWordNode("states"); 561 clickWordNode("states");
542 assertSearchTermRequested(); 562 assertSearchTermRequested();
543 fakeResponse(false, 200, "States", "display-text", "alternate-term", fal se); 563 fakeResponse(false, 200, "States", "display-text", "alternate-term", fal se);
544 waitForPanelToPeekAndAssert(); 564 waitForPanelToPeekAndAssert();
545 clickNode("states-far"); 565 clickNode("states-far");
546 waitForPanelToCloseAndAssert(); 566 waitForPanelToCloseAndSelectionDissolved();
547 } 567 }
548 568
549 /** 569 /**
550 * Simple sequence to click, resolve, and prefetch. Verifies a prefetch occ urred. 570 * Simple sequence to click, resolve, and prefetch. Verifies a prefetch occ urred.
551 */ 571 */
552 private void clickToResolveAndAssertPrefetch() throws InterruptedException, TimeoutException { 572 private void clickToResolveAndAssertPrefetch() throws InterruptedException, TimeoutException {
553 clickWordNode("states"); 573 clickWordNode("states");
554 assertLoadedNoUrl(); 574 assertLoadedNoUrl();
555 assertSearchTermRequested(); 575 assertSearchTermRequested();
556 576
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 waitForPanelToPeekAndAssert(); 741 waitForPanelToPeekAndAssert();
722 assertLoadedNoUrl(); 742 assertLoadedNoUrl();
723 assertNoContentViewCore(); 743 assertNoContentViewCore();
724 swipePanelUp(); 744 swipePanelUp();
725 waitForPanelToExpandAndAssert(); 745 waitForPanelToExpandAndAssert();
726 assertContentViewCoreCreated(); 746 assertContentViewCoreCreated();
727 assertLoadedNormalPriorityUrl(); 747 assertLoadedNormalPriorityUrl();
728 assertEquals(1, mFakeServer.loadedUrlCount()); 748 assertEquals(1, mFakeServer.loadedUrlCount());
729 749
730 // tap the base page to close. 750 // tap the base page to close.
731 tapBasePage(); 751 tapBasePageToClosePanel();
732 waitForPanelToCloseAndAssert();
733 assertEquals(1, mFakeServer.loadedUrlCount()); 752 assertEquals(1, mFakeServer.loadedUrlCount());
734 assertNoContentViewCore(); 753 assertNoContentViewCore();
735 } 754 }
736 755
737 /** 756 /**
738 * Tests a sequence in landscape orientation: swiping the overlay open, afte r an 757 * Tests a sequence in landscape orientation: swiping the overlay open, afte r an
739 * initial tap that activates the peeking card. 758 * initial tap that activates the peeking card.
740 */ 759 */
741 @SmallTest 760 @SmallTest
742 @Feature({"ContextualSearch"}) 761 @Feature({"ContextualSearch"})
(...skipping 22 matching lines...) Expand all
765 fakeResponse(false, 200, "states", "United States Intelligence", "altern ate-term", false); 784 fakeResponse(false, 200, "states", "United States Intelligence", "altern ate-term", false);
766 assertContainsParameters("states", "alternate-term"); 785 assertContainsParameters("states", "alternate-term");
767 assertEquals(1, mFakeServer.loadedUrlCount()); 786 assertEquals(1, mFakeServer.loadedUrlCount());
768 assertLoadedLowPriorityUrl(); 787 assertLoadedLowPriorityUrl();
769 assertContentViewCoreCreated(); 788 assertContentViewCoreCreated();
770 tapPeekingBarToExpandAndAssert(); 789 tapPeekingBarToExpandAndAssert();
771 assertLoadedLowPriorityUrl(); 790 assertLoadedLowPriorityUrl();
772 assertEquals(1, mFakeServer.loadedUrlCount()); 791 assertEquals(1, mFakeServer.loadedUrlCount());
773 792
774 // tap the base page to close. 793 // tap the base page to close.
775 tapBasePage(); 794 tapBasePageToClosePanel();
776 waitForPanelToCloseAndAssert();
777 assertEquals(1, mFakeServer.loadedUrlCount()); 795 assertEquals(1, mFakeServer.loadedUrlCount());
778 assertNoContentViewCore(); 796 assertNoContentViewCore();
779 } 797 }
780 798
781 /** 799 /**
782 * Tests that only a single low-priority request is issued for a Tap/Open se quence. 800 * Tests that only a single low-priority request is issued for a Tap/Open se quence.
783 */ 801 */
784 @SmallTest 802 @SmallTest
785 @Feature({"ContextualSearch"}) 803 @Feature({"ContextualSearch"})
786 @Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE}) 804 @Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE})
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
1171 } 1189 }
1172 1190
1173 /** 1191 /**
1174 * Tests that a Tap gesture on an element with an ARIA role does not trigger . 1192 * Tests that a Tap gesture on an element with an ARIA role does not trigger .
1175 */ 1193 */
1176 @SmallTest 1194 @SmallTest
1177 @Feature({"ContextualSearch"}) 1195 @Feature({"ContextualSearch"})
1178 @Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE}) 1196 @Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE})
1179 public void testTapOnRoleIgnored() throws InterruptedException, TimeoutExcep tion { 1197 public void testTapOnRoleIgnored() throws InterruptedException, TimeoutExcep tion {
1180 clickNode("role"); 1198 clickNode("role");
1181 waitForGestureToClosePanelAndAssertNoSelection(); 1199 assertPanelNeverOpened();
1182 } 1200 }
1183 1201
1184 /** 1202 /**
1185 * Tests that a Tap gesture on an element with an ARIA attribute does not tr igger. 1203 * Tests that a Tap gesture on an element with an ARIA attribute does not tr igger.
1186 */ 1204 */
1187 @SmallTest 1205 @SmallTest
1188 @Feature({"ContextualSearch"}) 1206 @Feature({"ContextualSearch"})
1189 @Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE}) 1207 @Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE})
1190 public void testTapOnARIAIgnored() throws InterruptedException, TimeoutExcep tion { 1208 public void testTapOnARIAIgnored() throws InterruptedException, TimeoutExcep tion {
1191 clickNode("aria"); 1209 clickNode("aria");
1192 waitForGestureToClosePanelAndAssertNoSelection(); 1210 assertPanelNeverOpened();
1193 } 1211 }
1194 1212
1195 /** 1213 /**
1196 * Tests that a Tap gesture on an element that is focusable does not trigger . 1214 * Tests that a Tap gesture on an element that is focusable does not trigger .
1197 */ 1215 */
1198 @SmallTest 1216 @SmallTest
1199 @Feature({"ContextualSearch"}) 1217 @Feature({"ContextualSearch"})
1200 @Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE}) 1218 @Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE})
1201 public void testTapOnFocusableIgnored() throws InterruptedException, Timeout Exception { 1219 public void testTapOnFocusableIgnored() throws InterruptedException, Timeout Exception {
1202 clickNode("focusable"); 1220 clickNode("focusable");
1203 waitForGestureToClosePanelAndAssertNoSelection(); 1221 assertPanelNeverOpened();
1204 } 1222 }
1205 1223
1206 /** 1224 /**
1207 * Tests that taps can be resolve-limited for decided users. 1225 * Tests that taps can be resolve-limited for decided users.
1208 * 1226 *
1209 * @SmallTest 1227 * @SmallTest
1210 * @Feature({"ContextualSearch"}) 1228 * @Feature({"ContextualSearch"})
1211 * crbug.com/487759 1229 * crbug.com/487759
1212 */ 1230 */
1213 @Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE}) 1231 @Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE})
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
1330 @CommandLineFlags.Add({ 1348 @CommandLineFlags.Add({
1331 ContextualSearchFieldTrial.PROMO_ON_LIMITED_TAPS + "=true", 1349 ContextualSearchFieldTrial.PROMO_ON_LIMITED_TAPS + "=true",
1332 ContextualSearchFieldTrial.TAP_TRIGGERED_PROMO_LIMIT + "=2"}) 1350 ContextualSearchFieldTrial.TAP_TRIGGERED_PROMO_LIMIT + "=2"})
1333 @FlakyTest 1351 @FlakyTest
1334 public void testTapTriggeredPromoLimitForOptOut() 1352 public void testTapTriggeredPromoLimitForOptOut()
1335 throws InterruptedException, TimeoutException { 1353 throws InterruptedException, TimeoutException {
1336 mPolicy.overrideDecidedStateForTesting(false); 1354 mPolicy.overrideDecidedStateForTesting(false);
1337 1355
1338 clickWordNode("states"); 1356 clickWordNode("states");
1339 clickNode("states-far"); 1357 clickNode("states-far");
1340 waitForPanelToCloseAndAssert(); 1358 waitForPanelToCloseAndSelectionDissolved();
1341 clickWordNode("states"); 1359 clickWordNode("states");
1342 clickNode("states-far"); 1360 clickNode("states-far");
1343 waitForPanelToCloseAndAssert(); 1361 waitForPanelToCloseAndSelectionDissolved();
1344 1362
1345 // 3rd click won't peek the panel. 1363 // 3rd click won't peek the panel.
1346 clickNode("states"); 1364 clickNode("states");
1347 assertPanelClosedOrUndefined(); 1365 assertPanelClosedOrUndefined();
1348 // The Tap should not select any text either! 1366 // The Tap should not select any text either!
1349 assertNull(getSelectedText()); 1367 assertNull(getSelectedText());
1350 1368
1351 // A long-press should still show the promo bar. 1369 // A long-press should still show the promo bar.
1352 longPressNode("states"); 1370 longPressNode("states");
1353 waitForPanelToPeekAndAssert(); 1371 waitForPanelToPeekAndAssert();
1354 1372
1355 // Expanding the panel should deactivate the limit. 1373 // Expanding the panel should deactivate the limit.
1356 clickToExpandAndClosePanel(); 1374 tapBarToExpandAndClosePanel();
1375 // Clear the long-press selection.
1376 clickNode("states-far");
1357 1377
1358 // Three taps should work now. 1378 // Three taps should work now.
1359 clickWordNode("states"); 1379 clickWordNode("states");
1360 clickNode("states-far"); 1380 clickNode("states-far");
1361 waitForPanelToCloseAndAssert(); 1381 waitForPanelToCloseAndSelectionDissolved();
1362 clickWordNode("states"); 1382 clickWordNode("states");
1363 clickNode("states-far"); 1383 clickNode("states-far");
1364 waitForPanelToCloseAndAssert(); 1384 waitForPanelToCloseAndSelectionDissolved();
1365 clickWordNode("states"); 1385 clickWordNode("states");
1366 clickNode("states-far"); 1386 clickNode("states-far");
1367 waitForPanelToCloseAndAssert(); 1387 waitForPanelToCloseAndSelectionDissolved();
1368 } 1388 }
1369 1389
1370 /** 1390 /**
1371 * This is a test that happens to create a separate bar without any content area! 1391 * This is a test that happens to create a separate bar without any content area!
1372 * 1392 *
1373 * @SmallTest 1393 * @SmallTest
1374 * @Feature({"ContextualSearch"}) 1394 * @Feature({"ContextualSearch"})
1375 */ 1395 */
1376 @Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE}) 1396 @Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE})
1377 @CommandLineFlags.Add( 1397 @CommandLineFlags.Add(
1378 ContextualSearchFieldTrial.TAP_PREFETCH_LIMIT_FOR_DECIDED + "=2") 1398 ContextualSearchFieldTrial.TAP_PREFETCH_LIMIT_FOR_DECIDED + "=2")
1379 @FlakyTest 1399 @FlakyTest
1380 public void testDisembodiedBar() throws InterruptedException, TimeoutExcepti on { 1400 public void testDisembodiedBar() throws InterruptedException, TimeoutExcepti on {
1381 clickToTriggerPrefetch(); 1401 clickToTriggerPrefetch();
1382 assertLoadedLowPriorityUrl(); 1402 assertLoadedLowPriorityUrl();
1383 clickToTriggerPrefetch(); 1403 clickToTriggerPrefetch();
1384 assertLoadedLowPriorityUrl(); 1404 assertLoadedLowPriorityUrl();
1385 // 3rd click should not preload. 1405 // 3rd click should not preload.
1386 clickToTriggerPrefetch(); 1406 clickToTriggerPrefetch();
1387 assertLoadedNoUrl(); 1407 assertLoadedNoUrl();
1388 1408
1389 // Expanding the panel should reset the limit. 1409 // Expanding the panel should reset the limit.
1390 swipePanelUp(); 1410 swipePanelUp();
1391 singleClick(0.5f, 0.5f); 1411 singleClick(0.5f, 0.5f);
1392 waitForPanelToCloseAndAssert(); 1412 waitForPanelToCloseAndSelectionDissolved();
1393 1413
1394 // Click should preload again. 1414 // Click should preload again.
1395 clickToTriggerPrefetch(); 1415 clickToTriggerPrefetch();
1396 assertLoadedLowPriorityUrl(); 1416 assertLoadedLowPriorityUrl();
1397 } 1417 }
1398 1418
1399 /** 1419 /**
1400 * Tests expanding the panel before the search term has resolved, verifies t hat nothing 1420 * Tests expanding the panel before the search term has resolved, verifies t hat nothing
1401 * loads until the resolve completes and that it's now a normal priority URL . 1421 * loads until the resolve completes and that it's now a normal priority URL .
1402 */ 1422 */
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
1522 @SmallTest 1542 @SmallTest
1523 @Feature({"ContextualSearch"}) 1543 @Feature({"ContextualSearch"})
1524 @Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE}) 1544 @Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE})
1525 public void testAppMenuSuppressedWhenExpanded() throws InterruptedException, TimeoutException { 1545 public void testAppMenuSuppressedWhenExpanded() throws InterruptedException, TimeoutException {
1526 clickWordNode("states"); 1546 clickWordNode("states");
1527 tapPeekingBarToExpandAndAssert(); 1547 tapPeekingBarToExpandAndAssert();
1528 1548
1529 pressAppMenuKey(); 1549 pressAppMenuKey();
1530 assertAppMenuVisibility(false); 1550 assertAppMenuVisibility(false);
1531 1551
1532 tapBasePage(); 1552 tapBasePageToClosePanel();
1533 waitForPanelToCloseAndAssert();
1534 1553
1535 pressAppMenuKey(); 1554 pressAppMenuKey();
1536 assertAppMenuVisibility(true); 1555 assertAppMenuVisibility(true);
1537 } 1556 }
1538 1557
1539 /** 1558 /**
1540 * Tests that the App Menu gets suppressed when Search Panel is maximized. 1559 * Tests that the App Menu gets suppressed when Search Panel is maximized.
1541 */ 1560 */
1542 @SmallTest 1561 @SmallTest
1543 @Feature({"ContextualSearch"}) 1562 @Feature({"ContextualSearch"})
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1587 // A simple Tap should change the counter. 1606 // A simple Tap should change the counter.
1588 clickToTriggerPrefetch(); 1607 clickToTriggerPrefetch();
1589 assertTapPromoCounterEnabledAt(1); 1608 assertTapPromoCounterEnabledAt(1);
1590 1609
1591 // Another Tap should increase the counter. 1610 // Another Tap should increase the counter.
1592 clickToTriggerPrefetch(); 1611 clickToTriggerPrefetch();
1593 assertTapPromoCounterEnabledAt(2); 1612 assertTapPromoCounterEnabledAt(2);
1594 1613
1595 // Now we're at the limit, a tap should be ignored. 1614 // Now we're at the limit, a tap should be ignored.
1596 clickNode("states"); 1615 clickNode("states");
1597 waitForPanelToCloseAndAssert(); 1616 waitForPanelToCloseAndSelectionDissolved();
1598 assertTapPromoCounterEnabledAt(2); 1617 assertTapPromoCounterEnabledAt(2);
1599 1618
1600 // An open should disable the counter, but we need to use long-press (ta p is now disabled). 1619 // An open should disable the counter, but we need to use long-press (ta p is now disabled).
1601 longPressNode("states-far"); 1620 longPressNode("states-far");
1602 tapPeekingBarToExpandAndAssert(); 1621 tapPeekingBarToExpandAndAssert();
1603 tapBasePage(); 1622 tapBasePageToClosePanel();
1604 waitForPanelToCloseAndAssert();
1605 assertTapPromoCounterDisabledAt(2); 1623 assertTapPromoCounterDisabledAt(2);
1606 1624
1607 // Even though we closed the panel, the long-press selection is still th ere. 1625 // Even though we closed the panel, the long-press selection is still th ere.
1608 // Tap on the question mark to dismiss the long-press selection. 1626 // Tap on the question mark to dismiss the long-press selection.
1609 clickNode("question-mark"); 1627 clickNode("question-mark");
1610 waitForSelectionToBe(null); 1628 waitForSelectionToBe(null);
1611 1629
1612 // Now taps should work and not change the counter. 1630 // Now taps should work and not change the counter.
1613 clickToTriggerPrefetch(); 1631 clickToTriggerPrefetch();
1614 assertTapPromoCounterDisabledAt(2); 1632 assertTapPromoCounterDisabledAt(2);
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
1708 @SmallTest 1726 @SmallTest
1709 @Feature({"ContextualSearch"}) 1727 @Feature({"ContextualSearch"})
1710 @Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE}) 1728 @Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE})
1711 public void testNotifyObserverHideAfterLongPress() 1729 public void testNotifyObserverHideAfterLongPress()
1712 throws InterruptedException, TimeoutException { 1730 throws InterruptedException, TimeoutException {
1713 TestContextualSearchObserver observer = new TestContextualSearchObserver (); 1731 TestContextualSearchObserver observer = new TestContextualSearchObserver ();
1714 mManager.addObserver(observer); 1732 mManager.addObserver(observer);
1715 longPressNode("states"); 1733 longPressNode("states");
1716 assertEquals(0, observer.hideCount); 1734 assertEquals(0, observer.hideCount);
1717 1735
1718 tapBasePage(); 1736 tapBasePageToClosePanel();
1719 waitForPanelToCloseAndAssert();
1720 assertEquals(1, observer.hideCount); 1737 assertEquals(1, observer.hideCount);
1721 } 1738 }
1722 1739
1723 /** 1740 /**
1724 * Tests that ContextualSearchObserver gets notified when user brings up con textual search 1741 * Tests that ContextualSearchObserver gets notified when user brings up con textual search
1725 * panel via tap and then dismisses the panel by tapping on the base page. 1742 * panel via tap and then dismisses the panel by tapping on the base page.
1726 */ 1743 */
1727 @SmallTest 1744 @SmallTest
1728 @Feature({"ContextualSearch"}) 1745 @Feature({"ContextualSearch"})
1729 @Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE}) 1746 @Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE})
1730 public void testNotifyObserverHideAfterTap() throws InterruptedException, Ti meoutException { 1747 public void testNotifyObserverHideAfterTap() throws InterruptedException, Ti meoutException {
1731 TestContextualSearchObserver observer = new TestContextualSearchObserver (); 1748 TestContextualSearchObserver observer = new TestContextualSearchObserver ();
1732 mManager.addObserver(observer); 1749 mManager.addObserver(observer);
1733 clickWordNode("states"); 1750 clickWordNode("states");
1734 assertEquals(0, observer.hideCount); 1751 assertEquals(0, observer.hideCount);
1735 1752
1736 tapBasePage(); 1753 tapBasePageToClosePanel();
1737 waitForPanelToCloseAndAssert();
1738 assertEquals(1, observer.hideCount); 1754 assertEquals(1, observer.hideCount);
1739 } 1755 }
1740 1756
1741 private void assertWaitForSelectActionBarVisible(final boolean visible) 1757 private void assertWaitForSelectActionBarVisible(final boolean visible)
1742 throws InterruptedException { 1758 throws InterruptedException {
1743 assertTrue(CriteriaHelper.pollForUIThreadCriteria(new Criteria() { 1759 assertTrue(CriteriaHelper.pollForUIThreadCriteria(new Criteria() {
1744 @Override 1760 @Override
1745 public boolean isSatisfied() { 1761 public boolean isSatisfied() {
1746 return visible == getActivity().getActivityTab().getContentViewC ore() 1762 return visible == getActivity().getActivityTab().getContentViewC ore()
1747 .isSelectActionBarShowing(); 1763 .isSelectActionBarShowing();
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1801 mManager.onSelectionEvent(SelectionEventType.SELECTION_HANDLE_DRAG_STOPP ED, 303, 450); 1817 mManager.onSelectionEvent(SelectionEventType.SELECTION_HANDLE_DRAG_STOPP ED, 303, 450);
1802 assertPanelClosedOrUndefined(); 1818 assertPanelClosedOrUndefined();
1803 1819
1804 // Select a different word and assert that the panel has appeared. 1820 // Select a different word and assert that the panel has appeared.
1805 longPressNode("states-far"); 1821 longPressNode("states-far");
1806 waitForPanelToPeekAndAssert(); 1822 waitForPanelToPeekAndAssert();
1807 } 1823 }
1808 1824
1809 /** 1825 /**
1810 * Tests a bunch of taps in a row. 1826 * Tests a bunch of taps in a row.
1811 * We've had reliability problems with simple taps due to async clearing 1827 * We've had reliability problems with a sequence of simple taps, due to asy nc dissolving
1812 * of selection bounds, so this helps prevent a regression with that. 1828 * of selection bounds, so this helps prevent a regression with that.
1813 */ 1829 */
1814 @Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE}) 1830 @Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE})
1815 @CommandLineFlags.Add({ContextualSearchFieldTrial.TAP_RESOLVE_LIMIT_FOR_DECI DED + "=200", 1831 @CommandLineFlags.Add({ContextualSearchFieldTrial.TAP_RESOLVE_LIMIT_FOR_DECI DED + "=200",
1816 ContextualSearchFieldTrial.TAP_RESOLVE_LIMIT_FOR_UNDECIDED + "=200", 1832 ContextualSearchFieldTrial.TAP_RESOLVE_LIMIT_FOR_UNDECIDED + "=200",
1817 ContextualSearchFieldTrial.TAP_PREFETCH_LIMIT_FOR_DECIDED + "=200", 1833 ContextualSearchFieldTrial.TAP_PREFETCH_LIMIT_FOR_DECIDED + "=200",
1818 ContextualSearchFieldTrial.TAP_PREFETCH_LIMIT_FOR_UNDECIDED + "=200" }) 1834 ContextualSearchFieldTrial.TAP_PREFETCH_LIMIT_FOR_UNDECIDED + "=200" })
1819 public void testTapALot() throws InterruptedException, TimeoutException { 1835 public void testTapALot() throws InterruptedException, TimeoutException {
1820 for (int i = 0; i < 50; i++) { 1836 for (int i = 0; i < 50; i++) {
1821 clickToTriggerSearchTermResolution(); 1837 clickToTriggerSearchTermResolution();
1822 waitForSelectionDissolved(); 1838 waitForSelectionDissolved();
1823 assertSearchTermRequested(); 1839 assertSearchTermRequested();
1824 } 1840 }
1825 } 1841 }
1826 } 1842 }
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