Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1763)

Unified Diff: content/renderer/media/android/webmediaplayer_android.cc

Issue 1570043002: Implement MediaSession on top of the WebMediaPlayerDelegate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@media_session
Patch Set: Merge. Cleanup. Fix RequestPlay. Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_);

Powered by Google App Engine
This is Rietveld 408576698