| 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 6ed4911ffaf2dae142ec0c2946e315b850d401c3..0e281851184aeda0a4aa778da4c6723cc7c5857c 100644
|
| --- a/android_webview/java/src/org/chromium/android_webview/AwContentViewClient.java
|
| +++ b/android_webview/java/src/org/chromium/android_webview/AwContentViewClient.java
|
| @@ -5,6 +5,7 @@
|
| package org.chromium.android_webview;
|
|
|
| import android.content.Context;
|
| +import android.graphics.RectF;
|
| import android.view.KeyEvent;
|
| import android.view.View;
|
| import android.webkit.URLUtil;
|
| @@ -13,6 +14,7 @@ import android.webkit.WebChromeClient;
|
| import org.chromium.content.browser.ContentVideoView;
|
| import org.chromium.content.browser.ContentVideoViewClient;
|
| import org.chromium.content.browser.ContentViewClient;
|
| +import org.chromium.content.browser.ContentViewCore;
|
|
|
| /**
|
| * ContentViewClient implementation for WebView
|
| @@ -46,6 +48,8 @@ public class AwContentViewClient extends ContentViewClient {
|
|
|
| private AwContentsClient mAwContentsClient;
|
| private AwSettings mAwSettings;
|
| + private ContentViewCore mContentViewCore;
|
| + private ExternalVideoSurfaceContainer mExternalVideoSurfaceContainer;
|
|
|
| public AwContentViewClient(AwContentsClient awContentsClient, AwSettings awSettings) {
|
| mAwContentsClient = awContentsClient;
|
| @@ -83,4 +87,48 @@ public class AwContentViewClient extends ContentViewClient {
|
| return mAwSettings != null ?
|
| mAwSettings.getBlockNetworkLoads() && URLUtil.isNetworkUrl(url) : true;
|
| }
|
| +
|
| + public void setContentViewCore(ContentViewCore contentViewCore) {
|
| + mContentViewCore = contentViewCore;
|
| + if (mExternalVideoSurfaceContainer != null) {
|
| + mExternalVideoSurfaceContainer.releaseCurrentExternalVideoSurface();
|
| + mExternalVideoSurfaceContainer = null;
|
| + }
|
| + }
|
| +
|
| + @Override
|
| + public void onRequestExternalVideoSurface(int playerId) {
|
| + if (mExternalVideoSurfaceContainer == null) {
|
| + mExternalVideoSurfaceContainer = new ExternalVideoSurfaceContainer(mContentViewCore);
|
| + }
|
| + mExternalVideoSurfaceContainer.requestExternalVideoSurface(playerId);
|
| + }
|
| +
|
| + @Override
|
| + public void onReleaseExternalVideoSurface(int playerId) {
|
| + // mExternalVideoSurfaceContainer can be null in case that setContentViewCore() is called
|
| + // twice in a pop up webview.
|
| + if (mExternalVideoSurfaceContainer != null) {
|
| + mExternalVideoSurfaceContainer.releaseExternalVideoSurface(playerId);
|
| + }
|
| + }
|
| +
|
| + @Override
|
| + public void onExternalVideoSurfacePositionChanged(int playerId, RectF rect) {
|
| + // mExternalVideoSurfaceContainer can be null in case that setContentViewCore() is called
|
| + // twice in a pop up webview.
|
| + if (mExternalVideoSurfaceContainer != null) {
|
| + mExternalVideoSurfaceContainer.notifyExternalVideoSurfacePositionChanged(
|
| + playerId, rect);
|
| + }
|
| + }
|
| +
|
| + @Override
|
| + public void onExternalVideoSurfaceRenderCoordinatesChanged() {
|
| + // mExternalVideoSurfaceContainer can be null in case that setContentViewCore() is called
|
| + // twice in a pop up webview.
|
| + if (mExternalVideoSurfaceContainer != null) {
|
| + mExternalVideoSurfaceContainer.notifyExternalVideoSurfaceRenderCoordinatesChanged();
|
| + }
|
| + }
|
| }
|
|
|