Add API to allow plugins to lock their orientation in full-screen

This CL has companion changes in the framework and webkit.

bug: 3398386
Change-Id: Iea198ae6b74c68506e605ca8c401f199e2455416
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index e2fea16..b20e661 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -86,6 +86,7 @@
 
     private View mCustomView;
     private WebChromeClient.CustomViewCallback mCustomViewCallback;
+    private int mOriginalOrientation;
 
     private CombinedBookmarkHistoryView mComboView;
 
@@ -540,7 +541,7 @@
     }
 
     @Override
-    public void showCustomView(View view,
+    public void showCustomView(View view, int requestedOrientation,
             WebChromeClient.CustomViewCallback callback) {
         // if a view already exists then immediately terminate the new one
         if (mCustomView != null) {
@@ -548,6 +549,8 @@
             return;
         }
 
+        mOriginalOrientation = mActivity.getRequestedOrientation();
+
         // Add the custom view to its container.
         mCustomViewContainer.addView(view, COVER_SCREEN_GRAVITY_CENTER);
         mCustomView = view;
@@ -556,6 +559,7 @@
         mContentView.setVisibility(View.GONE);
         // Finally show the custom view container.
         setStatusBarVisibility(false);
+        mActivity.setRequestedOrientation(requestedOrientation);
         mCustomViewContainer.setVisibility(View.VISIBLE);
         mCustomViewContainer.bringToFront();
     }
@@ -573,6 +577,7 @@
         mCustomViewContainer.setVisibility(View.GONE);
         mCustomViewCallback.onCustomViewHidden();
         // Show the content view.
+        mActivity.setRequestedOrientation(mOriginalOrientation);
         setStatusBarVisibility(true);
         mContentView.setVisibility(View.VISIBLE);
     }