diff -r 000000000000 -r 6474c204b198 mobile/android/base/tests/testBrowserSearchVisibility.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mobile/android/base/tests/testBrowserSearchVisibility.java Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,63 @@ +package org.mozilla.gecko.tests; + +import android.support.v4.app.Fragment; +import android.view.KeyEvent; +import android.view.View; + +/** + * Test for browser search visibility. + * Sends queries from url bar input and verifies that browser search + * visibility is correct. + */ +public class testBrowserSearchVisibility extends BaseTest { + public void testSearchSuggestions() { + blockForGeckoReady(); + + focusUrlBar(); + + // search should not be visible when editing mode starts + assertBrowserSearchVisibility(false); + + mActions.sendKeys("a"); + + // search should be visible when entry is not empty + assertBrowserSearchVisibility(true); + + mActions.sendKeys("b"); + + // search continues to be visible when more text is added + assertBrowserSearchVisibility(true); + + mActions.sendKeyCode(KeyEvent.KEYCODE_DEL); + + // search continues to be visible when not all text is deleted + assertBrowserSearchVisibility(true); + + mActions.sendKeyCode(KeyEvent.KEYCODE_DEL); + + // search should not be visible, entry is empty now + assertBrowserSearchVisibility(false); + } + + private void assertBrowserSearchVisibility(final boolean isVisible) { + waitForTest(new BooleanTest() { + @Override + public boolean test() { + final Fragment browserSearch = getBrowserSearch(); + + // The fragment should not be present at all. Testing if the + // fragment is present but has no defined view is not a valid + // state. + if (browserSearch == null) + return !isVisible; + + final View v = browserSearch.getView(); + if (isVisible && v != null && v.getVisibility() == View.VISIBLE) + return true; + + return false; + } + }, 5000); + } +} +