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

Side by Side Diff: content/renderer/media/renderer_webmediaplayer_delegate.cc

Issue 1570043002: Implement MediaSession on top of the WebMediaPlayerDelegate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@media_session
Patch Set: Reorder. 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 unified diff | Download patch
OLDNEW
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
OLDNEW
« no previous file with comments | « content/renderer/media/renderer_webmediaplayer_delegate.h ('k') | content/renderer/media/webmediaplayer_ms.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698