From b109c8877139077fe25fa26ea2e0961b7cbb8341 Mon Sep 17 00:00:00 2001 From: Teng-Hui Zhu Date: Wed, 4 May 2011 16:19:49 -0700 Subject: [PATCH] Exit full screen support on java side bug:4312214 Change-Id: Id3c755db0a824d42f1f8d1a0952f63d2078d163a --- core/java/android/webkit/HTML5VideoFullScreen.java | 5 +++-- core/java/android/webkit/HTML5VideoViewProxy.java | 14 ++++++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) 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);