| 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);
|
| + }
|
| }
|
|
|