Commit 6273e79e authored by qinmin@chromium.org's avatar qinmin@chromium.org

play fullscreen video in immersive mode

For Kitkat, we can play video in immersive mode without the navigation bar.
Maybe we should do the same for other elements?

BUG=378412

Review URL: https://codereview.chromium.org/303263004

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@274080 0039d316-1c4b-4281-b951-d872f2087c98
parent 0689010f
......@@ -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,
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);
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment