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

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/fullscreen/FullscreenManagerTest.java

Issue 1598433004: Deflake Android fullscreen tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Make function to disable browser overrides Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/fullscreen/ChromeFullscreenManager.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 9284dc29ca9c9024c7123b7c44c74afbd83ae7eb..cfca678fe415482886d487f2c734f901004a8fdb 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
@@ -4,11 +4,12 @@
package org.chromium.chrome.browser.fullscreen;
+import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE;
+
import android.graphics.Rect;
import android.graphics.Region;
import android.os.Build;
import android.os.SystemClock;
-import android.test.FlakyTest;
import android.test.suitebuilder.annotation.LargeTest;
import android.test.suitebuilder.annotation.MediumTest;
import android.view.View;
@@ -18,8 +19,10 @@ import android.view.WindowManager;
import org.chromium.base.ThreadUtils;
import org.chromium.base.test.util.Feature;
+import org.chromium.base.test.util.Restriction;
import org.chromium.base.test.util.UrlUtils;
import org.chromium.chrome.R;
+import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager.FullscreenListener;
import org.chromium.chrome.browser.omnibox.UrlBar;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabWebContentsDelegateAndroid;
@@ -28,13 +31,14 @@ import org.chromium.chrome.test.util.OmniboxTestUtils;
import org.chromium.chrome.test.util.PrerenderTestHelper;
import org.chromium.chrome.test.util.TestHttpServerClient;
import org.chromium.content.browser.ContentViewCore;
+import org.chromium.content.browser.test.util.CallbackHelper;
import org.chromium.content.browser.test.util.Criteria;
import org.chromium.content.browser.test.util.CriteriaHelper;
import org.chromium.content.browser.test.util.TestTouchUtils;
import org.chromium.content.browser.test.util.UiUtils;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicInteger;
/**
@@ -132,8 +136,7 @@ public class FullscreenManagerTest extends ChromeTabbedActivityTestBase {
@LargeTest
@Feature({"Fullscreen"})
- public void testExitPersistentFullscreenAllowsManualFullscreen()
- throws InterruptedException, ExecutionException {
+ public void testExitPersistentFullscreenAllowsManualFullscreen() throws InterruptedException {
startMainActivityWithURL(LONG_FULLSCREEN_API_HTML_TEST_PAGE);
ChromeFullscreenManager fullscreenManager = getActivity().getFullscreenManager();
@@ -147,36 +150,30 @@ public class FullscreenManagerTest extends ChromeTabbedActivityTestBase {
singleClickView(view);
waitForPersistentFullscreen(delegate, true);
- assertEquals((float) -topControlsHeight, waitForTopControlsPosition(-topControlsHeight));
+ waitForTopControlsPosition(-topControlsHeight);
TestTouchUtils.sleepForDoubleTapTimeout(getInstrumentation());
singleClickView(view);
waitForPersistentFullscreen(delegate, false);
waitForNoBrowserTopControlsOffset();
- assertEquals((float) 0, waitForTopControlsPosition(0));
+ waitForTopControlsPosition(0);
scrollTopControls(false);
scrollTopControls(true);
}
- /**
- * Marked flaky on 2015-05-15: http://crbug.com/488393
- * @LargeTest
- * @Feature({"Fullscreen"})
- */
- @FlakyTest
- public void testManualHidingShowingTopControls()
- throws InterruptedException, ExecutionException {
+ @LargeTest
+ @Feature({"Fullscreen"})
+ public void testManualHidingShowingTopControls() throws InterruptedException {
startMainActivityWithURL(LONG_HTML_TEST_PAGE);
- ChromeFullscreenManager fullscreenManager = getActivity().getFullscreenManager();
- fullscreenManager.disableBrowserOverrideForTest();
+ final ChromeFullscreenManager fullscreenManager = getActivity().getFullscreenManager();
+ disableBrowserOverrides();
assertEquals(fullscreenManager.getControlOffset(), 0f);
- scrollTopControls(false);
- // Reverse the scroll and ensure the controls come back into view.
- scrollTopControls(true);
+ waitForTopControlsToBeMoveable(getActivity().getActivityTab());
+
// Check that the URL bar has not grabbed focus (http://crbug/236365)
UrlBar urlBar = (UrlBar) getActivity().findViewById(R.id.url_bar);
assertFalse("Url bar grabbed focus", urlBar.hasFocus());
@@ -184,12 +181,11 @@ public class FullscreenManagerTest extends ChromeTabbedActivityTestBase {
@LargeTest
@Feature({"Fullscreen"})
- public void testHidingTopControlsRemovesSurfaceFlingerOverlay()
- throws InterruptedException, ExecutionException {
+ public void testHidingTopControlsRemovesSurfaceFlingerOverlay() throws InterruptedException {
startMainActivityWithURL(LONG_HTML_TEST_PAGE);
- ChromeFullscreenManager fullscreenManager = getActivity().getFullscreenManager();
- fullscreenManager.disableBrowserOverrideForTest();
+ final ChromeFullscreenManager fullscreenManager = getActivity().getFullscreenManager();
+ disableBrowserOverrides();
assertEquals(fullscreenManager.getControlOffset(), 0f);
@@ -214,7 +210,7 @@ public class FullscreenManagerTest extends ChromeTabbedActivityTestBase {
}
});
- getInstrumentation().runOnMainSync(new Runnable() {
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
public void run() {
// Check that when the top controls are gone, the entire decorView is contained
@@ -235,14 +231,13 @@ public class FullscreenManagerTest extends ChromeTabbedActivityTestBase {
@LargeTest
@Feature({"Fullscreen"})
- public void testManualFullscreenDisabledForChromePages()
- throws InterruptedException, ExecutionException {
+ public void testManualFullscreenDisabledForChromePages() throws InterruptedException {
// The credits page was chosen as it is a chrome:// page that is long and would support
// manual fullscreen if it were supported.
startMainActivityWithURL("chrome://credits");
- ChromeFullscreenManager fullscreenManager = getActivity().getFullscreenManager();
- fullscreenManager.disableBrowserOverrideForTest();
+ final ChromeFullscreenManager fullscreenManager = getActivity().getFullscreenManager();
+ disableBrowserOverrides();
int topControlsHeight = fullscreenManager.getTopControlsHeight();
assertEquals(fullscreenManager.getControlOffset(), 0f);
@@ -254,15 +249,14 @@ public class FullscreenManagerTest extends ChromeTabbedActivityTestBase {
long downTime = SystemClock.uptimeMillis();
dragStart(dragX, dragStartY, downTime);
dragTo(dragX, dragX, dragStartY, dragFullY, 100, downTime);
- assertEquals(0f, waitForTopControlsPosition(0f));
+ waitForTopControlsPosition(0f);
dragEnd(dragX, dragFullY, downTime);
- assertEquals(0f, waitForTopControlsPosition(0f));
+ waitForTopControlsPosition(0f);
}
@LargeTest
@Feature({"Fullscreen"})
- public void testControlsShownOnUnresponsiveRenderer()
- throws InterruptedException, ExecutionException {
+ public void testControlsShownOnUnresponsiveRenderer() throws InterruptedException {
startMainActivityWithURL(LONG_HTML_TEST_PAGE);
ChromeFullscreenManager fullscreenManager = getActivity().getFullscreenManager();
@@ -281,7 +275,7 @@ public class FullscreenManagerTest extends ChromeTabbedActivityTestBase {
delegate.rendererUnresponsive();
}
});
- assertEquals(0f, waitForTopControlsPosition(0f));
+ waitForTopControlsPosition(0f);
ThreadUtils.runOnUiThread(new Runnable() {
@Override
@@ -292,19 +286,12 @@ public class FullscreenManagerTest extends ChromeTabbedActivityTestBase {
waitForNoBrowserTopControlsOffset();
}
- /*
@LargeTest
@Feature({"Fullscreen"})
@Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
- crbug.com/339668
- */
- @FlakyTest
- public void testPrerenderedPageSupportsManualHiding()
- throws InterruptedException, ExecutionException {
+ public void testPrerenderedPageSupportsManualHiding() throws InterruptedException {
startMainActivityOnBlankPage();
-
- ChromeFullscreenManager fullscreenManager = getActivity().getFullscreenManager();
- fullscreenManager.disableBrowserOverrideForTest();
+ disableBrowserOverrides();
final Tab tab = getActivity().getActivityTab();
final String testUrl = TestHttpServerClient.getUrl(
@@ -315,6 +302,8 @@ public class FullscreenManagerTest extends ChromeTabbedActivityTestBase {
UrlBar urlBar = (UrlBar) getActivity().findViewById(R.id.url_bar);
OmniboxTestUtils.toggleUrlBarFocus(urlBar, false);
+ OmniboxTestUtils.waitForFocusAndKeyboardActive(urlBar, false);
+
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
public void run() {
@@ -322,17 +311,12 @@ public class FullscreenManagerTest extends ChromeTabbedActivityTestBase {
}
});
- scrollTopControls(false);
+ waitForTopControlsToBeMoveable(tab);
}
- /*
- Marked flaky on 2015-07-20: http://crbug.com/512299
@LargeTest
@Feature({"Fullscreen"})
- */
- @FlakyTest
- public void testTopControlsShownWhenInputIsFocused()
- throws InterruptedException, ExecutionException {
+ public void testTopControlsShownWhenInputIsFocused() throws InterruptedException {
startMainActivityWithURL(LONG_HTML_WITH_AUTO_FOCUS_INPUT_TEST_PAGE);
ChromeFullscreenManager fullscreenManager = getActivity().getFullscreenManager();
@@ -354,11 +338,11 @@ public class FullscreenManagerTest extends ChromeTabbedActivityTestBase {
Tab tab = getActivity().getActivityTab();
singleClickView(tab.getView());
waitForEditableNodeToLoseFocus(tab);
- scrollTopControls(false);
- scrollTopControls(true);
+
+ waitForTopControlsToBeMoveable(getActivity().getActivityTab());
}
- private void scrollTopControls(boolean show) throws InterruptedException, ExecutionException {
+ private void scrollTopControls(boolean show) throws InterruptedException {
ChromeFullscreenManager fullscreenManager = getActivity().getFullscreenManager();
int topControlsHeight = fullscreenManager.getTopControlsHeight();
@@ -379,9 +363,8 @@ public class FullscreenManagerTest extends ChromeTabbedActivityTestBase {
long downTime = SystemClock.uptimeMillis();
dragStart(dragX, dragStartY, downTime);
dragTo(dragX, dragX, dragStartY, dragEndY, 100, downTime);
- assertEquals(expectedPosition, waitForTopControlsPosition(expectedPosition));
dragEnd(dragX, dragEndY, downTime);
- assertEquals(expectedPosition, waitForTopControlsPosition(expectedPosition));
+ waitForTopControlsPosition(expectedPosition);
}
private void togglePersistentFullscreen(final TabWebContentsDelegateAndroid delegate,
@@ -435,21 +418,17 @@ public class FullscreenManagerTest extends ChromeTabbedActivityTestBase {
});
}
- private float waitForTopControlsPosition(final float position)
- throws InterruptedException, ExecutionException {
+ private void waitForTopControlsPosition(final float position)
+ throws InterruptedException {
final ChromeFullscreenManager fullscreenManager = getActivity().getFullscreenManager();
CriteriaHelper.pollForUIThreadCriteria(new Criteria() {
@Override
public boolean isSatisfied() {
+ updateFailureReason("Top controls did not reach expected position. Expected: "
+ + position + ", Actual: " + fullscreenManager.getControlOffset());
return position == fullscreenManager.getControlOffset();
}
});
- return ThreadUtils.runOnUiThreadBlocking(new Callable<Float>() {
- @Override
- public Float call() throws Exception {
- return fullscreenManager.getControlOffset();
- }
- });
}
private void waitForNoBrowserTopControlsOffset() throws InterruptedException {
@@ -473,6 +452,64 @@ public class FullscreenManagerTest extends ChromeTabbedActivityTestBase {
});
}
+ /**
+ * Waits for the top controls to be moveable by user gesture.
+ * <p>
+ * This function requires the top controls to start fully visible. It till then ensure that at
+ * some point the controls can be moved by user gesture. It will then fully cycle the top
+ * controls to entirely hidden and back to fully shown.
+ */
+ private void waitForTopControlsToBeMoveable(final Tab tab) throws InterruptedException {
+ waitForTopControlsPosition(0f);
+
+ final CallbackHelper contentMovedCallback = new CallbackHelper();
+ final ChromeFullscreenManager fullscreenManager = getActivity().getFullscreenManager();
+ final float initialVisibleContentOffset = fullscreenManager.getVisibleContentOffset();
+
+ fullscreenManager.addListener(new FullscreenListener() {
+ @Override
+ public void onVisibleContentOffsetChanged(float offset) {
+ if (offset != initialVisibleContentOffset) {
+ contentMovedCallback.notifyCalled();
+ fullscreenManager.removeListener(this);
+ }
+ }
+
+ @Override
+ public void onToggleOverlayVideoMode(boolean enabled) {
+ }
+
+ @Override
+ public void onContentOffsetChanged(float offset) {
+ }
+ });
+
+ float dragX = 50f;
+ float dragStartY = tab.getView().getHeight() - 50f;
+
+ for (int i = 0; i < 10; i++) {
+ float dragEndY = dragStartY - fullscreenManager.getTopControlsHeight();
+
+ long downTime = SystemClock.uptimeMillis();
+ dragStart(dragX, dragStartY, downTime);
+ dragTo(dragX, dragX, dragStartY, dragEndY, 100, downTime);
+ dragEnd(dragX, dragEndY, downTime);
+
+ try {
+ contentMovedCallback.waitForCallback(0, 1, 500, TimeUnit.MILLISECONDS);
+
+ scrollTopControls(false);
+ scrollTopControls(true);
+
+ return;
+ } catch (TimeoutException e) {
+ // Ignore and retry
+ }
+ }
+
+ fail("Visible content never moved as expected.");
+ }
+
private void waitForEditableNodeToLoseFocus(final Tab tab) throws InterruptedException {
CriteriaHelper.pollForUIThreadCriteria(new Criteria() {
@Override
@@ -483,6 +520,15 @@ public class FullscreenManagerTest extends ChromeTabbedActivityTestBase {
});
}
+ private void disableBrowserOverrides() {
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ getActivity().getFullscreenManager().disableBrowserOverrideForTest();
+ }
+ });
+ }
+
@Override
protected void startMainActivityWithURL(String url) throws InterruptedException {
super.startMainActivityWithURL(url);
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/fullscreen/ChromeFullscreenManager.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698