Add plumbing for the new fullscreen video path.
Required for some upstream changes - please see:
https://codereview.chromium.org/315973004/
Change-Id: I68a701a8552b4af9fd393b917e768702a7ab2611
diff --git a/chromium/java/com/android/webview/chromium/WebViewChromium.java b/chromium/java/com/android/webview/chromium/WebViewChromium.java
index 54b2fc0..a3fd6a4 100644
--- a/chromium/java/com/android/webview/chromium/WebViewChromium.java
+++ b/chromium/java/com/android/webview/chromium/WebViewChromium.java
@@ -249,7 +249,8 @@
private void initForReal() {
mAwContents = new AwContents(mFactory.getBrowserContext(), mWebView, mWebView.getContext(),
- new InternalAccessAdapter(), mContentsClientAdapter, mWebSettings.getAwSettings());
+ new InternalAccessAdapter(), new WebViewNativeGLDelegate(),
+ mContentsClientAdapter, mWebSettings.getAwSettings());
if (mAppTargetSdkVersion >= Build.VERSION_CODES.KITKAT) {
// On KK and above, favicons are automatically downloaded as the method
@@ -1718,9 +1719,6 @@
}
mAwContents.onDetachedFromWindow();
- if (mGLfunctor != null) {
- mGLfunctor.detach();
- }
}
@Override
@@ -2026,6 +2024,44 @@
mAwContents.computeScroll();
}
+ // AwContents.NativeGLDelegate implementation --------------------------------------
+ private class WebViewNativeGLDelegate implements AwContents.NativeGLDelegate {
+ public boolean requestDrawGL(Canvas canvas) {
+ return requestDrawGL(canvas, false, mWebView);
+ }
+
+ // @Override
+ public boolean requestDrawGL(Canvas canvas, boolean waitForCompletion,
+ View containerView) {
+ if (mGLfunctor == null) {
+ mGLfunctor = new DrawGLFunctor(mAwContents.getAwDrawGLViewContext());
+ }
+ boolean result = mGLfunctor.requestDrawGL((HardwareCanvas)canvas,
+ containerView.getViewRootImpl());
+ if (result && waitForCompletion) {
+ Runnable r = new Runnable() {
+ @Override
+ public void run() {
+ }
+ };
+ result = containerView.executeHardwareAction(r);
+ }
+ return result;
+ }
+
+ // @Override
+ public boolean executeHardwareAction(Runnable action) {
+ return mWebView.executeHardwareAction(action);
+ }
+
+ @Override
+ public void detachGLFunctor() {
+ if (mGLfunctor != null) {
+ mGLfunctor.detach();
+ }
+ }
+ }
+
// AwContents.InternalAccessDelegate implementation --------------------------------------
private class InternalAccessAdapter implements AwContents.InternalAccessDelegate {
@Override
@@ -2106,32 +2142,5 @@
public void setMeasuredDimension(int measuredWidth, int measuredHeight) {
mWebViewPrivate.setMeasuredDimension(measuredWidth, measuredHeight);
}
-
- public boolean requestDrawGL(Canvas canvas) {
- return requestDrawGL(canvas, false);
- }
-
- // @Override
- public boolean requestDrawGL(Canvas canvas, boolean waitForCompletion) {
- if (mGLfunctor == null) {
- mGLfunctor = new DrawGLFunctor(mAwContents.getAwDrawGLViewContext());
- }
- boolean result = mGLfunctor.requestDrawGL((HardwareCanvas)canvas,
- mWebView.getViewRootImpl());
- if (result && waitForCompletion) {
- Runnable r = new Runnable() {
- @Override
- public void run() {
- }
- };
- result = mWebView.executeHardwareAction(r);
- }
- return result;
- }
-
- // @Override
- public boolean executeHardwareAction(Runnable action) {
- return mWebView.executeHardwareAction(action);
- }
}
}