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

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: Merge. Cleanup. Fix RequestPlay. 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/frame_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 // static
22 has_played_media_ = true; 22 int64_t RendererWebMediaPlayerDelegate::GetPlayerId(Observer* observer) {
23 Send(new FrameHostMsg_MediaPlayingNotification( 23 return reinterpret_cast<int64_t>(observer);
24 routing_id(), reinterpret_cast<int64_t>(player), player->hasVideo(),
25 player->hasAudio(), player->isRemote()));
26 }
27
28 void RendererWebMediaPlayerDelegate::DidPause(blink::WebMediaPlayer* player) {
29 Send(new FrameHostMsg_MediaPausedNotification(
30 routing_id(), reinterpret_cast<int64_t>(player)));
31 }
32
33 void RendererWebMediaPlayerDelegate::PlayerGone(blink::WebMediaPlayer* player) {
34 DidPause(player);
35 } 24 }
36 25
37 void RendererWebMediaPlayerDelegate::AddObserver(Observer* observer) { 26 void RendererWebMediaPlayerDelegate::AddObserver(Observer* observer) {
38 observer_list_.AddObserver(observer); 27 observer_list_.AddObserver(observer);
39 } 28 }
40 29
41 void RendererWebMediaPlayerDelegate::RemoveObserver(Observer* observer) { 30 void RendererWebMediaPlayerDelegate::DidPlay(Observer* observer,
31 bool has_video,
32 bool has_audio,
33 bool is_remote,
34 base::TimeDelta duration) {
35 DCHECK(observer_list_.HasObserver(observer));
36 has_played_media_ = true;
37 Send(new FrameHostMsg_MediaPlayingNotification(
38 routing_id(), GetPlayerId(observer), has_video, has_audio, is_remote,
39 duration));
40 }
41
42 void RendererWebMediaPlayerDelegate::DidPause(Observer* observer,
43 bool reached_end_of_stream) {
44 DCHECK(observer_list_.HasObserver(observer));
45 Send(new FrameHostMsg_MediaPausedNotification(
46 routing_id(), GetPlayerId(observer), reached_end_of_stream));
47 }
48
49 void RendererWebMediaPlayerDelegate::PlayerGone(Observer* observer) {
50 DCHECK(observer_list_.HasObserver(observer));
42 observer_list_.RemoveObserver(observer); 51 observer_list_.RemoveObserver(observer);
52 Send(new FrameHostMsg_MediaDestroyedNotification(routing_id(),
53 GetPlayerId(observer)));
54 }
55
56 bool RendererWebMediaPlayerDelegate::IsHidden() {
57 return render_frame()->IsHidden();
43 } 58 }
44 59
45 void RendererWebMediaPlayerDelegate::WasHidden() { 60 void RendererWebMediaPlayerDelegate::WasHidden() {
46 FOR_EACH_OBSERVER(Observer, observer_list_, OnHidden()); 61 FOR_EACH_OBSERVER(Observer, observer_list_, OnHidden());
47 } 62 }
48 63
49 void RendererWebMediaPlayerDelegate::WasShown() { 64 void RendererWebMediaPlayerDelegate::WasShown() {
50 FOR_EACH_OBSERVER(Observer, observer_list_, OnShown()); 65 FOR_EACH_OBSERVER(Observer, observer_list_, OnShown());
51 } 66 }
52 67
53 bool RendererWebMediaPlayerDelegate::IsHidden() { 68 bool RendererWebMediaPlayerDelegate::OnMessageReceived(
54 return render_frame()->IsHidden(); 69 const IPC::Message& msg) {
70 bool handled = true;
71 IPC_BEGIN_MESSAGE_MAP(RendererWebMediaPlayerDelegate, msg)
72 IPC_MESSAGE_HANDLER(FrameMsg_MediaDelegatePause, OnMediaDelegatePause)
73 IPC_MESSAGE_HANDLER(FrameMsg_MediaDelegatePlay, OnMediaDelegatePlay)
74 IPC_MESSAGE_UNHANDLED(handled = false)
75 IPC_END_MESSAGE_MAP()
76 return handled;
77 }
78
79 void RendererWebMediaPlayerDelegate::OnMediaDelegatePause(
80 int64_t player_cookie) {
81 // Translate the player cookie back to a Observer instance and make sure it's
82 // still a valid instance.
83 Observer* observer = reinterpret_cast<Observer*>(player_cookie);
84 if (!observer_list_.HasObserver(observer))
85 return;
86
87 observer->OnPause();
88 }
89
90 void RendererWebMediaPlayerDelegate::OnMediaDelegatePlay(
91 int64_t player_cookie) {
92 // Translate the player cookie back to a Observer instance and make sure it's
93 // still a valid instance.
94 Observer* observer = reinterpret_cast<Observer*>(player_cookie);
95 if (!observer_list_.HasObserver(observer))
96 return;
97
98 observer->OnPlay();
55 } 99 }
56 100
57 } // namespace media 101 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698