summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content/public/android/java/src/org/chromium/content/browser/ActivityContentVideoViewClient.java50
1 files changed, 40 insertions, 10 deletions
diff --git a/content/public/android/java/src/org/chromium/content/browser/ActivityContentVideoViewClient.java b/content/public/android/java/src/org/chromium/content/browser/ActivityContentVideoViewClient.java
index 6acf8dc..2929932 100644
--- a/content/public/android/java/src/org/chromium/content/browser/ActivityContentVideoViewClient.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ActivityContentVideoViewClient.java
@@ -5,6 +5,7 @@
package org.chromium.content.browser;
import android.app.Activity;
+import android.os.Build;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
@@ -24,24 +25,22 @@ public class ActivityContentVideoViewClient implements ContentVideoViewClient {
@Override
public boolean onShowCustomView(View view) {
- mActivity.getWindow().setFlags(
- WindowManager.LayoutParams.FLAG_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FULLSCREEN);
-
- mActivity.getWindow().addContentView(view,
- new FrameLayout.LayoutParams(
- ViewGroup.LayoutParams.MATCH_PARENT,
- ViewGroup.LayoutParams.MATCH_PARENT,
- Gravity.CENTER));
+ FrameLayout decor = (FrameLayout) mActivity.getWindow().getDecorView();
+ decor.addView(view, 0,
+ new FrameLayout.LayoutParams(
+ ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.MATCH_PARENT,
+ Gravity.CENTER));
+ setSystemUiVisibility(decor, true);
mView = view;
return true;
}
@Override
public void onDestroyContentVideoView() {
- mActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
FrameLayout decor = (FrameLayout) mActivity.getWindow().getDecorView();
decor.removeView(mView);
+ setSystemUiVisibility(decor, false);
mView = null;
}
@@ -49,4 +48,35 @@ public class ActivityContentVideoViewClient implements ContentVideoViewClient {
public View getVideoLoadingProgressView() {
return null;
}
+
+ /**
+ * Returns the system ui visibility after entering or exiting fullscreen.
+ * @param view The decor view belongs to the activity window
+ * @param enterFullscreen True if video is going fullscreen, or false otherwise.
+ */
+ private void setSystemUiVisibility(View view, boolean enterFullscreen) {
+ if (enterFullscreen) {
+ mActivity.getWindow().setFlags(
+ WindowManager.LayoutParams.FLAG_FULLSCREEN,
+ WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ } else {
+ mActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ }
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
+ return;
+ }
+
+ int systemUiVisibility = view.getSystemUiVisibility();
+ int flags = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
+ | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+ | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+ | View.SYSTEM_UI_FLAG_FULLSCREEN
+ | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
+ if (enterFullscreen) {
+ systemUiVisibility |= flags;
+ } else {
+ systemUiVisibility &= ~flags;
+ }
+ view.setSystemUiVisibility(systemUiVisibility);
+ }
}