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

Unified Diff: media/blink/webmediaplayer_cast_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: Rebase yet again. 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: 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

Powered by Google App Engine
This is Rietveld 408576698