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);
-        }
     }
 }