Index: content/renderer/media/renderer_webmediaplayer_delegate.cc |
diff --git a/content/renderer/media/renderer_webmediaplayer_delegate.cc b/content/renderer/media/renderer_webmediaplayer_delegate.cc |
index 722b13d5440a1cc0d068e1f9c85da73da4f6e79a..8cce6974f054a31e1e9d3691ee6c66faad831de4 100644 |
--- a/content/renderer/media/renderer_webmediaplayer_delegate.cc |
+++ b/content/renderer/media/renderer_webmediaplayer_delegate.cc |
@@ -18,28 +18,43 @@ RendererWebMediaPlayerDelegate::RendererWebMediaPlayerDelegate( |
RendererWebMediaPlayerDelegate::~RendererWebMediaPlayerDelegate() {} |
-void RendererWebMediaPlayerDelegate::DidPlay(blink::WebMediaPlayer* player) { |
- has_played_media_ = true; |
- Send(new FrameHostMsg_MediaPlayingNotification( |
- routing_id(), reinterpret_cast<int64_t>(player), player->hasVideo(), |
- player->hasAudio(), player->isRemote())); |
+// static |
+int64_t RendererWebMediaPlayerDelegate::GetPlayerId(Observer* observer) { |
+ return reinterpret_cast<int64_t>(observer); |
} |
-void RendererWebMediaPlayerDelegate::DidPause(blink::WebMediaPlayer* player) { |
- Send(new FrameHostMsg_MediaPausedNotification( |
- routing_id(), reinterpret_cast<int64_t>(player))); |
+void RendererWebMediaPlayerDelegate::AddObserver(Observer* observer) { |
+ observer_list_.AddObserver(observer); |
} |
-void RendererWebMediaPlayerDelegate::PlayerGone(blink::WebMediaPlayer* player) { |
- DidPause(player); |
+void RendererWebMediaPlayerDelegate::DidPlay(Observer* observer, |
+ bool has_video, |
+ bool has_audio, |
+ bool is_remote, |
+ base::TimeDelta duration) { |
+ DCHECK(observer_list_.HasObserver(observer)); |
+ has_played_media_ = true; |
+ Send(new FrameHostMsg_MediaPlayingNotification( |
+ routing_id(), GetPlayerId(observer), has_video, has_audio, is_remote, |
+ duration)); |
} |
-void RendererWebMediaPlayerDelegate::AddObserver(Observer* observer) { |
- observer_list_.AddObserver(observer); |
+void RendererWebMediaPlayerDelegate::DidPause(Observer* observer, |
+ bool reached_end_of_stream) { |
+ DCHECK(observer_list_.HasObserver(observer)); |
+ Send(new FrameHostMsg_MediaPausedNotification( |
+ routing_id(), GetPlayerId(observer), reached_end_of_stream)); |
} |
-void RendererWebMediaPlayerDelegate::RemoveObserver(Observer* observer) { |
+void RendererWebMediaPlayerDelegate::PlayerGone(Observer* observer) { |
+ DCHECK(observer_list_.HasObserver(observer)); |
observer_list_.RemoveObserver(observer); |
+ Send(new FrameHostMsg_MediaDestroyedNotification(routing_id(), |
+ GetPlayerId(observer))); |
+} |
+ |
+bool RendererWebMediaPlayerDelegate::IsHidden() { |
+ return render_frame()->IsHidden(); |
} |
void RendererWebMediaPlayerDelegate::WasHidden() { |
@@ -50,8 +65,37 @@ void RendererWebMediaPlayerDelegate::WasShown() { |
FOR_EACH_OBSERVER(Observer, observer_list_, OnShown()); |
} |
-bool RendererWebMediaPlayerDelegate::IsHidden() { |
- return render_frame()->IsHidden(); |
+bool RendererWebMediaPlayerDelegate::OnMessageReceived( |
+ const IPC::Message& msg) { |
+ bool handled = true; |
+ IPC_BEGIN_MESSAGE_MAP(RendererWebMediaPlayerDelegate, msg) |
+ IPC_MESSAGE_HANDLER(FrameMsg_MediaDelegatePause, OnMediaDelegatePause) |
+ IPC_MESSAGE_HANDLER(FrameMsg_MediaDelegatePlay, OnMediaDelegatePlay) |
+ IPC_MESSAGE_UNHANDLED(handled = false) |
+ IPC_END_MESSAGE_MAP() |
+ return handled; |
+} |
+ |
+void RendererWebMediaPlayerDelegate::OnMediaDelegatePause( |
+ int64_t player_cookie) { |
+ // Translate the player cookie back to a Observer instance and make sure it's |
+ // still a valid instance. |
+ Observer* observer = reinterpret_cast<Observer*>(player_cookie); |
+ if (!observer_list_.HasObserver(observer)) |
+ return; |
+ |
+ observer->OnPause(); |
+} |
+ |
+void RendererWebMediaPlayerDelegate::OnMediaDelegatePlay( |
+ int64_t player_cookie) { |
+ // Translate the player cookie back to a Observer instance and make sure it's |
+ // still a valid instance. |
+ Observer* observer = reinterpret_cast<Observer*>(player_cookie); |
+ if (!observer_list_.HasObserver(observer)) |
+ return; |
+ |
+ observer->OnPlay(); |
} |
} // namespace media |