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

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

Issue 579883002: Use Manifest's orientation when creating a shortcut and as default orientation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@use_display_in_shortcuthelper
Patch Set: review comments 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
Index: content/public/android/java/src/org/chromium/content/browser/ScreenOrientationProvider.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/ScreenOrientationProvider.java b/content/public/android/java/src/org/chromium/content/browser/ScreenOrientationProvider.java
index 442e2d2873e2923fec564df05ca14e4f5a752d85..32040605000cc5b8a8abcc5085d57e9c1b602d84 100644
--- a/content/public/android/java/src/org/chromium/content/browser/ScreenOrientationProvider.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ScreenOrientationProvider.java
@@ -13,17 +13,20 @@ import org.chromium.base.ApplicationStatus;
import org.chromium.base.CalledByNative;
import org.chromium.base.JNINamespace;
import org.chromium.base.ThreadUtils;
+import org.chromium.content_public.common.ScreenOrientationConstants;
import org.chromium.content_public.common.ScreenOrientationValues;
+import org.chromium.ui.gfx.DeviceDisplayInfo;
/**
* This is the implementation of the C++ counterpart ScreenOrientationProvider.
*/
@JNINamespace("content")
-class ScreenOrientationProvider {
+public class ScreenOrientationProvider {
private static final String TAG = "ScreenOrientationProvider";
- private static int getOrientationFromWebScreenOrientations(byte orientations) {
- switch (orientations) {
+ private static int getOrientationFromWebScreenOrientations(byte orientation,
+ Activity activity) {
+ switch (orientation) {
case ScreenOrientationValues.DEFAULT:
return ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
case ScreenOrientationValues.PORTRAIT_PRIMARY:
@@ -40,6 +43,20 @@ class ScreenOrientationProvider {
return ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
case ScreenOrientationValues.ANY:
return ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR;
+ case ScreenOrientationValues.NATURAL:
+ 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;
+ }
default:
Log.w(TAG, "Trying to lock to unsupported orientation!");
return ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
@@ -47,13 +64,14 @@ class ScreenOrientationProvider {
}
@CalledByNative
- static void lockOrientation(byte orientations) {
- Activity activity = ApplicationStatus.getLastTrackedFocusedActivity();
- if (activity == null) {
- return;
- }
+ static void lockOrientation(byte orientation) {
+ lockOrientation(orientation, ApplicationStatus.getLastTrackedFocusedActivity());
+ }
+
+ public static void lockOrientation(byte webScreenOrientation, Activity activity) {
+ if (activity == null) return;
- int orientation = getOrientationFromWebScreenOrientations(orientations);
+ int orientation = getOrientationFromWebScreenOrientations(webScreenOrientation, activity);
if (orientation == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) {
return;
}
@@ -70,10 +88,20 @@ class ScreenOrientationProvider {
int defaultOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
+ // Activities opened from a shortcut may have EXTRA_ORIENTATION set. In
+ // which case, we want to use that as the default orientation.
+ int orientation = activity.getIntent().getIntExtra(
+ ScreenOrientationConstants.EXTRA_ORIENTATION,
+ ScreenOrientationValues.DEFAULT);
+ defaultOrientation = getOrientationFromWebScreenOrientations(
+ (byte)orientation, activity);
+
try {
- ActivityInfo info = activity.getPackageManager().getActivityInfo(
- activity.getComponentName(), PackageManager.GET_META_DATA);
- defaultOrientation = info.screenOrientation;
+ if (defaultOrientation == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) {
+ ActivityInfo info = activity.getPackageManager().getActivityInfo(
+ activity.getComponentName(), PackageManager.GET_META_DATA);
+ defaultOrientation = info.screenOrientation;
+ }
} catch (PackageManager.NameNotFoundException e) {
// Do nothing, defaultOrientation should be SCREEN_ORIENTATION_UNSPECIFIED.
} finally {

Powered by Google App Engine
This is Rietveld 408576698