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

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

Issue 163433010: Use Display changes for screen orientation changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@orientation_tests
Patch Set: rebase Created 6 years, 10 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 | « content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java ('k') | 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/ScreenOrientationTest.java
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationTest.java b/content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationTest.java
index a8376470948fe66cdd2b2b8580d5ffd52434c264..375eca694bdb13a9a108492fb8f8321907c427bf 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationTest.java
+++ b/content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationTest.java
@@ -5,17 +5,12 @@
package org.chromium.content.browser;
import android.content.pm.ActivityInfo;
-import android.content.res.Configuration;
-import android.graphics.Canvas;
import android.test.suitebuilder.annotation.MediumTest;
import android.test.suitebuilder.annotation.SmallTest;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-import android.view.View;
+import android.view.Surface;
import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.UrlUtils;
-import org.chromium.content.browser.ContentViewCore.InternalAccessDelegate;
import org.chromium.content.browser.test.util.Criteria;
import org.chromium.content.browser.test.util.CriteriaHelper;
import org.chromium.content.browser.test.util.JavaScriptUtils;
@@ -34,104 +29,71 @@ public class ScreenOrientationTest extends ContentShellTestBase {
UrlUtils.encodeHtmlDataUri("<html><body>foo</body></html>");
/**
- * Class that is used to get notified when the activity configuration
- * changes.
+ * Whether we should allow 0 degrees when expecting 180 degrees.
+ * Try server bots, for some yet unknown reasons, rotate to 0 degrees angle
+ * when they should rotate to 180 degrees. See http://crbug.com/344461
*/
- private static class ConfigurationChangeAccessDelegate
- implements InternalAccessDelegate {
+ private static final boolean ALLOW_0_FOR_180 = true;
- private interface ConfigurationChangedListener {
- public void onConfigurationChanged();
- }
-
- private ConfigurationChangedListener mListener = null;
-
- private void setListener(ConfigurationChangedListener listener) {
- mListener = listener;
- }
-
- @Override
- public boolean drawChild(Canvas canvas, View child, long drawingTime) {
- return false;
- }
-
- @Override
- public boolean super_onKeyUp(int keyCode, KeyEvent event) {
- return false;
- }
-
- @Override
- public boolean super_dispatchKeyEventPreIme(KeyEvent event) {
- return false;
- }
-
- @Override
- public boolean super_dispatchKeyEvent(KeyEvent event) {
- return false;
- }
+ /**
+ * Criteria used to know when an orientation change happens.
+ */
+ private class OrientationChangeListenerCriteria implements Criteria {
- @Override
- public boolean super_onGenericMotionEvent(MotionEvent event) {
- return false;
- }
+ private final int mTargetOrientation;
- @Override
- public void super_onConfigurationChanged(Configuration newConfig) {
- if (mListener != null)
- mListener.onConfigurationChanged();
+ private OrientationChangeListenerCriteria(int targetOrientation) {
+ mTargetOrientation = targetOrientation;
}
@Override
- public void onScrollChanged(int lPix, int tPix, int oldlPix, int oldtPix) {
+ public boolean isSatisfied() {
+ return getOrientationAngle() == mTargetOrientation;
}
+ }
- @Override
- public boolean awakenScrollBars() {
- return false;
- }
+ private ContentView mContentView;
- @Override
- public boolean super_awakenScrollBars(int startDelay, boolean invalidate) {
- return false;
+ /**
+ * Returns the current device orientation angle.
+ */
+ private int getOrientationAngle() {
+ switch (getActivity().getWindowManager().getDefaultDisplay()
+ .getRotation()) {
+ case Surface.ROTATION_90:
+ return 90;
+ case Surface.ROTATION_180:
+ return 180;
+ case Surface.ROTATION_270:
+ return 270;
+ case Surface.ROTATION_0:
+ return 0;
+ default:
+ fail("Should not be there!");
+ return 0;
}
}
/**
- * Criteria used to know when an orientation change happens.
+ * Returns the expected orientation angle for a specific orientation type as
+ * defined in ActivityInfor.screenOrientation.
*/
- private static class OrientationChangeListenerCriteria implements Criteria {
-
- private boolean mSatisfied = false;
-
- private ConfigurationChangeAccessDelegate mAccessDelegate;
-
- private OrientationChangeListenerCriteria(
- ConfigurationChangeAccessDelegate accessDelegate) {
- mAccessDelegate = accessDelegate;
- mAccessDelegate.setListener(
- new ConfigurationChangeAccessDelegate.ConfigurationChangedListener() {
- @Override
- public void onConfigurationChanged() {
- mSatisfied = true;
- }
- });
- }
-
- @Override
- public boolean isSatisfied() {
- if (mSatisfied) {
- mAccessDelegate.setListener(null);
- return true;
- }
-
- return false;
+ private static int orientationTypeToAngle(int orientation) {
+ 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;
+ default:
+ fail("Should not be there!");
+ return 0;
}
}
- private ContentView mContentView;
-
- private ConfigurationChangeAccessDelegate mConfChangeAccessDelegate;
-
/**
* Locks the screen orientation to the predefined orientation type.
*/
@@ -154,7 +116,7 @@ public class ScreenOrientationTest extends ContentShellTestBase {
private boolean lockOrientationAndWait(int orientation)
throws InterruptedException {
OrientationChangeListenerCriteria listenerCriteria =
- new OrientationChangeListenerCriteria(mConfChangeAccessDelegate);
+ new OrientationChangeListenerCriteria(orientationTypeToAngle(orientation));
lockOrientation(orientation);
@@ -180,10 +142,6 @@ public class ScreenOrientationTest extends ContentShellTestBase {
ContentShellActivity activity = launchContentShellWithUrl(DEFAULT_URL);
waitForActiveShellToBeDoneLoading();
mContentView = activity.getActiveContentView();
-
- mConfChangeAccessDelegate = new ConfigurationChangeAccessDelegate();
- getContentViewCore().
- setContainerViewInternals(mConfChangeAccessDelegate);
}
@Override
@@ -201,19 +159,45 @@ public class ScreenOrientationTest extends ContentShellTestBase {
@MediumTest
@Feature({"ScreenOrientation", "Main"})
public void testChanges() throws Throwable {
+ lockOrientationAndWait(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+ assertEquals(0, getWindowOrientation());
+
lockOrientationAndWait(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
assertEquals(90, getWindowOrientation());
- lockOrientationAndWait(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
- assertEquals(0, getWindowOrientation());
+ lockOrientationAndWait(
+ ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
+ int orientation = getWindowOrientation();
+ assertTrue(180 == orientation || (0 == orientation && ALLOW_0_FOR_180));
lockOrientationAndWait(
- ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
+ ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
assertEquals(-90, getWindowOrientation());
+ lockOrientationAndWait(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+ assertEquals(0, getWindowOrientation());
+ }
+
+ @MediumTest
+ @Feature({"ScreenOrientation", "Main"})
+ public void testFlipChangePortrait() throws Throwable {
+ lockOrientationAndWait(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+ assertEquals(0, getWindowOrientation());
+
lockOrientationAndWait(
ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
int orientation = getWindowOrientation();
- assertTrue(orientation == 0 || orientation == 180);
+ assertTrue(180 == orientation || (0 == orientation && ALLOW_0_FOR_180));
+ }
+
+ @MediumTest
+ @Feature({"ScreenOrientation", "Main"})
+ public void testFlipChangeLandscape() throws Throwable {
+ lockOrientationAndWait(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+ assertEquals(90, getWindowOrientation());
+
+ lockOrientationAndWait(
+ ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
+ assertEquals(-90, getWindowOrientation());
}
}
« no previous file with comments | « content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698