| Index: media/blink/webmediaplayer_cast_android.cc
|
| diff --git a/media/blink/webmediaplayer_cast_android.cc b/media/blink/webmediaplayer_cast_android.cc
|
| index fc3de1cf4a06cdf704c9f428d6b36a2ef4cffd78..7f827f3ab8eae4a6809f70f006e6f80f5c528755 100644
|
| --- a/media/blink/webmediaplayer_cast_android.cc
|
| +++ b/media/blink/webmediaplayer_cast_android.cc
|
| @@ -177,7 +177,7 @@ void WebMediaPlayerCast::Initialize(const GURL& url,
|
| blink::WebLocalFrame* frame) {
|
| player_manager_->Initialize(MEDIA_PLAYER_TYPE_REMOTE_ONLY, player_id_, url,
|
| frame->document().firstPartyForCookies(), 0,
|
| - frame->document().url(), true);
|
| + frame->document().url(), true, webmediaplayer_);
|
| is_player_initialized_ = true;
|
| }
|
|
|
| @@ -200,7 +200,9 @@ void WebMediaPlayerCast::requestRemotePlaybackControl() {
|
| void WebMediaPlayerCast::OnMediaMetadataChanged(base::TimeDelta duration,
|
| int width,
|
| int height,
|
| - bool success) {}
|
| + bool success) {
|
| + duration_ = duration;
|
| +}
|
|
|
| void WebMediaPlayerCast::OnPlaybackComplete() {
|
| DVLOG(1) << __FUNCTION__;
|
| @@ -249,8 +251,10 @@ void WebMediaPlayerCast::OnConnectedToRemoteDevice(
|
| is_remote_ = true;
|
| initializing_ = true;
|
| paused_ = false;
|
| - if (delegate_)
|
| - delegate_->DidPlay(webmediaplayer_);
|
| + if (delegate_) {
|
| + delegate_->DidPlay(webmediaplayer_, hasVideo(), false, is_remote_,
|
| + GetDuration());
|
| + }
|
| client_->playbackStateChanged();
|
|
|
| remote_playback_message_ = remote_playback_message;
|
| @@ -273,8 +277,10 @@ void WebMediaPlayerCast::play() {
|
| player_manager_->Start(player_id_);
|
| remote_time_at_ = base::TimeTicks::Now();
|
| paused_ = false;
|
| - if (delegate_)
|
| - delegate_->DidPlay(webmediaplayer_);
|
| + if (delegate_) {
|
| + delegate_->DidPlay(webmediaplayer_, hasVideo(), false, is_remote_,
|
| + GetDuration());
|
| + }
|
| }
|
|
|
| void WebMediaPlayerCast::pause() {
|
| @@ -291,7 +297,7 @@ void WebMediaPlayerCast::OnDisconnectedFromRemoteDevice() {
|
| if (!paused_) {
|
| paused_ = true;
|
| if (delegate_)
|
| - delegate_->DidPause(webmediaplayer_);
|
| + delegate_->DidPause(webmediaplayer_, false);
|
| }
|
| is_remote_ = false;
|
| double t = currentTime();
|
| @@ -310,8 +316,10 @@ void WebMediaPlayerCast::OnMediaPlayerPlay() {
|
| initializing_ = false;
|
| if (is_remote_ && paused_) {
|
| paused_ = false;
|
| - if (paused_)
|
| - delegate_->DidPlay(webmediaplayer_);
|
| + if (delegate_) {
|
| + delegate_->DidPlay(webmediaplayer_, hasVideo(), false, is_remote_,
|
| + GetDuration());
|
| + }
|
| remote_time_at_ = base::TimeTicks::Now();
|
| client_->playbackStateChanged();
|
| }
|
| @@ -325,7 +333,7 @@ void WebMediaPlayerCast::OnMediaPlayerPause() {
|
| if (is_remote_ && !paused_) {
|
| paused_ = true;
|
| if (delegate_)
|
| - delegate_->DidPause(webmediaplayer_);
|
| + delegate_->DidPause(webmediaplayer_, false);
|
| client_->playbackStateChanged();
|
| }
|
| }
|
| @@ -385,4 +393,12 @@ scoped_refptr<VideoFrame> WebMediaPlayerCast::GetCastingBanner() {
|
| base::Bind(&GLCBShim, context_3d_cb_));
|
| }
|
|
|
| +base::TimeDelta WebMediaPlayerCast::GetDuration() {
|
| + const double duration = webmediaplayer_->duration();
|
| + if (duration == std::numeric_limits<double>::infinity())
|
| + return kInfiniteDuration();
|
| +
|
| + return std::max(duration_, base::TimeDelta::FromSecondsD(duration));
|
| +}
|
| +
|
| } // namespace media
|
|
|