summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/webkit/HTML5VideoFullScreen.java7
-rw-r--r--core/java/android/webkit/HTML5VideoInline.java4
-rw-r--r--core/java/android/webkit/HTML5VideoView.java21
-rw-r--r--core/java/android/webkit/HTML5VideoViewProxy.java6
4 files changed, 27 insertions, 11 deletions
diff --git a/core/java/android/webkit/HTML5VideoFullScreen.java b/core/java/android/webkit/HTML5VideoFullScreen.java
index f52fa66c27fb..0510f8b2290a 100644
--- a/core/java/android/webkit/HTML5VideoFullScreen.java
+++ b/core/java/android/webkit/HTML5VideoFullScreen.java
@@ -114,6 +114,13 @@ public class HTML5VideoFullScreen extends HTML5VideoView
return mVideoSurfaceView;
}
+ @Override
+ public void start() {
+ if (getAutostart()) {
+ super.start();
+ }
+ }
+
HTML5VideoFullScreen(Context context, int videoLayerId, int position,
boolean autoStart) {
mVideoSurfaceView = new VideoSurfaceView(context);
diff --git a/core/java/android/webkit/HTML5VideoInline.java b/core/java/android/webkit/HTML5VideoInline.java
index 4f042a6af5f7..25921bc86a52 100644
--- a/core/java/android/webkit/HTML5VideoInline.java
+++ b/core/java/android/webkit/HTML5VideoInline.java
@@ -20,7 +20,9 @@ public class HTML5VideoInline extends HTML5VideoView{
// Video control FUNCTIONS:
@Override
public void start() {
- super.start();
+ if (!getPauseDuringPreparing()) {
+ super.start();
+ }
}
HTML5VideoInline(int videoLayerId, int position,
diff --git a/core/java/android/webkit/HTML5VideoView.java b/core/java/android/webkit/HTML5VideoView.java
index cd2264c41342..8ea73b50d4fb 100644
--- a/core/java/android/webkit/HTML5VideoView.java
+++ b/core/java/android/webkit/HTML5VideoView.java
@@ -65,6 +65,7 @@ public class HTML5VideoView implements MediaPlayer.OnPreparedListener{
// The spec says the timer should fire every 250 ms or less.
private static final int TIMEUPDATE_PERIOD = 250; // ms
+ protected boolean mPauseDuringPreparing;
// common Video control FUNCTIONS:
public void start() {
if (mCurrentState == STATE_PREPARED) {
@@ -83,8 +84,9 @@ public class HTML5VideoView implements MediaPlayer.OnPreparedListener{
public void pause() {
if (mCurrentState == STATE_PREPARED && mPlayer.isPlaying()) {
mPlayer.pause();
+ } else if (mCurrentState == STATE_NOTPREPARED) {
+ mPauseDuringPreparing = true;
}
-
// Delete the Timer to stop it since there is no stop call.
if (mTimer != null) {
mTimer.purge();
@@ -133,6 +135,10 @@ public class HTML5VideoView implements MediaPlayer.OnPreparedListener{
return mAutostart;
}
+ public boolean getPauseDuringPreparing() {
+ return mPauseDuringPreparing;
+ }
+
// Every time we start a new Video, we create a VideoView and a MediaPlayer
public void init(int videoLayerId, int position, boolean autoStart) {
mPlayer = new MediaPlayer();
@@ -142,6 +148,7 @@ public class HTML5VideoView implements MediaPlayer.OnPreparedListener{
mSaveSeekTime = position;
mAutostart = autoStart;
mTimer = null;
+ mPauseDuringPreparing = false;
}
protected HTML5VideoView() {
@@ -242,15 +249,17 @@ public class HTML5VideoView implements MediaPlayer.OnPreparedListener{
if (mProxy != null) {
mProxy.onPrepared(mp);
}
+ if (mPauseDuringPreparing) {
+ pauseAndDispatch(mProxy);
+ mPauseDuringPreparing = false;
+ }
}
// Pause the play and update the play/pause button
public void pauseAndDispatch(HTML5VideoViewProxy proxy) {
- if (isPlaying()) {
- pause();
- if (proxy != null) {
- proxy.dispatchOnPaused();
- }
+ pause();
+ if (proxy != null) {
+ proxy.dispatchOnPaused();
}
}
diff --git a/core/java/android/webkit/HTML5VideoViewProxy.java b/core/java/android/webkit/HTML5VideoViewProxy.java
index d12b965f66f0..094566f229ab 100644
--- a/core/java/android/webkit/HTML5VideoViewProxy.java
+++ b/core/java/android/webkit/HTML5VideoViewProxy.java
@@ -224,10 +224,8 @@ class HTML5VideoViewProxy extends Handler
}
public static void onPrepared() {
- if (!mHTML5VideoView.isFullScreenMode() ||
- mHTML5VideoView.isFullScreenMode() &&
- mHTML5VideoView.getAutostart() )
- mHTML5VideoView.start();
+ // The VideoView will decide whether to really kick off to play.
+ mHTML5VideoView.start();
if (mBaseLayer != 0) {
setBaseLayer(mBaseLayer);
}