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

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: 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 "third_party/WebKit/public/platform/WebMediaPlayer.h" 10 #include "third_party/WebKit/public/platform/WebMediaPlayer.h"
11 11
12 namespace media { 12 namespace media {
13 13
14 RendererWebMediaPlayerDelegate::RendererWebMediaPlayerDelegate( 14 RendererWebMediaPlayerDelegate::RendererWebMediaPlayerDelegate(
15 content::RenderFrame* render_frame) 15 content::RenderFrame* render_frame)
16 : RenderFrameObserver(render_frame) {} 16 : RenderFrameObserver(render_frame) {}
17 17
18 RendererWebMediaPlayerDelegate::~RendererWebMediaPlayerDelegate() {} 18 RendererWebMediaPlayerDelegate::~RendererWebMediaPlayerDelegate() {}
19 19
20 void RendererWebMediaPlayerDelegate::DidPlay(blink::WebMediaPlayer* player) { 20 void RendererWebMediaPlayerDelegate::DidPlay(blink::WebMediaPlayer* player) {
21 has_played_media_ = true; 21 has_played_media_ = true;
22 players_.insert(player);
22 Send(new FrameHostMsg_MediaPlayingNotification( 23 Send(new FrameHostMsg_MediaPlayingNotification(
23 routing_id(), reinterpret_cast<int64_t>(player), player->hasVideo(), 24 routing_id(), reinterpret_cast<int64_t>(player), player->hasVideo(),
24 player->hasAudio(), player->isRemote())); 25 player->hasAudio(), player->isRemote(),
26 base::TimeDelta::FromSecondsD(player->duration())));
25 } 27 }
26 28
27 void RendererWebMediaPlayerDelegate::DidPause(blink::WebMediaPlayer* player) { 29 void RendererWebMediaPlayerDelegate::DidPause(blink::WebMediaPlayer* player) {
30 DCHECK_EQ(players_.count(player), 1u);
28 Send(new FrameHostMsg_MediaPausedNotification( 31 Send(new FrameHostMsg_MediaPausedNotification(
32 routing_id(), reinterpret_cast<int64_t>(player),
33 player->currentTime() >= player->duration()));
34 }
35
36 void RendererWebMediaPlayerDelegate::PlayerGone(blink::WebMediaPlayer* player) {
37 // No player may exist, so this might be a no-op.
38 players_.erase(player);
39 Send(new FrameHostMsg_MediaDestroyedNotification(
29 routing_id(), reinterpret_cast<int64_t>(player))); 40 routing_id(), reinterpret_cast<int64_t>(player)));
30 } 41 }
31 42
32 void RendererWebMediaPlayerDelegate::PlayerGone(blink::WebMediaPlayer* player) {
33 DidPause(player);
34 }
35
36 void RendererWebMediaPlayerDelegate::AddObserver(Observer* observer) { 43 void RendererWebMediaPlayerDelegate::AddObserver(Observer* observer) {
37 observer_list_.AddObserver(observer); 44 observer_list_.AddObserver(observer);
38 } 45 }
39 46
40 void RendererWebMediaPlayerDelegate::RemoveObserver(Observer* observer) { 47 void RendererWebMediaPlayerDelegate::RemoveObserver(Observer* observer) {
41 observer_list_.RemoveObserver(observer); 48 observer_list_.RemoveObserver(observer);
42 } 49 }
43 50
44 void RendererWebMediaPlayerDelegate::WasHidden() { 51 void RendererWebMediaPlayerDelegate::WasHidden() {
45 FOR_EACH_OBSERVER(Observer, observer_list_, OnHidden()); 52 FOR_EACH_OBSERVER(Observer, observer_list_, OnHidden());
46 } 53 }
47 54
48 void RendererWebMediaPlayerDelegate::WasShown() { 55 void RendererWebMediaPlayerDelegate::WasShown() {
49 FOR_EACH_OBSERVER(Observer, observer_list_, OnShown()); 56 FOR_EACH_OBSERVER(Observer, observer_list_, OnShown());
50 } 57 }
51 58
59 bool RendererWebMediaPlayerDelegate::OnMessageReceived(
60 const IPC::Message& msg) {
61 bool handled = true;
62 IPC_BEGIN_MESSAGE_MAP(RendererWebMediaPlayerDelegate, msg)
63 IPC_MESSAGE_HANDLER(FrameMsg_MediaDelegatePause, OnMediaDelegatePause)
64 IPC_MESSAGE_HANDLER(FrameMsg_MediaDelegatePlay, OnMediaDelegatePlay)
65 IPC_MESSAGE_UNHANDLED(handled = false)
66 IPC_END_MESSAGE_MAP()
67 return handled;
68 }
69
70 void RendererWebMediaPlayerDelegate::OnMediaDelegatePause(
71 int64_t player_cookie) {
72 // Translate the player cookie back to a WebMediaPlayer instance and make sure
73 // it's still a valid instance.
74 blink::WebMediaPlayer* player =
75 reinterpret_cast<blink::WebMediaPlayer*>(player_cookie);
76 if (players_.find(player) == players_.end())
77 return;
78 player->pause();
79 }
80
81 void RendererWebMediaPlayerDelegate::OnMediaDelegatePlay(
82 int64_t player_cookie) {
83 // Translate the player cookie back to a WebMediaPlayer instance and make sure
84 // it's still a valid instance.
85 blink::WebMediaPlayer* player =
86 reinterpret_cast<blink::WebMediaPlayer*>(player_cookie);
87 if (players_.find(player) == players_.end())
88 return;
89 player->play();
90 }
91
52 } // namespace media 92 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698