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

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

Issue 132233042: Enable the embedded L1/EME support in WebView. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed boliu's comments and rebased. Created 6 years, 10 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 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();
+ }
+ }
}

Powered by Google App Engine
This is Rietveld 408576698