From c4fbceb57bcfbabb6e370e2dd6448184dc116015 Mon Sep 17 00:00:00 2001 From: Andrei Popescu Date: Wed, 14 Apr 2010 13:30:23 +0100 Subject: Make sure the onended event is dispatched even when the user dismisses the video before it plays to completion. Fix bug: 2533272 Change-Id: I73f216f4f416f5fdca0bbba2244b88666f8f6eac --- core/java/android/webkit/HTML5VideoViewProxy.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'core/java/android/webkit/HTML5VideoViewProxy.java') diff --git a/core/java/android/webkit/HTML5VideoViewProxy.java b/core/java/android/webkit/HTML5VideoViewProxy.java index eee80251fd5d..eda2e72af376 100644 --- a/core/java/android/webkit/HTML5VideoViewProxy.java +++ b/core/java/android/webkit/HTML5VideoViewProxy.java @@ -132,6 +132,7 @@ class HTML5VideoViewProxy extends Handler if (mVideoView.isPlaying()) { mVideoView.stopPlayback(); } + mCurrentProxy.dispatchOnEnded(); mCurrentProxy = null; mLayout.removeView(mVideoView); mVideoView = null; @@ -154,7 +155,7 @@ class HTML5VideoViewProxy extends Handler if (mCurrentProxy != null) { // Some other video is already playing. Notify the caller that its playback ended. - proxy.playbackEnded(); + proxy.dispatchOnEnded(); return; } @@ -245,7 +246,10 @@ class HTML5VideoViewProxy extends Handler // MediaPlayer.OnCompletionListener; public void onCompletion(MediaPlayer mp) { - playbackEnded(); + // The video ended by itself, so we need to + // send a message to the UI thread to dismiss + // the video view and to return to the WebView. + sendMessage(obtainMessage(ENDED)); } // MediaPlayer.OnErrorListener @@ -254,11 +258,9 @@ class HTML5VideoViewProxy extends Handler return false; } - public void playbackEnded() { + public void dispatchOnEnded() { Message msg = Message.obtain(mWebCoreHandler, ENDED); mWebCoreHandler.sendMessage(msg); - // also send a message to ourselves to return to the WebView - sendMessage(obtainMessage(ENDED)); } public void onTimeupdate() { -- cgit v1.2.3