| Index: content/renderer/media/android/webmediaplayer_android.cc
|
| diff --git a/content/renderer/media/android/webmediaplayer_android.cc b/content/renderer/media/android/webmediaplayer_android.cc
|
| index 67aa9b097a3ed7e1755f7f42697bd01a9ab5a5a3..048994912aa7377092e315f14cfd0e39924acb5b 100644
|
| --- a/content/renderer/media/android/webmediaplayer_android.cc
|
| +++ b/content/renderer/media/android/webmediaplayer_android.cc
|
| @@ -139,6 +139,7 @@ WebMediaPlayerAndroid::WebMediaPlayerAndroid(
|
| has_size_info_(false),
|
| stream_texture_factory_(factory),
|
| needs_external_surface_(false),
|
| + has_valid_metadata_(false),
|
| video_frame_provider_client_(NULL),
|
| pending_playback_(false),
|
| player_type_(MEDIA_PLAYER_TYPE_URL),
|
| @@ -433,7 +434,8 @@ bool WebMediaPlayerAndroid::seeking() const {
|
| double WebMediaPlayerAndroid::duration() const {
|
| DCHECK(main_thread_checker_.CalledOnValidThread());
|
| // HTML5 spec requires duration to be NaN if readyState is HAVE_NOTHING
|
| - if (ready_state_ == WebMediaPlayer::ReadyStateHaveNothing)
|
| + if (ready_state_ == WebMediaPlayer::ReadyStateHaveNothing ||
|
| + !has_valid_metadata_)
|
| return std::numeric_limits<double>::quiet_NaN();
|
|
|
| if (duration_ == media::kInfiniteDuration())
|
| @@ -487,7 +489,8 @@ WebTimeRanges WebMediaPlayerAndroid::buffered() const {
|
| double WebMediaPlayerAndroid::maxTimeSeekable() const {
|
| // If we haven't even gotten to ReadyStateHaveMetadata yet then just
|
| // return 0 so that the seekable range is empty.
|
| - if (ready_state_ < WebMediaPlayer::ReadyStateHaveMetadata)
|
| + if (ready_state_ < WebMediaPlayer::ReadyStateHaveMetadata ||
|
| + !has_valid_metadata_)
|
| return 0.0;
|
|
|
| return duration();
|
| @@ -737,6 +740,8 @@ void WebMediaPlayerAndroid::OnMediaMetadataChanged(
|
| if (success)
|
| OnVideoSizeChanged(width, height);
|
|
|
| + has_valid_metadata_ = success;
|
| +
|
| if (need_to_signal_duration_changed)
|
| client_->durationChanged();
|
| }
|
| @@ -760,7 +765,7 @@ void WebMediaPlayerAndroid::OnPlaybackComplete() {
|
| }
|
|
|
| void WebMediaPlayerAndroid::OnBufferingUpdate(int percentage) {
|
| - buffered_[0].end = duration() * percentage / 100;
|
| + buffered_[0].end = has_valid_metadata_ ? duration() * percentage / 100 : 0;
|
| did_loading_progress_ = true;
|
| }
|
|
|
|
|