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

Unified Diff: content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationProviderTest.java

Issue 429173004: Re-enable ScreenOrientationProviderTest with flakyness fixes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix setup to not hit assert Created 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationProviderTest.java
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationProviderTest.java b/content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationProviderTest.java
index 0b8f434544cad053e60f47d7a3aade178733212a..92354f1087c15123063ee782919139867e6b3295 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationProviderTest.java
+++ b/content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationProviderTest.java
@@ -5,8 +5,9 @@
package org.chromium.content.browser;
import android.os.Build;
-import android.test.FlakyTest;
+import android.test.suitebuilder.annotation.MediumTest;
+import org.chromium.base.ThreadUtils;
import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.UrlUtils;
import org.chromium.content.browser.test.util.CriteriaHelper;
@@ -54,60 +55,62 @@ public class ScreenOrientationProviderTest extends ContentShellTestBase {
}
/**
- * Locks the screen orientation to |orientations| using ScreenOrientationProvider.
- */
- private void lockOrientation(int orientations) {
- ScreenOrientationProvider.lockOrientation((byte)orientations);
- }
-
- /**
* Call |lockOrientation| and wait for an orientation change.
*/
- private boolean lockOrientationAndWait(int orientations)
- throws InterruptedException {
+ private boolean lockOrientationAndWait(final int orientations) throws InterruptedException {
OrientationChangeObserverCriteria criteria =
new OrientationChangeObserverCriteria(mObserver);
- lockOrientation(orientations);
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ ScreenOrientationProvider.lockOrientation((byte)orientations);
+ }
+ });
+ getInstrumentation().waitForIdleSync();
return CriteriaHelper.pollForCriteria(criteria);
}
- /**
- * Unlock the screen orientation using |ScreenOrientationProvider|.
- */
- private void unlockOrientation() {
- ScreenOrientationProvider.unlockOrientation();
- }
-
@Override
public void setUp() throws Exception {
super.setUp();
- ContentShellActivity activity = launchContentShellWithUrl(DEFAULT_URL);
+ mObserver = new MockOrientationObserver();
+ OrientationChangeObserverCriteria criteria =
+ new OrientationChangeObserverCriteria(mObserver);
+
+ final ContentShellActivity activity = launchContentShellWithUrl(DEFAULT_URL);
waitForActiveShellToBeDoneLoading();
- mObserver = new MockOrientationObserver();
- ScreenOrientationListener.getInstance().addObserver(
- mObserver, getInstrumentation().getTargetContext());
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ ScreenOrientationListener.getInstance().addObserver(mObserver, activity);
+ }
+ });
+
+ // Make sure we start all the tests with the same orientation.
+ lockOrientationAndWait(ScreenOrientationValues.PORTRAIT_PRIMARY);
// Make sure mObserver is updated before we start the tests.
- OrientationChangeObserverCriteria criteria =
- new OrientationChangeObserverCriteria(mObserver);
CriteriaHelper.pollForCriteria(criteria);
}
@Override
public void tearDown() throws Exception {
- unlockOrientation();
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ ScreenOrientationProvider.unlockOrientation();
+ }
+ });
mObserver = null;
super.tearDown();
}
- // @SmallTest
- // crbug.com/353500
- @FlakyTest
+ @MediumTest
@Feature({"ScreenOrientation"})
public void testBasicValues() throws Exception {
lockOrientationAndWait(ScreenOrientationValues.PORTRAIT_PRIMARY);
@@ -123,11 +126,17 @@ public class ScreenOrientationProviderTest extends ContentShellTestBase {
assertTrue(checkOrientationForLock(ScreenOrientationValues.LANDSCAPE_SECONDARY));
}
- // @MediumTest
- // crbug.com/353500
- @FlakyTest
+ @MediumTest
@Feature({"ScreenOrientation"})
public void testPortrait() throws Exception {
+ // Do not run that test for versions of Android before JB-MR1 because
+ // the ScreenOrientationListener for those versions isn't accurate
+ // enough. We will later simply not run that code in that version or add
+ // an "accurate mode" that will fix this by polling.
+ // See http://crbug.com/400158
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1)
+ return;
+
lockOrientationAndWait(ScreenOrientationValues.PORTRAIT_PRIMARY);
assertTrue(checkOrientationForLock(ScreenOrientationValues.PORTRAIT_PRIMARY));
@@ -145,24 +154,19 @@ public class ScreenOrientationProviderTest extends ContentShellTestBase {
ScreenOrientationValues.PORTRAIT_SECONDARY));
}
- // @MediumTest
- // crbug.com/353500
- @FlakyTest
+ @MediumTest
@Feature({"ScreenOrientation"})
public void testLandscape() throws Exception {
- int initialOrientation = mObserver.mOrientation;
+ // Do not run that test for versions of Android before JB-MR1 because
+ // the ScreenOrientationListener for those versions isn't accurate
+ // enough. We will later simply not run that code in that version or add
+ // an "accurate mode" that will fix this by polling.
+ // See http://crbug.com/400158
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1)
+ return;
lockOrientationAndWait(ScreenOrientationValues.LANDSCAPE_PRIMARY);
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
- // If we were in LANDSCAPE_SECONDARY (90 degrees), old SDK will not
- // be able to catch this change correctly. However, we still want to
- // wait to not break the rest of the test.
- boolean result = checkOrientationForLock(ScreenOrientationValues.LANDSCAPE_PRIMARY);
- if (initialOrientation != -90)
- assertTrue(result);
- } else {
- assertTrue(checkOrientationForLock(ScreenOrientationValues.LANDSCAPE_PRIMARY));
- }
+ assertTrue(checkOrientationForLock(ScreenOrientationValues.LANDSCAPE_PRIMARY));
lockOrientationAndWait(ScreenOrientationValues.LANDSCAPE_PRIMARY |
ScreenOrientationValues.LANDSCAPE_SECONDARY);
@@ -170,14 +174,7 @@ public class ScreenOrientationProviderTest extends ContentShellTestBase {
ScreenOrientationValues.LANDSCAPE_SECONDARY));
lockOrientationAndWait(ScreenOrientationValues.LANDSCAPE_SECONDARY);
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
- // Exactly the opposite situation as above.
- boolean result = checkOrientationForLock(ScreenOrientationValues.LANDSCAPE_SECONDARY);
- if (initialOrientation == -90)
- assertTrue(result);
- } else {
- assertTrue(checkOrientationForLock(ScreenOrientationValues.LANDSCAPE_SECONDARY));
- }
+ assertTrue(checkOrientationForLock(ScreenOrientationValues.LANDSCAPE_SECONDARY));
lockOrientationAndWait(ScreenOrientationValues.LANDSCAPE_PRIMARY |
ScreenOrientationValues.LANDSCAPE_SECONDARY);
« 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