OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/media/renderer_webmediaplayer_delegate.h" | 5 #include "content/renderer/media/renderer_webmediaplayer_delegate.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include "content/common/frame_messages.h" | 9 #include "content/common/media/media_player_delegate_messages.h" |
10 #include "content/public/renderer/render_frame.h" | 10 #include "content/public/renderer/render_frame.h" |
11 #include "third_party/WebKit/public/platform/WebMediaPlayer.h" | 11 #include "third_party/WebKit/public/platform/WebMediaPlayer.h" |
12 | 12 |
13 namespace media { | 13 namespace media { |
14 | 14 |
15 RendererWebMediaPlayerDelegate::RendererWebMediaPlayerDelegate( | 15 RendererWebMediaPlayerDelegate::RendererWebMediaPlayerDelegate( |
16 content::RenderFrame* render_frame) | 16 content::RenderFrame* render_frame) |
17 : RenderFrameObserver(render_frame) {} | 17 : RenderFrameObserver(render_frame) {} |
18 | 18 |
19 RendererWebMediaPlayerDelegate::~RendererWebMediaPlayerDelegate() {} | 19 RendererWebMediaPlayerDelegate::~RendererWebMediaPlayerDelegate() {} |
20 | 20 |
21 void RendererWebMediaPlayerDelegate::DidPlay(blink::WebMediaPlayer* player) { | 21 int RendererWebMediaPlayerDelegate::AddObserver(Observer* observer) { |
22 has_played_media_ = true; | 22 return id_map_.Add(observer); |
23 Send(new FrameHostMsg_MediaPlayingNotification( | |
24 routing_id(), reinterpret_cast<int64_t>(player), player->hasVideo(), | |
25 player->hasAudio(), player->isRemote())); | |
26 } | 23 } |
27 | 24 |
28 void RendererWebMediaPlayerDelegate::DidPause(blink::WebMediaPlayer* player) { | 25 void RendererWebMediaPlayerDelegate::RemoveObserver(int delegate_id) { |
29 Send(new FrameHostMsg_MediaPausedNotification( | 26 DCHECK(id_map_.Lookup(delegate_id)); |
30 routing_id(), reinterpret_cast<int64_t>(player))); | 27 id_map_.Remove(delegate_id); |
31 } | 28 } |
32 | 29 |
33 void RendererWebMediaPlayerDelegate::PlayerGone(blink::WebMediaPlayer* player) { | 30 void RendererWebMediaPlayerDelegate::DidPlay(int delegate_id, |
34 DidPause(player); | 31 bool has_video, |
| 32 bool has_audio, |
| 33 bool is_remote, |
| 34 base::TimeDelta duration) { |
| 35 DCHECK(id_map_.Lookup(delegate_id)); |
| 36 has_played_media_ = true; |
| 37 Send(new MediaPlayerDelegateHostMsg_OnMediaPlaying( |
| 38 routing_id(), delegate_id, has_video, has_audio, is_remote, duration)); |
35 } | 39 } |
36 | 40 |
37 void RendererWebMediaPlayerDelegate::AddObserver(Observer* observer) { | 41 void RendererWebMediaPlayerDelegate::DidPause(int delegate_id, |
38 observer_list_.AddObserver(observer); | 42 bool reached_end_of_stream) { |
| 43 DCHECK(id_map_.Lookup(delegate_id)); |
| 44 Send(new MediaPlayerDelegateHostMsg_OnMediaPaused(routing_id(), delegate_id, |
| 45 reached_end_of_stream)); |
39 } | 46 } |
40 | 47 |
41 void RendererWebMediaPlayerDelegate::RemoveObserver(Observer* observer) { | 48 void RendererWebMediaPlayerDelegate::PlayerGone(int delegate_id) { |
42 observer_list_.RemoveObserver(observer); | 49 DCHECK(id_map_.Lookup(delegate_id)); |
43 } | 50 Send(new MediaPlayerDelegateHostMsg_OnMediaDestroyed(routing_id(), |
44 | 51 delegate_id)); |
45 void RendererWebMediaPlayerDelegate::WasHidden() { | |
46 FOR_EACH_OBSERVER(Observer, observer_list_, OnHidden()); | |
47 } | |
48 | |
49 void RendererWebMediaPlayerDelegate::WasShown() { | |
50 FOR_EACH_OBSERVER(Observer, observer_list_, OnShown()); | |
51 } | 52 } |
52 | 53 |
53 bool RendererWebMediaPlayerDelegate::IsHidden() { | 54 bool RendererWebMediaPlayerDelegate::IsHidden() { |
54 return render_frame()->IsHidden(); | 55 return render_frame()->IsHidden(); |
55 } | 56 } |
56 | 57 |
| 58 void RendererWebMediaPlayerDelegate::WasHidden() { |
| 59 for (IDMap<Observer>::iterator it(&id_map_); !it.IsAtEnd(); it.Advance()) |
| 60 it.GetCurrentValue()->OnHidden(); |
| 61 } |
| 62 |
| 63 void RendererWebMediaPlayerDelegate::WasShown() { |
| 64 for (IDMap<Observer>::iterator it(&id_map_); !it.IsAtEnd(); it.Advance()) |
| 65 it.GetCurrentValue()->OnShown(); |
| 66 } |
| 67 |
| 68 bool RendererWebMediaPlayerDelegate::OnMessageReceived( |
| 69 const IPC::Message& msg) { |
| 70 bool handled = true; |
| 71 IPC_BEGIN_MESSAGE_MAP(RendererWebMediaPlayerDelegate, msg) |
| 72 IPC_MESSAGE_HANDLER(MediaPlayerDelegateMsg_Pause, OnMediaDelegatePause) |
| 73 IPC_MESSAGE_HANDLER(MediaPlayerDelegateMsg_Play, OnMediaDelegatePlay) |
| 74 IPC_MESSAGE_HANDLER(MediaPlayerDelegateMsg_UpdateVolumeMultiplier, |
| 75 OnMediaDelegateVolumeMultiplierUpdate) |
| 76 IPC_MESSAGE_UNHANDLED(handled = false) |
| 77 IPC_END_MESSAGE_MAP() |
| 78 return handled; |
| 79 } |
| 80 |
| 81 void RendererWebMediaPlayerDelegate::OnMediaDelegatePause(int delegate_id) { |
| 82 Observer* observer = id_map_.Lookup(delegate_id); |
| 83 if (observer) |
| 84 observer->OnPause(); |
| 85 } |
| 86 |
| 87 void RendererWebMediaPlayerDelegate::OnMediaDelegatePlay(int delegate_id) { |
| 88 Observer* observer = id_map_.Lookup(delegate_id); |
| 89 if (observer) |
| 90 observer->OnPlay(); |
| 91 } |
| 92 |
| 93 void RendererWebMediaPlayerDelegate::OnMediaDelegateVolumeMultiplierUpdate( |
| 94 int delegate_id, |
| 95 double multiplier) { |
| 96 Observer* observer = id_map_.Lookup(delegate_id); |
| 97 if (observer) |
| 98 observer->OnVolumeMultiplierUpdate(multiplier); |
| 99 } |
| 100 |
57 } // namespace media | 101 } // namespace media |
OLD | NEW |