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

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

Issue 178253002: Revert of Use Display changes for screen orientation changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@orientation_tests
Patch Set: 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 | « no previous file | content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationTest.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
index 8964d412cd2652904afbb248c235aeef53f807dd..04b3175e6c4116e5fef5f6039ae141ccb70469ae 100644
--- a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
@@ -16,7 +16,6 @@
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Rect;
-import android.hardware.display.DisplayManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
@@ -437,72 +436,6 @@
}
/**
- * DisplayManager listener used to detect screen orientation changes and
- * inform the ContentViewCore of any change.
- */
- private class DisplayOrientationListener
- implements DisplayManager.DisplayListener {
-
- private final DisplayManager mDisplayManager;
- private int mPreviousOrientation;
-
- public DisplayOrientationListener(Context context) {
- mDisplayManager =
- (DisplayManager) getContext().getSystemService(Context.DISPLAY_SERVICE);
- mDisplayManager.registerDisplayListener(this, null);
-
- mPreviousOrientation = getOrientation();
- sendOrientationChangeEvent(mPreviousOrientation);
- }
-
- @Override
- public void onDisplayAdded(int displayId) {
- }
-
- @Override
- public void onDisplayChanged(int displayId) {
- int orientation = getOrientation();
- if (orientation == mPreviousOrientation) {
- return;
- }
-
- sendOrientationChangeEvent(orientation);
- mPreviousOrientation = orientation;
- }
-
- @Override
- public void onDisplayRemoved(int displayId) {
- }
-
- /**
- * Gets the screen orientation from Android.
- */
- private int getOrientation() {
- WindowManager windowManager =
- (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
- switch (windowManager.getDefaultDisplay().getRotation()) {
- case Surface.ROTATION_90:
- return 90;
- case Surface.ROTATION_180:
- return 180;
- case Surface.ROTATION_270:
- return -90;
- case Surface.ROTATION_0:
- return 0;
- default:
- throw new IllegalStateException(
- "Display.getRotation() shouldn't return that value");
- }
- }
-
- private void destroy() {
- mDisplayManager.unregisterDisplayListener(this);
- }
- }
-
- private DisplayOrientationListener mDisplayListener;
-
- /**
* Used by UMA stat for tracking accidental double tap navigations. Specifies the amount of
* time after a double tap within which actions will be recorded to the UMA stat.
*/
@@ -787,6 +720,8 @@
resetGestureDetectors();
}
};
+
+ sendOrientationChangeEvent();
}
@CalledByNative
@@ -1643,8 +1578,6 @@
@SuppressWarnings("javadoc")
public void onAttachedToWindow() {
setAccessibilityState(mAccessibilityManager.isEnabled());
-
- mDisplayListener = new DisplayOrientationListener(mContext);
}
/**
@@ -1656,9 +1589,6 @@
hidePopupDialog();
mZoomControlsDelegate.dismissZoomPicker();
unregisterAccessibilityContentObserver();
-
- mDisplayListener.destroy();
- mDisplayListener = null;
}
/**
@@ -1713,7 +1643,15 @@
manager.restartInput(mContainerView);
}
mContainerViewInternals.super_onConfigurationChanged(newConfig);
-
+ // Make sure the size is up to date in JavaScript's window.onorientationchanged.
+ mContainerView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
+ @Override
+ public void onLayoutChange(View v, int left, int top, int right, int bottom,
+ int oldLeft, int oldTop, int oldRight, int oldBottom) {
+ mContainerView.removeOnLayoutChangeListener(this);
+ sendOrientationChangeEvent();
+ }
+ });
// To request layout has side effect, but it seems OK as it only happen in
// onConfigurationChange and layout has to be changed in most case.
mContainerView.requestLayout();
@@ -2186,12 +2124,32 @@
}
/**
- * Send the screen orientation value to the renderer.
- */
- private void sendOrientationChangeEvent(int orientation) {
+ * Get the screen orientation from the OS and push it to WebKit.
+ *
+ * TODO(husky): Add a hook for mock orientations.
+ */
+ private void sendOrientationChangeEvent() {
if (mNativeContentViewCore == 0) return;
- nativeSendOrientationChangeEvent(mNativeContentViewCore, orientation);
+ WindowManager windowManager =
+ (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
+ switch (windowManager.getDefaultDisplay().getRotation()) {
+ case Surface.ROTATION_90:
+ nativeSendOrientationChangeEvent(mNativeContentViewCore, 90);
+ break;
+ case Surface.ROTATION_180:
+ nativeSendOrientationChangeEvent(mNativeContentViewCore, 180);
+ break;
+ case Surface.ROTATION_270:
+ nativeSendOrientationChangeEvent(mNativeContentViewCore, -90);
+ break;
+ case Surface.ROTATION_0:
+ nativeSendOrientationChangeEvent(mNativeContentViewCore, 0);
+ break;
+ default:
+ Log.w(TAG, "Unknown rotation!");
+ break;
+ }
}
/**
« no previous file with comments | « no previous file | content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationTest.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698