Index: content/public/android/java/src/org/chromium/content/browser/ActivityContentVideoViewClient.java |
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 6acf8dca57046e5d142c90f2a54b58125e90d8ab..292993229b8ba8ba9e7b845c667914da770216a5 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); |
+ } |
} |