Index: chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManagerTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManagerTest.java |
index e254222f7ad4480cdfe0f1765d17f7ddd8b8bbd3..873f95f5f5bd44d3355999a52cd5ca7ad901e7e5 100644 |
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManagerTest.java |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManagerTest.java |
@@ -307,7 +307,7 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
* @throws InterruptedException |
*/ |
private void waitForPanelToExpandAndAssert() throws InterruptedException { |
- assertTrue("Search Bar did not expand.", waitForPanelToEnterState(PanelState.EXPANDED)); |
+ assertTrue("Search Panel did not expand.", waitForPanelToEnterState(PanelState.EXPANDED)); |
} |
/** |
@@ -315,7 +315,8 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
* @throws InterruptedException |
*/ |
private void waitForPanelToMaximizeAndAssert() throws InterruptedException { |
- assertTrue("Search Bar did not maximize.", waitForPanelToEnterState(PanelState.MAXIMIZED)); |
+ assertTrue( |
+ "Search Panel did not maximize.", waitForPanelToEnterState(PanelState.MAXIMIZED)); |
} |
/** |
@@ -323,14 +324,16 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
* @throws InterruptedException |
*/ |
private void waitForPanelToCloseAndAssert() throws InterruptedException { |
- // TODO(donnd): figure out why using waitForPanelToEnterState here doesn't work. |
- assertTrue("Search Bar did not close.", |
- CriteriaHelper.pollForCriteria(new Criteria() { |
- @Override |
- public boolean isSatisfied() { |
- return !mManager.isSearchPanelShowing(); |
- } |
- }, TEST_TIMEOUT, DEFAULT_POLLING_INTERVAL)); |
+ assertTrue("Search Panel did not close.", waitForPanelToEnterState(PanelState.CLOSED)); |
+ } |
+ |
+ /** |
+ * Asserts that the panel was never opened. |
+ * @throws InterruptedException |
+ */ |
+ private void assertPanelNeverOpened() throws InterruptedException { |
+ assertTrue( |
+ "Search Panel actually did open.", waitForPanelToEnterState(PanelState.UNDEFINED)); |
} |
/** |
@@ -392,6 +395,8 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
/** |
* Waits for the selection to be dissolved. |
+ * Use this method any time a test repeatedly establishes and dissolves a selection to ensure |
+ * that the selection has been completely dissolved before simulating the next selection event. |
* This is needed because the renderer's notification of a selection going away is async, |
* and a subsequent tap may think there's a current selection until it has been dissolved. |
*/ |
@@ -405,6 +410,14 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
} |
/** |
+ * Waits for the panel to close and then waits for the selection to dissolve. |
+ */ |
+ private void waitForPanelToCloseAndSelectionDissolved() throws InterruptedException { |
+ waitForPanelToCloseAndAssert(); |
+ waitForSelectionDissolved(); |
+ } |
+ |
+ /** |
* A ContentViewCore that has some methods stubbed out for testing. |
*/ |
private static final class StubbedContentViewCore extends ContentViewCore { |
@@ -465,20 +478,20 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
/** |
* Taps the base page near the top. |
*/ |
- private void tapBasePage() throws InterruptedException { |
+ private void tapBasePageToClosePanel() throws InterruptedException { |
tapBasePage(0.1f, 0.1f); |
+ waitForPanelToCloseAndAssert(); |
} |
/** |
* Taps the base page at the given x, y position. |
*/ |
- private void tapBasePage(float x, float y) throws InterruptedException { |
+ private void tapBasePage(float x, float y) { |
Point size = new Point(); |
getActivity().getWindowManager().getDefaultDisplay().getSize(size); |
x *= size.x; |
y *= size.y; |
singleClick(x, y); |
- waitForPanelToCloseAndAssert(); |
} |
/** |
@@ -486,9 +499,16 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
*/ |
private void clickToExpandAndClosePanel() throws InterruptedException, TimeoutException { |
clickWordNode("states"); |
+ tapBarToExpandAndClosePanel(); |
+ waitForSelectionDissolved(); |
+ } |
+ |
+ /** |
+ * Tap on the peeking Bar to expand the panel, then taps on the base page to close it. |
+ */ |
+ private void tapBarToExpandAndClosePanel() throws InterruptedException { |
tapPeekingBarToExpandAndAssert(); |
- tapBasePage(); |
- waitForPanelToCloseAndAssert(); |
+ tapBasePageToClosePanel(); |
} |
/** |
@@ -526,7 +546,7 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
mFakeServer.reset(); |
clickWordNode("states"); |
clickNode("states-far"); |
- waitForPanelToCloseAndAssert(); |
+ waitForPanelToCloseAndSelectionDissolved(); |
} |
/** |
@@ -543,7 +563,7 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
fakeResponse(false, 200, "States", "display-text", "alternate-term", false); |
waitForPanelToPeekAndAssert(); |
clickNode("states-far"); |
- waitForPanelToCloseAndAssert(); |
+ waitForPanelToCloseAndSelectionDissolved(); |
} |
/** |
@@ -728,8 +748,7 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
assertEquals(1, mFakeServer.loadedUrlCount()); |
// tap the base page to close. |
- tapBasePage(); |
- waitForPanelToCloseAndAssert(); |
+ tapBasePageToClosePanel(); |
assertEquals(1, mFakeServer.loadedUrlCount()); |
assertNoContentViewCore(); |
} |
@@ -772,8 +791,7 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
assertEquals(1, mFakeServer.loadedUrlCount()); |
// tap the base page to close. |
- tapBasePage(); |
- waitForPanelToCloseAndAssert(); |
+ tapBasePageToClosePanel(); |
assertEquals(1, mFakeServer.loadedUrlCount()); |
assertNoContentViewCore(); |
} |
@@ -1178,7 +1196,7 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
@Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE}) |
public void testTapOnRoleIgnored() throws InterruptedException, TimeoutException { |
clickNode("role"); |
- waitForGestureToClosePanelAndAssertNoSelection(); |
+ assertPanelNeverOpened(); |
} |
/** |
@@ -1189,7 +1207,7 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
@Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE}) |
public void testTapOnARIAIgnored() throws InterruptedException, TimeoutException { |
clickNode("aria"); |
- waitForGestureToClosePanelAndAssertNoSelection(); |
+ assertPanelNeverOpened(); |
} |
/** |
@@ -1200,7 +1218,7 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
@Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE}) |
public void testTapOnFocusableIgnored() throws InterruptedException, TimeoutException { |
clickNode("focusable"); |
- waitForGestureToClosePanelAndAssertNoSelection(); |
+ assertPanelNeverOpened(); |
} |
/** |
@@ -1337,10 +1355,10 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
clickWordNode("states"); |
clickNode("states-far"); |
- waitForPanelToCloseAndAssert(); |
+ waitForPanelToCloseAndSelectionDissolved(); |
clickWordNode("states"); |
clickNode("states-far"); |
- waitForPanelToCloseAndAssert(); |
+ waitForPanelToCloseAndSelectionDissolved(); |
// 3rd click won't peek the panel. |
clickNode("states"); |
@@ -1353,18 +1371,20 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
waitForPanelToPeekAndAssert(); |
// Expanding the panel should deactivate the limit. |
- clickToExpandAndClosePanel(); |
+ tapBarToExpandAndClosePanel(); |
+ // Clear the long-press selection. |
+ clickNode("states-far"); |
// Three taps should work now. |
clickWordNode("states"); |
clickNode("states-far"); |
- waitForPanelToCloseAndAssert(); |
+ waitForPanelToCloseAndSelectionDissolved(); |
clickWordNode("states"); |
clickNode("states-far"); |
- waitForPanelToCloseAndAssert(); |
+ waitForPanelToCloseAndSelectionDissolved(); |
clickWordNode("states"); |
clickNode("states-far"); |
- waitForPanelToCloseAndAssert(); |
+ waitForPanelToCloseAndSelectionDissolved(); |
} |
/** |
@@ -1389,7 +1409,7 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
// Expanding the panel should reset the limit. |
swipePanelUp(); |
singleClick(0.5f, 0.5f); |
- waitForPanelToCloseAndAssert(); |
+ waitForPanelToCloseAndSelectionDissolved(); |
// Click should preload again. |
clickToTriggerPrefetch(); |
@@ -1529,8 +1549,7 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
pressAppMenuKey(); |
assertAppMenuVisibility(false); |
- tapBasePage(); |
- waitForPanelToCloseAndAssert(); |
+ tapBasePageToClosePanel(); |
pressAppMenuKey(); |
assertAppMenuVisibility(true); |
@@ -1594,14 +1613,13 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
// Now we're at the limit, a tap should be ignored. |
clickNode("states"); |
- waitForPanelToCloseAndAssert(); |
+ waitForPanelToCloseAndSelectionDissolved(); |
assertTapPromoCounterEnabledAt(2); |
// An open should disable the counter, but we need to use long-press (tap is now disabled). |
longPressNode("states-far"); |
tapPeekingBarToExpandAndAssert(); |
- tapBasePage(); |
- waitForPanelToCloseAndAssert(); |
+ tapBasePageToClosePanel(); |
assertTapPromoCounterDisabledAt(2); |
// Even though we closed the panel, the long-press selection is still there. |
@@ -1715,8 +1733,7 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
longPressNode("states"); |
assertEquals(0, observer.hideCount); |
- tapBasePage(); |
- waitForPanelToCloseAndAssert(); |
+ tapBasePageToClosePanel(); |
assertEquals(1, observer.hideCount); |
} |
@@ -1733,8 +1750,7 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
clickWordNode("states"); |
assertEquals(0, observer.hideCount); |
- tapBasePage(); |
- waitForPanelToCloseAndAssert(); |
+ tapBasePageToClosePanel(); |
assertEquals(1, observer.hideCount); |
} |
@@ -1808,7 +1824,7 @@ public class ContextualSearchManagerTest extends ChromeActivityTestCaseBase<Chro |
/** |
* Tests a bunch of taps in a row. |
- * We've had reliability problems with simple taps due to async clearing |
+ * We've had reliability problems with a sequence of simple taps, due to async dissolving |
* of selection bounds, so this helps prevent a regression with that. |
*/ |
@Restriction({RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE}) |