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

Side by Side Diff: content/browser/renderer_host/media/media_stream_dispatcher_host.cc

Issue 10068037: RefCounted types should not have public destructors, content/browser part 1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: MSVC fixes Created 8 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/browser/renderer_host/media/media_stream_dispatcher_host.h" 5 #include "content/browser/renderer_host/media/media_stream_dispatcher_host.h"
6 6
7 #include "content/common/media/media_stream_messages.h" 7 #include "content/common/media/media_stream_messages.h"
8 #include "content/common/media/media_stream_options.h" 8 #include "content/common/media/media_stream_options.h"
9 9
10 using content::BrowserMessageFilter; 10 using content::BrowserMessageFilter;
(...skipping 14 matching lines...) Expand all
25 25
26 MediaStreamDispatcherHost::MediaStreamDispatcherHost( 26 MediaStreamDispatcherHost::MediaStreamDispatcherHost(
27 content::ResourceContext* resource_context, 27 content::ResourceContext* resource_context,
28 int render_process_id, 28 int render_process_id,
29 media::AudioManager* audio_manager) 29 media::AudioManager* audio_manager)
30 : resource_context_(resource_context), 30 : resource_context_(resource_context),
31 render_process_id_(render_process_id), 31 render_process_id_(render_process_id),
32 audio_manager_(audio_manager) { 32 audio_manager_(audio_manager) {
33 } 33 }
34 34
35 MediaStreamDispatcherHost::~MediaStreamDispatcherHost() {
36 }
37
38 MediaStreamManager* MediaStreamDispatcherHost::manager() {
39 return MediaStreamManager::GetForResourceContext(
40 resource_context_, audio_manager_);
41 }
42
43 bool MediaStreamDispatcherHost::OnMessageReceived(
44 const IPC::Message& message, bool* message_was_ok) {
45 bool handled = true;
46 IPC_BEGIN_MESSAGE_MAP_EX(MediaStreamDispatcherHost, message, *message_was_ok)
47 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_GenerateStream, OnGenerateStream)
48 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_StopGeneratedStream,
49 OnStopGeneratedStream)
50 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_EnumerateDevices,
51 OnEnumerateDevices)
52 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_OpenDevice,
53 OnOpenDevice)
54 IPC_MESSAGE_UNHANDLED(handled = false)
55 IPC_END_MESSAGE_MAP_EX()
56 return handled;
57 }
58
59 void MediaStreamDispatcherHost::OnChannelClosing() {
60 BrowserMessageFilter::OnChannelClosing();
61 DVLOG(1) << "MediaStreamDispatcherHost::OnChannelClosing";
62
63 // Since the IPC channel is gone, cancel pending requests and close all
64 // requested VideCaptureDevices.
65 manager()->CancelRequests(this);
66 for (StreamMap::iterator it = streams_.begin();
67 it != streams_.end();
68 it++) {
69 std::string label = it->first;
70 manager()->StopGeneratedStream(label);
71 }
72 }
73
74 void MediaStreamDispatcherHost::OnGenerateStream(
75 int render_view_id,
76 int page_request_id,
77 const media_stream::StreamOptions& components,
78 const std::string& security_origin) {
79 DVLOG(1) << "MediaStreamDispatcherHost::OnGenerateStream("
80 << render_view_id << ", "
81 << page_request_id << ", [ "
82 << (components.audio ? "audio " : "")
83 << ((components.video_option &
84 StreamOptions::kFacingUser) ?
85 "video_facing_user " : "")
86 << ((components.video_option &
87 StreamOptions::kFacingEnvironment) ?
88 "video_facing_environment " : "")
89 << "], "
90 << security_origin << ")";
91
92 std::string label;
93 manager()->GenerateStream(this, render_process_id_, render_view_id,
94 components, security_origin, &label);
95 DCHECK(!label.empty());
96 streams_[label] = StreamRequest(render_view_id, page_request_id);
97 }
98
99 void MediaStreamDispatcherHost::OnStopGeneratedStream(
100 int render_view_id, const std::string& label) {
101 DVLOG(1) << "MediaStreamDispatcherHost::OnStopGeneratedStream("
102 << ", {label = " << label << "})";
103
104 StreamMap::iterator it = streams_.find(label);
105 DCHECK(it != streams_.end());
106 manager()->StopGeneratedStream(label);
107 streams_.erase(it);
108 }
109
110 void MediaStreamDispatcherHost::OnEnumerateDevices(
111 int render_view_id,
112 int page_request_id,
113 media_stream::MediaStreamType type,
114 const std::string& security_origin) {
115 DVLOG(1) << "MediaStreamDispatcherHost::OnEnumerateDevices("
116 << render_view_id << ", "
117 << page_request_id << ", "
118 << type << ", "
119 << security_origin << ")";
120
121 std::string label;
122 manager()->EnumerateDevices(this, render_process_id_, render_view_id,
123 type, security_origin, &label);
124 DCHECK(!label.empty());
125 streams_[label] = StreamRequest(render_view_id, page_request_id);
126 }
127
128 void MediaStreamDispatcherHost::OnOpenDevice(
129 int render_view_id,
130 int page_request_id,
131 const std::string& device_id,
132 media_stream::MediaStreamType type,
133 const std::string& security_origin) {
134 DVLOG(1) << "MediaStreamDispatcherHost::OnOpenDevice("
135 << render_view_id << ", "
136 << page_request_id << ", device_id: "
137 << device_id.c_str() << ", type: "
138 << type << ", "
139 << security_origin << ")";
140
141 std::string label;
142 manager()->OpenDevice(this, render_process_id_, render_view_id,
143 device_id, type, security_origin, &label);
144 DCHECK(!label.empty());
145 streams_[label] = StreamRequest(render_view_id, page_request_id);
146 }
147
148 void MediaStreamDispatcherHost::StreamGenerated( 35 void MediaStreamDispatcherHost::StreamGenerated(
149 const std::string& label, 36 const std::string& label,
150 const StreamDeviceInfoArray& audio_devices, 37 const StreamDeviceInfoArray& audio_devices,
151 const StreamDeviceInfoArray& video_devices) { 38 const StreamDeviceInfoArray& video_devices) {
152 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 39 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
153 DVLOG(1) << "MediaStreamDispatcherHost::StreamGenerated(" 40 DVLOG(1) << "MediaStreamDispatcherHost::StreamGenerated("
154 << ", {label = " << label << "})"; 41 << ", {label = " << label << "})";
155 42
156 StreamMap::iterator it = streams_.find(label); 43 StreamMap::iterator it = streams_.find(label);
157 DCHECK(it != streams_.end()); 44 DCHECK(it != streams_.end());
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 146
260 StreamMap::iterator it = streams_.find(label); 147 StreamMap::iterator it = streams_.find(label);
261 DCHECK(it != streams_.end()); 148 DCHECK(it != streams_.end());
262 StreamRequest request = it->second; 149 StreamRequest request = it->second;
263 streams_.erase(it); 150 streams_.erase(it);
264 151
265 Send(new MediaStreamMsg_DeviceOpenFailed(request.render_view_id, 152 Send(new MediaStreamMsg_DeviceOpenFailed(request.render_view_id,
266 request.page_request_id)); 153 request.page_request_id));
267 } 154 }
268 155
156 bool MediaStreamDispatcherHost::OnMessageReceived(
157 const IPC::Message& message, bool* message_was_ok) {
158 bool handled = true;
159 IPC_BEGIN_MESSAGE_MAP_EX(MediaStreamDispatcherHost, message, *message_was_ok)
160 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_GenerateStream, OnGenerateStream)
161 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_StopGeneratedStream,
162 OnStopGeneratedStream)
163 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_EnumerateDevices,
164 OnEnumerateDevices)
165 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_OpenDevice,
166 OnOpenDevice)
167 IPC_MESSAGE_UNHANDLED(handled = false)
168 IPC_END_MESSAGE_MAP_EX()
169 return handled;
170 }
171
172 void MediaStreamDispatcherHost::OnChannelClosing() {
173 BrowserMessageFilter::OnChannelClosing();
174 DVLOG(1) << "MediaStreamDispatcherHost::OnChannelClosing";
175
176 // Since the IPC channel is gone, cancel pending requests and close all
177 // requested VideCaptureDevices.
178 manager()->CancelRequests(this);
179 for (StreamMap::iterator it = streams_.begin();
180 it != streams_.end();
181 it++) {
182 std::string label = it->first;
183 manager()->StopGeneratedStream(label);
184 }
185 }
186
187 MediaStreamDispatcherHost::~MediaStreamDispatcherHost() {}
188
189 void MediaStreamDispatcherHost::OnGenerateStream(
190 int render_view_id,
191 int page_request_id,
192 const media_stream::StreamOptions& components,
193 const std::string& security_origin) {
194 DVLOG(1) << "MediaStreamDispatcherHost::OnGenerateStream("
195 << render_view_id << ", "
196 << page_request_id << ", [ "
197 << (components.audio ? "audio " : "")
198 << ((components.video_option &
199 StreamOptions::kFacingUser) ?
200 "video_facing_user " : "")
201 << ((components.video_option &
202 StreamOptions::kFacingEnvironment) ?
203 "video_facing_environment " : "")
204 << "], "
205 << security_origin << ")";
206
207 std::string label;
208 manager()->GenerateStream(this, render_process_id_, render_view_id,
209 components, security_origin, &label);
210 DCHECK(!label.empty());
211 streams_[label] = StreamRequest(render_view_id, page_request_id);
212 }
213
214 void MediaStreamDispatcherHost::OnStopGeneratedStream(
215 int render_view_id, const std::string& label) {
216 DVLOG(1) << "MediaStreamDispatcherHost::OnStopGeneratedStream("
217 << ", {label = " << label << "})";
218
219 StreamMap::iterator it = streams_.find(label);
220 DCHECK(it != streams_.end());
221 manager()->StopGeneratedStream(label);
222 streams_.erase(it);
223 }
224
225 void MediaStreamDispatcherHost::OnEnumerateDevices(
226 int render_view_id,
227 int page_request_id,
228 media_stream::MediaStreamType type,
229 const std::string& security_origin) {
230 DVLOG(1) << "MediaStreamDispatcherHost::OnEnumerateDevices("
231 << render_view_id << ", "
232 << page_request_id << ", "
233 << type << ", "
234 << security_origin << ")";
235
236 std::string label;
237 manager()->EnumerateDevices(this, render_process_id_, render_view_id,
238 type, security_origin, &label);
239 DCHECK(!label.empty());
240 streams_[label] = StreamRequest(render_view_id, page_request_id);
241 }
242
243 void MediaStreamDispatcherHost::OnOpenDevice(
244 int render_view_id,
245 int page_request_id,
246 const std::string& device_id,
247 media_stream::MediaStreamType type,
248 const std::string& security_origin) {
249 DVLOG(1) << "MediaStreamDispatcherHost::OnOpenDevice("
250 << render_view_id << ", "
251 << page_request_id << ", device_id: "
252 << device_id.c_str() << ", type: "
253 << type << ", "
254 << security_origin << ")";
255
256 std::string label;
257 manager()->OpenDevice(this, render_process_id_, render_view_id,
258 device_id, type, security_origin, &label);
259 DCHECK(!label.empty());
260 streams_[label] = StreamRequest(render_view_id, page_request_id);
261 }
262
263 MediaStreamManager* MediaStreamDispatcherHost::manager() {
264 return MediaStreamManager::GetForResourceContext(
265 resource_context_, audio_manager_);
266 }
267
269 } // namespace media_stream 268 } // namespace media_stream
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698