am 2c6f2816: am 5039e6da: Merge "fix for pause when loading" into honeycomb-mr1
* commit '2c6f2816d7308693a89f1214c2976512eb275d8a':
fix for pause when loading
diff --git a/core/java/android/webkit/HTML5VideoFullScreen.java b/core/java/android/webkit/HTML5VideoFullScreen.java
index f52fa66..0510f8b 100644
--- a/core/java/android/webkit/HTML5VideoFullScreen.java
+++ b/core/java/android/webkit/HTML5VideoFullScreen.java
@@ -114,6 +114,13 @@
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 4f042a6..25921bc 100644
--- a/core/java/android/webkit/HTML5VideoInline.java
+++ b/core/java/android/webkit/HTML5VideoInline.java
@@ -20,7 +20,9 @@
// 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 cd2264c..8ea73b5 100644
--- a/core/java/android/webkit/HTML5VideoView.java
+++ b/core/java/android/webkit/HTML5VideoView.java
@@ -65,6 +65,7 @@
// 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 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 @@
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 @@
mSaveSeekTime = position;
mAutostart = autoStart;
mTimer = null;
+ mPauseDuringPreparing = false;
}
protected HTML5VideoView() {
@@ -242,15 +249,17 @@
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 d12b965..094566f 100644
--- a/core/java/android/webkit/HTML5VideoViewProxy.java
+++ b/core/java/android/webkit/HTML5VideoViewProxy.java
@@ -224,10 +224,8 @@
}
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);
}