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..2c7054648da8bc4c9c4da3fc1fe9fe8dba8df94c 100644 |
--- a/content/renderer/media/renderer_webmediaplayer_delegate.cc |
+++ b/content/renderer/media/renderer_webmediaplayer_delegate.cc |
@@ -6,7 +6,7 @@ |
#include <stdint.h> |
-#include "content/common/frame_messages.h" |
+#include "content/common/media/media_player_delegate_messages.h" |
#include "content/public/renderer/render_frame.h" |
#include "third_party/WebKit/public/platform/WebMediaPlayer.h" |
@@ -18,40 +18,84 @@ 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())); |
+int RendererWebMediaPlayerDelegate::AddObserver(Observer* observer) { |
+ return id_map_.Add(observer); |
} |
-void RendererWebMediaPlayerDelegate::DidPause(blink::WebMediaPlayer* player) { |
- Send(new FrameHostMsg_MediaPausedNotification( |
- routing_id(), reinterpret_cast<int64_t>(player))); |
+void RendererWebMediaPlayerDelegate::RemoveObserver(int delegate_id) { |
+ DCHECK(id_map_.Lookup(delegate_id)); |
+ id_map_.Remove(delegate_id); |
} |
-void RendererWebMediaPlayerDelegate::PlayerGone(blink::WebMediaPlayer* player) { |
- DidPause(player); |
+void RendererWebMediaPlayerDelegate::DidPlay(int delegate_id, |
+ bool has_video, |
+ bool has_audio, |
+ bool is_remote, |
+ base::TimeDelta duration) { |
+ DCHECK(id_map_.Lookup(delegate_id)); |
+ has_played_media_ = true; |
+ Send(new MediaPlayerDelegateHostMsg_OnMediaPlaying( |
+ routing_id(), delegate_id, has_video, has_audio, is_remote, duration)); |
} |
-void RendererWebMediaPlayerDelegate::AddObserver(Observer* observer) { |
- observer_list_.AddObserver(observer); |
+void RendererWebMediaPlayerDelegate::DidPause(int delegate_id, |
+ bool reached_end_of_stream) { |
+ DCHECK(id_map_.Lookup(delegate_id)); |
+ Send(new MediaPlayerDelegateHostMsg_OnMediaPaused(routing_id(), delegate_id, |
+ reached_end_of_stream)); |
} |
-void RendererWebMediaPlayerDelegate::RemoveObserver(Observer* observer) { |
- observer_list_.RemoveObserver(observer); |
+void RendererWebMediaPlayerDelegate::PlayerGone(int delegate_id) { |
+ DCHECK(id_map_.Lookup(delegate_id)); |
+ Send(new MediaPlayerDelegateHostMsg_OnMediaDestroyed(routing_id(), |
+ delegate_id)); |
+} |
+ |
+bool RendererWebMediaPlayerDelegate::IsHidden() { |
+ return render_frame()->IsHidden(); |
} |
void RendererWebMediaPlayerDelegate::WasHidden() { |
- FOR_EACH_OBSERVER(Observer, observer_list_, OnHidden()); |
+ for (IDMap<Observer>::iterator it(&id_map_); !it.IsAtEnd(); it.Advance()) |
+ it.GetCurrentValue()->OnHidden(); |
} |
void RendererWebMediaPlayerDelegate::WasShown() { |
- FOR_EACH_OBSERVER(Observer, observer_list_, OnShown()); |
+ for (IDMap<Observer>::iterator it(&id_map_); !it.IsAtEnd(); it.Advance()) |
+ it.GetCurrentValue()->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(MediaPlayerDelegateMsg_Pause, OnMediaDelegatePause) |
+ IPC_MESSAGE_HANDLER(MediaPlayerDelegateMsg_Play, OnMediaDelegatePlay) |
+ IPC_MESSAGE_HANDLER(MediaPlayerDelegateMsg_UpdateVolumeMultiplier, |
+ OnMediaDelegateVolumeMultiplierUpdate) |
+ IPC_MESSAGE_UNHANDLED(handled = false) |
+ IPC_END_MESSAGE_MAP() |
+ return handled; |
+} |
+ |
+void RendererWebMediaPlayerDelegate::OnMediaDelegatePause(int delegate_id) { |
+ Observer* observer = id_map_.Lookup(delegate_id); |
+ if (observer) |
+ observer->OnPause(); |
+} |
+ |
+void RendererWebMediaPlayerDelegate::OnMediaDelegatePlay(int delegate_id) { |
+ Observer* observer = id_map_.Lookup(delegate_id); |
+ if (observer) |
+ observer->OnPlay(); |
+} |
+ |
+void RendererWebMediaPlayerDelegate::OnMediaDelegateVolumeMultiplierUpdate( |
+ int delegate_id, |
+ double multiplier) { |
+ Observer* observer = id_map_.Lookup(delegate_id); |
+ if (observer) |
+ observer->OnVolumeMultiplierUpdate(multiplier); |
} |
} // namespace media |