Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1708ad53 authored by Ben Murdoch's avatar Ben Murdoch
Browse files

Hide plugin views when we start playing HTML5 video

Plugins like Flash draw directly to the screen on top
of all other views - including the fullscreen HTML5 video
view. This means that if you start an HTML5 video on a page
also serving a flash clip then flash will obscure the video.

This patch hides plugin views before start the video and shows
them again when the VideoView is destroyed.

Bug: 3183521
Change-Id: I9839c47e9d64b081651b952057e9283630362b29
parent fac4a689
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -138,6 +138,10 @@ class HTML5VideoViewProxy extends Handler
                        mCurrentProxy.dispatchOnEnded();
                    else
                        mCurrentProxy.dispatchOnPaused();

                    // Re enable plugin views.
                    mCurrentProxy.getWebView().getViewManager().showAll();

                    isVideoSelfEnded = false;
                    mCurrentProxy = null;
                    mLayout.removeView(mVideoView);
@@ -199,6 +203,9 @@ class HTML5VideoViewProxy extends Handler
            mTimer = new Timer();
            mVideoView.start();
            client.onShowCustomView(mLayout, mCallback);
            // Plugins like Flash will draw over the video so hide
            // them while we're playing.
            mCurrentProxy.getWebView().getViewManager().hideAll();
        }

        public static boolean isPlaying(HTML5VideoViewProxy proxy) {
@@ -599,6 +606,10 @@ class HTML5VideoViewProxy extends Handler
        return new HTML5VideoViewProxy(webViewCore.getWebView(), nativePtr);
    }

    /* package */ WebView getWebView() {
        return mWebView;
    }

    private native void nativeOnPrepared(int duration, int width, int height, int nativePointer);
    private native void nativeOnEnded(int nativePointer);
    private native void nativeOnPaused(int nativePointer);
+4 −0
Original line number Diff line number Diff line
@@ -7845,6 +7845,10 @@ public class WebView extends AbsoluteLayout
        nativeUpdateCachedTextfield(updatedText, mTextGeneration);
    }

    /* package */ ViewManager getViewManager() {
        return mViewManager;
    }

    private native int nativeCacheHitFramePointer();
    private native Rect nativeCacheHitNodeBounds();
    private native int nativeCacheHitNodePointer();