| 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 b0142d3354e36703b8974422ee17a1254c8f8a90..d82138de7a7e9dbd5d847582a9979a139e30029e 100644
|
| --- a/content/renderer/media/android/webmediaplayer_android.cc
|
| +++ b/content/renderer/media/android/webmediaplayer_android.cc
|
| @@ -177,8 +177,7 @@ WebMediaPlayerAndroid::WebMediaPlayerAndroid(
|
| scoped_refptr<StreamTextureFactory> factory,
|
| int frame_id,
|
| const media::WebMediaPlayerParams& params)
|
| - : RenderFrameObserver(RenderFrame::FromWebFrame(frame)),
|
| - frame_(frame),
|
| + : frame_(frame),
|
| client_(client),
|
| encrypted_client_(encrypted_client),
|
| delegate_(delegate),
|
| @@ -218,6 +217,7 @@ WebMediaPlayerAndroid::WebMediaPlayerAndroid(
|
| interpolator_(&default_tick_clock_),
|
| frame_id_(frame_id),
|
| suppress_deleting_texture_(false),
|
| + playback_completed_(false),
|
| weak_factory_(this) {
|
| DCHECK(player_manager_);
|
| DCHECK(cdm_factory_);
|
| @@ -225,11 +225,14 @@ WebMediaPlayerAndroid::WebMediaPlayerAndroid(
|
| DCHECK(main_thread_checker_.CalledOnValidThread());
|
| stream_texture_factory_->AddObserver(this);
|
|
|
| + if (delegate)
|
| + delegate->AddObserver(this);
|
| +
|
| player_id_ = player_manager_->RegisterMediaPlayer(this);
|
|
|
| #if defined(VIDEO_HOLE)
|
| const RendererPreferences& prefs =
|
| - static_cast<RenderFrameImpl*>(render_frame())
|
| + static_cast<RenderFrameImpl*>(RenderFrame::FromRoutingID(frame_id))
|
| ->render_view()
|
| ->renderer_preferences();
|
| force_use_overlay_embedded_video_ = prefs.use_view_overlay_for_all_video;
|
| @@ -443,6 +446,7 @@ void WebMediaPlayerAndroid::seek(double seconds) {
|
| DCHECK(main_thread_checker_.CalledOnValidThread());
|
| DVLOG(1) << __FUNCTION__ << "(" << seconds << ")";
|
|
|
| + playback_completed_ = false;
|
| base::TimeDelta new_seek_time = base::TimeDelta::FromSecondsD(seconds);
|
|
|
| if (seeking_) {
|
| @@ -843,6 +847,8 @@ void WebMediaPlayerAndroid::OnPlaybackComplete() {
|
| // playing after seek completes.
|
| if (seeking_ && seek_time_ == base::TimeDelta())
|
| player_manager_->Start(player_id_);
|
| + else
|
| + playback_completed_ = true;
|
| }
|
|
|
| void WebMediaPlayerAndroid::OnBufferingUpdate(int percentage) {
|
| @@ -1108,12 +1114,6 @@ void WebMediaPlayerAndroid::SuspendAndReleaseResources() {
|
| SetNeedsEstablishPeer(true);
|
| }
|
|
|
| -void WebMediaPlayerAndroid::OnDestruct() {
|
| - NOTREACHED() << "WebMediaPlayer should be destroyed before any "
|
| - "RenderFrameObserver::OnDestruct() gets called when "
|
| - "the RenderFrame goes away.";
|
| -}
|
| -
|
| void WebMediaPlayerAndroid::InitializePlayer(
|
| const GURL& url,
|
| const GURL& first_party_for_cookies,
|
| @@ -1451,9 +1451,9 @@ void WebMediaPlayerAndroid::UpdatePlayingState(bool is_playing) {
|
|
|
| if (delegate_) {
|
| if (is_playing)
|
| - delegate_->DidPlay(this);
|
| + delegate_->DidPlay(this, hasVideo(), hasAudio(), isRemote(), duration_);
|
| else
|
| - delegate_->DidPause(this);
|
| + delegate_->DidPause(this, playback_completed_);
|
| }
|
| }
|
|
|
| @@ -1835,6 +1835,20 @@ void WebMediaPlayerAndroid::OnWaitingForDecryptionKey() {
|
| encrypted_client_->didResumePlaybackBlockedForKey();
|
| }
|
|
|
| +void WebMediaPlayerAndroid::OnHidden() {}
|
| +
|
| +void WebMediaPlayerAndroid::OnShown() {}
|
| +
|
| +void WebMediaPlayerAndroid::OnPlay() {
|
| + play();
|
| + client_->playbackStateChanged();
|
| +}
|
| +
|
| +void WebMediaPlayerAndroid::OnPause() {
|
| + pause();
|
| + client_->playbackStateChanged();
|
| +}
|
| +
|
| void WebMediaPlayerAndroid::OnCdmContextReady(media::CdmContext* cdm_context) {
|
| DCHECK(!cdm_context_);
|
|
|
|
|