diff --git a/android_webview/java/src/org/chromium/android_webview/AwContentViewClient.java b/android_webview/java/src/org/chromium/android_webview/AwContentViewClient.java index a091d775ffe8ebbf9c60c9e8dae01e6c83c90c79..cdccba91bf6fec12615bcedcbb0a0141f8a7ddf9 100644 --- a/android_webview/java/src/org/chromium/android_webview/AwContentViewClient.java +++ b/android_webview/java/src/org/chromium/android_webview/AwContentViewClient.java @@ -38,6 +38,21 @@ public class AwContentViewClient extends ContentViewClient { } View fullscreenView = mAwContents.enterFullScreen(); if (fullscreenView != null) { + fullscreenView.setOnKeyListener(new View.OnKeyListener() { + @Override + public boolean onKey(View v, int keyCode, KeyEvent event) { + if (event.getKeyCode() == KeyEvent.KEYCODE_BACK + && event.getAction() == KeyEvent.ACTION_UP + && mAwContents.isFullScreen()) { + exitFullscreen(); + return true; + } + return false; + } + }); + fullscreenView.setFocusable(true); + fullscreenView.setFocusableInTouchMode(true); + fullscreenView.requestFocus(); viewGroup.addView(fullscreenView); } } @@ -45,15 +60,19 @@ public class AwContentViewClient extends ContentViewClient { WebChromeClient.CustomViewCallback cb = new WebChromeClient.CustomViewCallback() { @Override public void onCustomViewHidden() { - ContentVideoView contentVideoView = ContentVideoView.getContentVideoView(); - if (contentVideoView != null) - contentVideoView.exitFullscreen(false); + exitFullscreen(); } }; mAwContentsClient.onShowCustomView(viewGroup, cb); return true; } + private void exitFullscreen() { + ContentVideoView contentVideoView = ContentVideoView.getContentVideoView(); + if (contentVideoView != null) + contentVideoView.exitFullscreen(false); + } + @Override public void onDestroyContentVideoView() { mAwContents.exitFullScreen();