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

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

Issue 1580493004: Plumb audio focus support for spitzer clients. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@delegate_hookup
Patch Set: Fix crash, plumb. 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) {
22 has_played_media_ = true;
23 players_.insert(player);
24 Send(new FrameHostMsg_MediaPlayingNotification(
25 routing_id(), reinterpret_cast<int64_t>(player), player->hasVideo(),
26 player->hasAudio(), player->isRemote(),
27 base::TimeDelta::FromSecondsD(player->duration())));
28 }
29
30 void RendererWebMediaPlayerDelegate::DidPause(blink::WebMediaPlayer* player) {
31 DCHECK_EQ(players_.count(player), 1u);
32 Send(new FrameHostMsg_MediaPausedNotification(
33 routing_id(), reinterpret_cast<int64_t>(player),
34 player->currentTime() >= player->duration()));
35 }
36
37 void RendererWebMediaPlayerDelegate::PlayerGone(blink::WebMediaPlayer* player) {
38 // No player may exist, so this might be a no-op.
39 players_.erase(player);
40 Send(new FrameHostMsg_MediaDestroyedNotification(
41 routing_id(), reinterpret_cast<int64_t>(player)));
42 }
43
44 void RendererWebMediaPlayerDelegate::AddObserver(Observer* observer) { 21 void RendererWebMediaPlayerDelegate::AddObserver(Observer* observer) {
45 observer_list_.AddObserver(observer); 22 observer_list_.AddObserver(observer);
46 } 23 }
47 24
48 void RendererWebMediaPlayerDelegate::RemoveObserver(Observer* observer) { 25 void RendererWebMediaPlayerDelegate::DidPlay(Observer* observer) {
26 has_played_media_ = true;
27 blink::WebMediaPlayer* player = observer->GetPlayer();
28 Send(new FrameHostMsg_MediaPlayingNotification(
29 routing_id(), reinterpret_cast<int64_t>(observer), player->hasVideo(),
30 player->hasAudio(), player->isRemote(),
31 base::TimeDelta::FromSecondsD(player->duration())));
32 }
33
34 void RendererWebMediaPlayerDelegate::DidPause(Observer* observer) {
35 blink::WebMediaPlayer* player = observer->GetPlayer();
36 Send(new FrameHostMsg_MediaPausedNotification(
37 routing_id(), reinterpret_cast<int64_t>(observer),
38 player->currentTime() >= player->duration()));
39 }
40
41 void RendererWebMediaPlayerDelegate::PlayerGone(Observer* observer) {
49 observer_list_.RemoveObserver(observer); 42 observer_list_.RemoveObserver(observer);
43 Send(new FrameHostMsg_MediaDestroyedNotification(
44 routing_id(), reinterpret_cast<int64_t>(observer)));
50 } 45 }
51 46
52 void RendererWebMediaPlayerDelegate::WasHidden() { 47 void RendererWebMediaPlayerDelegate::WasHidden() {
53 FOR_EACH_OBSERVER(Observer, observer_list_, OnHidden()); 48 FOR_EACH_OBSERVER(Observer, observer_list_, OnHidden());
54 } 49 }
55 50
56 void RendererWebMediaPlayerDelegate::WasShown() { 51 void RendererWebMediaPlayerDelegate::WasShown() {
57 FOR_EACH_OBSERVER(Observer, observer_list_, OnShown()); 52 FOR_EACH_OBSERVER(Observer, observer_list_, OnShown());
58 } 53 }
59 54
60 bool RendererWebMediaPlayerDelegate::IsHidden() { 55 bool RendererWebMediaPlayerDelegate::IsHidden() {
61 return render_frame()->IsHidden(); 56 return render_frame()->IsHidden();
62 } 57 }
63 58
64 bool RendererWebMediaPlayerDelegate::OnMessageReceived( 59 bool RendererWebMediaPlayerDelegate::OnMessageReceived(
65 const IPC::Message& msg) { 60 const IPC::Message& msg) {
66 bool handled = true; 61 bool handled = true;
67 IPC_BEGIN_MESSAGE_MAP(RendererWebMediaPlayerDelegate, msg) 62 IPC_BEGIN_MESSAGE_MAP(RendererWebMediaPlayerDelegate, msg)
68 IPC_MESSAGE_HANDLER(FrameMsg_MediaDelegatePause, OnMediaDelegatePause) 63 IPC_MESSAGE_HANDLER(FrameMsg_MediaDelegatePause, OnMediaDelegatePause)
69 IPC_MESSAGE_HANDLER(FrameMsg_MediaDelegatePlay, OnMediaDelegatePlay) 64 IPC_MESSAGE_HANDLER(FrameMsg_MediaDelegatePlay, OnMediaDelegatePlay)
70 IPC_MESSAGE_UNHANDLED(handled = false) 65 IPC_MESSAGE_UNHANDLED(handled = false)
71 IPC_END_MESSAGE_MAP() 66 IPC_END_MESSAGE_MAP()
72 return handled; 67 return handled;
73 } 68 }
74 69
75 void RendererWebMediaPlayerDelegate::OnMediaDelegatePause( 70 void RendererWebMediaPlayerDelegate::OnMediaDelegatePause(
76 int64_t player_cookie) { 71 int64_t player_cookie) {
77 // Translate the player cookie back to a WebMediaPlayer instance and make sure 72 LOG(ERROR) << "PAUSEDDDD";
78 // it's still a valid instance. 73
79 blink::WebMediaPlayer* player = 74 // Translate the player cookie back to a Observer instance and make sure it's
80 reinterpret_cast<blink::WebMediaPlayer*>(player_cookie); 75 // still a valid instance.
81 if (players_.find(player) == players_.end()) 76 Observer* observer = reinterpret_cast<Observer*>(player_cookie);
77 if (!observer_list_.HasObserver(observer))
82 return; 78 return;
83 player->pause(); 79
80 observer->OnPause();
84 } 81 }
85 82
86 void RendererWebMediaPlayerDelegate::OnMediaDelegatePlay( 83 void RendererWebMediaPlayerDelegate::OnMediaDelegatePlay(
87 int64_t player_cookie) { 84 int64_t player_cookie) {
88 // Translate the player cookie back to a WebMediaPlayer instance and make sure 85 LOG(ERROR) << "PLAYEEED";
89 // it's still a valid instance. 86
90 blink::WebMediaPlayer* player = 87 // Translate the player cookie back to a Observer instance and make sure it's
91 reinterpret_cast<blink::WebMediaPlayer*>(player_cookie); 88 // still a valid instance.
92 if (players_.find(player) == players_.end()) 89 Observer* observer = reinterpret_cast<Observer*>(player_cookie);
90 if (!observer_list_.HasObserver(observer))
93 return; 91 return;
94 player->play(); 92
93 observer->OnPlay();
95 } 94 }
96 95
97 } // namespace media 96 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698