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

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

Issue 608503003: Properly interpret orientation provider/listener test values. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Set mNaturalOrientation default value to ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED Created 6 years, 3 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 | content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationProviderTest.java » ('j') | 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/ScreenOrientationListenerTest.java
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationListenerTest.java b/content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationListenerTest.java
index 907df4c03effd2ff59c00ab3026a5e9cca92566f..5cce3487e6ffc3df7e05f9e303d466eacdc73443 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationListenerTest.java
+++ b/content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationListenerTest.java
@@ -4,6 +4,7 @@
package org.chromium.content.browser;
+import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.test.suitebuilder.annotation.MediumTest;
@@ -15,6 +16,7 @@ import org.chromium.content.browser.test.util.MockOrientationObserver;
import org.chromium.content.browser.test.util.OrientationChangeObserverCriteria;
import org.chromium.content_shell_apk.ContentShellActivity;
import org.chromium.content_shell_apk.ContentShellTestBase;
+import org.chromium.ui.gfx.DeviceDisplayInfo;
/**
* Tests for ScreenOrientationListener and its implementations.
@@ -30,22 +32,81 @@ public class ScreenOrientationListenerTest extends ContentShellTestBase {
private MockOrientationObserver mObserver;
+ private int mNaturalOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
+
/**
- * Returns the expected orientation angle based on the orientation type.
+ * Checks does the device orientation match the requested one.
*/
- private static int orientationTypeToAngle(int orientation) {
+ private boolean checkOrientationForLock(int orientation) {
+ int expectedOrientation = orientationTypeToAngle(orientation);
+ int currentOrientation = mObserver.mOrientation;
switch (orientation) {
case ActivityInfo.SCREEN_ORIENTATION_PORTRAIT:
- return 0;
case ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE:
- return 90;
case ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT:
- return 180;
case ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE:
- return 270;
+ if (expectedOrientation == currentOrientation)
+ return true;
+ else if (ALLOW_0_FOR_180 && expectedOrientation == 180
+ && currentOrientation == 0)
+ return true;
+ return false;
default:
- fail("Should not be there!");
- return 0;
+ return false;
+ }
+ }
+
+ /**
+ * Returns the expected orientation angle based on the orientation type.
+ */
+ private int orientationTypeToAngle(int orientation) {
+ if (mNaturalOrientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
+ switch (orientation) {
+ case ActivityInfo.SCREEN_ORIENTATION_PORTRAIT:
+ return 0;
+ case ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE:
+ return 90;
+ case ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT:
+ return 180;
+ case ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE:
+ return -90;
+ default:
+ fail("Should not be there!");
+ return 0;
+ }
+ } else { // mNaturalOrientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
+ switch (orientation) {
+ case ActivityInfo.SCREEN_ORIENTATION_PORTRAIT:
+ return -90;
+ case ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE:
+ return 0;
+ case ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT:
+ return 90;
+ case ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE:
+ return 180;
+ default:
+ fail("Should not be there!");
+ return 0;
+ }
+ }
+ }
+
+ /**
+ * Retrieves device natural orientation.
+ */
+ private int getNaturalOrientation(Activity activity) {
+ DeviceDisplayInfo displayInfo = DeviceDisplayInfo.create(activity);
+ int rotation = displayInfo.getRotationDegrees();
+ if (rotation == 0 || rotation == 180) {
+ if (displayInfo.getDisplayHeight() >= displayInfo.getDisplayWidth()) {
+ return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
+ }
+ return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
+ } else {
+ if (displayInfo.getDisplayHeight() < displayInfo.getDisplayWidth()) {
+ return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
+ }
+ return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
}
}
@@ -85,6 +146,10 @@ public class ScreenOrientationListenerTest extends ContentShellTestBase {
}
});
+ // Calculate device natural orientation, as mObserver.mOrientation
+ // is difference between current and natural orientation in degrees.
+ mNaturalOrientation = getNaturalOrientation(activity);
+
// Make sure we start all the tests with the same orientation.
lockOrientationAndWait(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
@@ -107,37 +172,35 @@ public class ScreenOrientationListenerTest extends ContentShellTestBase {
@Feature({"ScreenOrientation"})
public void testVariousOrientationChanges() throws Exception {
lockOrientationAndWait(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
- assertEquals(90, mObserver.mOrientation);
+ assertTrue(checkOrientationForLock(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE));
lockOrientationAndWait(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
- assertTrue(mObserver.mOrientation == 180 ||
- (ALLOW_0_FOR_180 && mObserver.mOrientation == 0));
+ assertTrue(checkOrientationForLock(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT));
lockOrientationAndWait(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
- assertEquals(-90, mObserver.mOrientation);
+ assertTrue(checkOrientationForLock(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE));
lockOrientationAndWait(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
- assertEquals(0, mObserver.mOrientation);
+ assertTrue(checkOrientationForLock(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT));
}
@MediumTest
@Feature({"ScreenOrientation"})
public void testFlipPortrait() throws Exception {
lockOrientationAndWait(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
- assertEquals(0, mObserver.mOrientation);
+ assertTrue(checkOrientationForLock(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT));
lockOrientationAndWait(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
- assertTrue(mObserver.mOrientation == 180 ||
- (ALLOW_0_FOR_180 && mObserver.mOrientation == 0));
+ assertTrue(checkOrientationForLock(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT));
}
@MediumTest
@Feature({"ScreenOrientation"})
public void testFlipLandscape() throws Exception {
lockOrientationAndWait(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
- assertEquals(90, mObserver.mOrientation);
+ assertTrue(checkOrientationForLock(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE));
lockOrientationAndWait(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
- assertEquals(-90, mObserver.mOrientation);
+ assertTrue(checkOrientationForLock(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE));
}
}
« no previous file with comments | « no previous file | content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationProviderTest.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698