Index: chrome/android/javatests/src/org/chromium/chrome/browser/fullscreen/FullscreenManagerTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/fullscreen/FullscreenManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/fullscreen/FullscreenManagerTest.java |
index de712f35744a0cf043a0036543ee1a7f0da79e9f..48a85f7a93abc8c137f293a72d52047297b895d9 100644 |
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/fullscreen/FullscreenManagerTest.java |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/fullscreen/FullscreenManagerTest.java |
@@ -43,6 +43,15 @@ import java.util.concurrent.atomic.AtomicInteger; |
*/ |
public class FullscreenManagerTest extends ChromeTabbedActivityTestBase { |
+ private static final String LONG_HTML_WITH_AUTO_FOCUS_INPUT_TEST_PAGE = |
+ UrlUtils.encodeHtmlDataUri("<html>" |
+ + "<body style='height:10000px;'>" |
+ + "<p>The text input is focused automatically on load." |
+ + " The top controls should not hide when page is scrolled.</p><br/>" |
+ + "<input id=\"input_text\" type=\"text\" autofocus/>" |
+ + "</body>" |
+ + "</html>"); |
+ |
private static final String LONG_HTML_TEST_PAGE = UrlUtils.encodeHtmlDataUri( |
"<html><body style='height:10000px;'></body></html>"); |
private static final String LONG_FULLSCREEN_API_HTML_TEST_PAGE = UrlUtils.encodeHtmlDataUri( |
@@ -320,6 +329,35 @@ public class FullscreenManagerTest extends ChromeTabbedActivityTestBase { |
scrollTopControls(false); |
} |
+ @LargeTest |
+ @Feature({"Fullscreen"}) |
+ public void testTopControlsShownWhenInputIsFocused() |
+ throws InterruptedException, ExecutionException { |
+ startMainActivityWithURL(LONG_HTML_WITH_AUTO_FOCUS_INPUT_TEST_PAGE); |
+ |
+ ChromeFullscreenManager fullscreenManager = getActivity().getFullscreenManager(); |
+ assertEquals(fullscreenManager.getControlOffset(), 0f); |
+ |
+ fullscreenManager.setAnimationDurationsForTest(1, 1); |
+ |
+ int topControlsHeight = fullscreenManager.getTopControlsHeight(); |
+ float dragX = 50f; |
+ float dragStartY = topControlsHeight * 3; |
+ float dragEndY = dragStartY - topControlsHeight * 2; |
+ long downTime = SystemClock.uptimeMillis(); |
+ dragStart(dragX, dragStartY, downTime); |
+ dragTo(dragX, dragX, dragStartY, dragEndY, 100, downTime); |
+ dragEnd(dragX, dragEndY, downTime); |
+ assertTrue(waitForNoBrowserTopControlsOffset()); |
+ assertEquals(fullscreenManager.getControlOffset(), 0f); |
+ |
+ Tab tab = getActivity().getActivityTab(); |
+ singleClickView(tab.getView()); |
+ waitForEditableNodeToLoseFocus(tab); |
+ scrollTopControls(false); |
+ scrollTopControls(true); |
+ } |
+ |
private void scrollTopControls(boolean show) throws InterruptedException, ExecutionException { |
ChromeFullscreenManager fullscreenManager = getActivity().getFullscreenManager(); |
int topControlsHeight = fullscreenManager.getTopControlsHeight(); |
@@ -485,6 +523,16 @@ public class FullscreenManagerTest extends ChromeTabbedActivityTestBase { |
}); |
} |
+ private boolean waitForEditableNodeToLoseFocus(final Tab tab) throws InterruptedException { |
+ return CriteriaHelper.pollForUIThreadCriteria(new Criteria() { |
+ @Override |
+ public boolean isSatisfied() { |
+ ContentViewCore contentViewCore = tab.getContentViewCore(); |
+ return !contentViewCore.isFocusedNodeEditable(); |
+ } |
+ }); |
+ } |
+ |
@Override |
protected void startMainActivityWithURL(String url) throws InterruptedException { |
super.startMainActivityWithURL(url); |