Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2043)

Unified Diff: android_webview/java/src/org/chromium/android_webview/AwContentViewClient.java

Issue 618013003: Support fullscreen for non-video elements in the WebView. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@refactorFullscreenNonMedia
Patch Set: Removed verbose comment Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: android_webview/java/src/org/chromium/android_webview/AwContentViewClient.java
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 a5dd9e17f429790a1392d0b0f214fa6f7ed98c0d..c2614c265f7485f707d166623a6ed8e7a0d8339e 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwContentViewClient.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwContentViewClient.java
@@ -19,10 +19,10 @@ import org.chromium.content.browser.ContentViewClient;
* ContentViewClient implementation for WebView
*/
public class AwContentViewClient extends ContentViewClient implements ContentVideoViewClient {
- private AwContentsClient mAwContentsClient;
- private AwSettings mAwSettings;
- private AwContents mAwContents;
- private Context mContext;
+ private final AwContentsClient mAwContentsClient;
+ private final AwSettings mAwSettings;
+ private final AwContents mAwContents;
+ private final Context mContext;
public AwContentViewClient(
AwContentsClient awContentsClient, AwSettings awSettings, AwContents awContents,
@@ -66,26 +66,7 @@ public class AwContentViewClient extends ContentViewClient implements ContentVid
}
@Override
- public void enterFullscreenVideo(View view) {
- final FrameLayout viewGroup = new FrameLayout(mContext);
- viewGroup.addView(view);
- viewGroup.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
- @Override
- public void onViewDetachedFromWindow(View v) {
- // Intentional no-op (see onDestroyContentVideoView).
- }
-
- @Override
- public void onViewAttachedToWindow(View v) {
- if (mAwContents.isFullScreen()) {
- return;
- }
- View fullscreenView = mAwContents.enterFullScreen();
- if (fullscreenView != null) {
- viewGroup.addView(fullscreenView);
- }
- }
- });
+ public void enterFullscreenVideo(View videoView) {
WebChromeClient.CustomViewCallback cb = new WebChromeClient.CustomViewCallback() {
@Override
public void onCustomViewHidden() {
@@ -94,17 +75,54 @@ public class AwContentViewClient extends ContentViewClient implements ContentVid
contentVideoView.exitFullscreen(false);
}
};
- mAwContentsClient.onShowCustomView(viewGroup, cb);
+ enterFullscreen(videoView, cb);
}
@Override
public void exitFullscreenVideo() {
- mAwContents.exitFullScreen();
- mAwContentsClient.onHideCustomView();
+ exitFullscreen();
}
@Override
public View getVideoLoadingProgressView() {
return mAwContentsClient.getVideoLoadingProgressView();
}
+
+ @Override
+ public void enterFullscreen() {
+ WebChromeClient.CustomViewCallback cb = new WebChromeClient.CustomViewCallback() {
+ @Override
+ public void onCustomViewHidden() {
+ mAwContents.requestExitFullscreen();
+ }
+ };
+ enterFullscreen(null, cb);
+ }
+
+ @Override
+ public void exitFullscreen() {
+ mAwContents.exitFullScreen();
+ mAwContentsClient.onHideCustomView();
+ }
+
+ private void enterFullscreen(View videoView, WebChromeClient.CustomViewCallback cb) {
+ if (mAwContents.isFullScreen()) {
+ return;
+ }
+ View fullscreenView = mAwContents.enterFullScreen();
+ if (fullscreenView == null) {
+ return;
+ }
+
+ if (videoView == null) {
+ // The fullscreenView contains the non-video element in fullscreen.
+ mAwContentsClient.onShowCustomView(fullscreenView, cb);
+ } else {
+ // The videoView contains the video and the fullscreenView the html5 controls.
+ FrameLayout viewGroup = new FrameLayout(mContext);
+ viewGroup.addView(videoView);
+ viewGroup.addView(fullscreenView);
+ mAwContentsClient.onShowCustomView(viewGroup, cb);
+ }
+ }
}

Powered by Google App Engine
This is Rietveld 408576698