diff --git a/core/java/android/webkit/HTML5VideoFullScreen.java b/core/java/android/webkit/HTML5VideoFullScreen.java index 091868368c84e..1004b5f09170d 100644 --- a/core/java/android/webkit/HTML5VideoFullScreen.java +++ b/core/java/android/webkit/HTML5VideoFullScreen.java @@ -208,7 +208,7 @@ public class HTML5VideoFullScreen extends HTML5VideoView // view. This happens in the WebChromeClient before this method // is invoked. pauseAndDispatch(mProxy); - + mProxy.dispatchOnStopFullScreen(); mLayout.removeView(getSurfaceView()); if (mProgressView != null) { @@ -253,7 +253,8 @@ public class HTML5VideoFullScreen extends HTML5VideoView client.onShowCustomView(mLayout, mCallback); // Plugins like Flash will draw over the video so hide // them while we're playing. - mProxy.getWebView().getViewManager().hideAll(); + if (webView.getViewManager() != null) + webView.getViewManager().hideAll(); mProgressView = client.getVideoLoadingProgressView(); if (mProgressView != null) { diff --git a/core/java/android/webkit/HTML5VideoViewProxy.java b/core/java/android/webkit/HTML5VideoViewProxy.java index d1b8cfc199a29..7d8669bffe7f7 100644 --- a/core/java/android/webkit/HTML5VideoViewProxy.java +++ b/core/java/android/webkit/HTML5VideoViewProxy.java @@ -65,6 +65,7 @@ class HTML5VideoViewProxy extends Handler private static final int ENDED = 201; private static final int POSTER_FETCHED = 202; private static final int PAUSED = 203; + private static final int STOPFULLSCREEN = 204; // Timer thread -> UI thread private static final int TIMEUPDATE = 300; @@ -287,8 +288,13 @@ class HTML5VideoViewProxy extends Handler } public void dispatchOnPaused() { - Message msg = Message.obtain(mWebCoreHandler, PAUSED); - mWebCoreHandler.sendMessage(msg); + Message msg = Message.obtain(mWebCoreHandler, PAUSED); + mWebCoreHandler.sendMessage(msg); + } + + public void dispatchOnStopFullScreen() { + Message msg = Message.obtain(mWebCoreHandler, STOPFULLSCREEN); + mWebCoreHandler.sendMessage(msg); } public void onTimeupdate() { @@ -560,6 +566,9 @@ class HTML5VideoViewProxy extends Handler case TIMEUPDATE: nativeOnTimeupdate(msg.arg1, mNativePointer); break; + case STOPFULLSCREEN: + nativeOnStopFullscreen(mNativePointer); + break; } } }; @@ -686,6 +695,7 @@ class HTML5VideoViewProxy extends Handler private native void nativeOnPaused(int nativePointer); private native void nativeOnPosterFetched(Bitmap poster, int nativePointer); private native void nativeOnTimeupdate(int position, int nativePointer); + private native void nativeOnStopFullscreen(int nativePointer); private native static boolean nativeSendSurfaceTexture(SurfaceTexture texture, int baseLayer, int videoLayerId, int textureName, int playerState);