| 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 af0d25b27bd433d216335118bc5fad3ad8d7f163..607ab2d70d5567ec7b37855b7ab179ccda895327 100644
|
| --- a/content/renderer/media/android/webmediaplayer_android.cc
|
| +++ b/content/renderer/media/android/webmediaplayer_android.cc
|
| @@ -461,9 +461,9 @@ double WebMediaPlayerAndroid::duration() const {
|
| if (ready_state_ == WebMediaPlayer::ReadyStateHaveNothing)
|
| return std::numeric_limits<double>::quiet_NaN();
|
|
|
| - // TODO(wolenetz): Correctly handle durations that MediaSourcePlayer
|
| - // considers unseekable, including kInfiniteDuration().
|
| - // See http://crbug.com/248396
|
| + if (duration_ == media::kInfiniteDuration())
|
| + return std::numeric_limits<double>::infinity();
|
| +
|
| return duration_.InSecondsF();
|
| }
|
|
|
| @@ -502,8 +502,10 @@ double WebMediaPlayerAndroid::maxTimeSeekable() const {
|
| if (ready_state_ < WebMediaPlayer::ReadyStateHaveMetadata)
|
| return 0.0;
|
|
|
| - // TODO(hclam): If this stream is not seekable this should return 0.
|
| - return duration();
|
| + if (duration() == std::numeric_limits<double>::infinity())
|
| + return 0.0;
|
| +
|
| + return std::min(std::numeric_limits<int32>::max() / 1000.0, duration());
|
| }
|
|
|
| bool WebMediaPlayerAndroid::didLoadingProgress() const {
|
| @@ -619,9 +621,6 @@ void WebMediaPlayerAndroid::OnMediaMetadataChanged(
|
|
|
| // Update duration, if necessary, prior to ready state updates that may
|
| // cause duration() query.
|
| - // TODO(wolenetz): Correctly handle durations that MediaSourcePlayer
|
| - // considers unseekable, including kInfiniteDuration().
|
| - // See http://crbug.com/248396
|
| if (!ignore_metadata_duration_change_ && duration_ != duration) {
|
| duration_ = duration;
|
|
|
| @@ -830,9 +829,6 @@ void WebMediaPlayerAndroid::OnDurationChanged(const base::TimeDelta& duration) {
|
|
|
| // Cache the new duration value and trust it over any subsequent duration
|
| // values received in OnMediaMetadataChanged().
|
| - // TODO(wolenetz): Correctly handle durations that MediaSourcePlayer
|
| - // considers unseekable, including kInfiniteDuration().
|
| - // See http://crbug.com/248396
|
| duration_ = duration;
|
| ignore_metadata_duration_change_ = true;
|
|
|
|
|