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

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

Issue 8480028: support video device enumeration from renderer process. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: code review Created 8 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/browser/resource_context.h" 7 #include "content/browser/resource_context.h"
8 #include "content/common/media/media_stream_messages.h" 8 #include "content/common/media/media_stream_messages.h"
9 #include "content/common/media/media_stream_options.h" 9 #include "content/common/media/media_stream_options.h"
10 10
(...skipping 26 matching lines...) Expand all
37 return resource_context_->media_stream_manager(); 37 return resource_context_->media_stream_manager();
38 } 38 }
39 39
40 bool MediaStreamDispatcherHost::OnMessageReceived( 40 bool MediaStreamDispatcherHost::OnMessageReceived(
41 const IPC::Message& message, bool* message_was_ok) { 41 const IPC::Message& message, bool* message_was_ok) {
42 bool handled = true; 42 bool handled = true;
43 IPC_BEGIN_MESSAGE_MAP_EX(MediaStreamDispatcherHost, message, *message_was_ok) 43 IPC_BEGIN_MESSAGE_MAP_EX(MediaStreamDispatcherHost, message, *message_was_ok)
44 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_GenerateStream, OnGenerateStream) 44 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_GenerateStream, OnGenerateStream)
45 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_StopGeneratedStream, 45 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_StopGeneratedStream,
46 OnStopGeneratedStream) 46 OnStopGeneratedStream)
47 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_EnumerateDevices,
48 OnEnumerateDevices)
49 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_OpenDevice,
50 OnOpenDevice)
47 IPC_MESSAGE_UNHANDLED(handled = false) 51 IPC_MESSAGE_UNHANDLED(handled = false)
48 IPC_END_MESSAGE_MAP_EX() 52 IPC_END_MESSAGE_MAP_EX()
49 return handled; 53 return handled;
50 } 54 }
51 55
52 void MediaStreamDispatcherHost::OnChannelClosing() { 56 void MediaStreamDispatcherHost::OnChannelClosing() {
53 BrowserMessageFilter::OnChannelClosing(); 57 BrowserMessageFilter::OnChannelClosing();
54 DVLOG(1) << "MediaStreamDispatcherHost::OnChannelClosing"; 58 DVLOG(1) << "MediaStreamDispatcherHost::OnChannelClosing";
55 59
56 // TODO(mflodman) Remove this temporary solution when shut-down issue is 60 // TODO(mflodman) Remove this temporary solution when shut-down issue is
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 int render_view_id, const std::string& label) { 99 int render_view_id, const std::string& label) {
96 DVLOG(1) << "MediaStreamDispatcherHost::OnStopGeneratedStream(" 100 DVLOG(1) << "MediaStreamDispatcherHost::OnStopGeneratedStream("
97 << ", {label = " << label << "})"; 101 << ", {label = " << label << "})";
98 102
99 StreamMap::iterator it = streams_.find(label); 103 StreamMap::iterator it = streams_.find(label);
100 DCHECK(it != streams_.end()); 104 DCHECK(it != streams_.end());
101 manager()->StopGeneratedStream(label); 105 manager()->StopGeneratedStream(label);
102 streams_.erase(it); 106 streams_.erase(it);
103 } 107 }
104 108
109 void MediaStreamDispatcherHost::OnEnumerateDevices(
110 int render_view_id,
111 int page_request_id,
112 media_stream::MediaStreamType type,
113 const std::string& security_origin) {
114 DVLOG(1) << "MediaStreamDispatcherHost::OnEnumerateDevices("
115 << render_view_id << ", "
116 << page_request_id << ", "
117 << type << ", "
118 << security_origin << ")";
119
120 std::string label;
121 manager()->EnumerateDevices(this, render_process_id_, render_view_id,
122 type, security_origin, &label);
123 DCHECK(!label.empty());
124 streams_[label] = StreamRequest(render_view_id, page_request_id);
125 }
126
127 void MediaStreamDispatcherHost::OnOpenDevice(
128 int render_view_id,
129 int page_request_id,
130 const std::string& device_id,
131 media_stream::MediaStreamType type,
132 const std::string& security_origin) {
133 DVLOG(1) << "MediaStreamDispatcherHost::OnOpenDevice("
134 << render_view_id << ", "
135 << page_request_id << ", device_id: "
136 << device_id.c_str() << ", type: "
137 << type << ", "
138 << security_origin << ")";
139
140 std::string label;
141 manager()->OpenDevice(this, render_process_id_, render_view_id,
142 device_id, type, security_origin, &label);
143 DCHECK(!label.empty());
144 streams_[label] = StreamRequest(render_view_id, page_request_id);
145 }
146
105 void MediaStreamDispatcherHost::StreamGenerated( 147 void MediaStreamDispatcherHost::StreamGenerated(
106 const std::string& label, 148 const std::string& label,
107 const StreamDeviceInfoArray& audio_devices, 149 const StreamDeviceInfoArray& audio_devices,
108 const StreamDeviceInfoArray& video_devices) { 150 const StreamDeviceInfoArray& video_devices) {
109 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 151 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
110 DVLOG(1) << "MediaStreamDispatcherHost::StreamGenerated(" 152 DVLOG(1) << "MediaStreamDispatcherHost::StreamGenerated("
111 << ", {label = " << label << "})"; 153 << ", {label = " << label << "})";
112 154
113 StreamMap::iterator it = streams_.find(label); 155 StreamMap::iterator it = streams_.find(label);
114 DCHECK(it != streams_.end()); 156 DCHECK(it != streams_.end());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 << ", {label = " << label << "})"; 197 << ", {label = " << label << "})";
156 198
157 StreamMap::iterator it = streams_.find(label); 199 StreamMap::iterator it = streams_.find(label);
158 DCHECK(it != streams_.end()); 200 DCHECK(it != streams_.end());
159 StreamRequest request = it->second; 201 StreamRequest request = it->second;
160 Send(new MediaStreamHostMsg_VideoDeviceFailed(request.render_view_id, 202 Send(new MediaStreamHostMsg_VideoDeviceFailed(request.render_view_id,
161 label, 203 label,
162 index)); 204 index));
163 } 205 }
164 206
207 void MediaStreamDispatcherHost::DevicesEnumerated(
208 const std::string& label,
209 const StreamDeviceInfoArray& devices) {
210 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
211 DVLOG(1) << "MediaStreamDispatcherHost::DevicesEnumerated("
212 << ", {label = " << label << "})";
213
214 StreamMap::iterator it = streams_.find(label);
215 DCHECK(it != streams_.end());
216 StreamRequest request = it->second;
217 streams_.erase(it);
218
219 Send(new MediaStreamMsg_DevicesEnumerated(
220 request.render_view_id, request.page_request_id, devices));
221 }
222
223 void MediaStreamDispatcherHost::DevicesEnumerationFailed(
224 const std::string& label) {
225 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
226 DVLOG(1) << "MediaStreamDispatcherHost::DevicesEnumerationFailed("
227 << ", {label = " << label << "})";
228
229 StreamMap::iterator it = streams_.find(label);
230 DCHECK(it != streams_.end());
231 StreamRequest request = it->second;
232 streams_.erase(it);
233
234 Send(new MediaStreamMsg_DevicesEnumerationFailed(
235 request.render_view_id, request.page_request_id));
236 }
237
238 void MediaStreamDispatcherHost::DeviceOpened(
239 const std::string& label,
240 const StreamDeviceInfo& video_device) {
241 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
242 DVLOG(1) << "MediaStreamDispatcherHost::DeviceOpened("
243 << ", {label = " << label << "})";
244
245 StreamMap::iterator it = streams_.find(label);
246 DCHECK(it != streams_.end());
247 StreamRequest request = it->second;
248
249 Send(new MediaStreamMsg_DeviceOpened(
250 request.render_view_id, request.page_request_id, label, video_device));
251 }
252
253 void MediaStreamDispatcherHost::DeviceOpenFailed(
254 const std::string& label) {
255 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
256 DVLOG(1) << "MediaStreamDispatcherHost::DeviceOpenFailed("
257 << ", {label = " << label << "})";
258
259 StreamMap::iterator it = streams_.find(label);
260 DCHECK(it != streams_.end());
261 StreamRequest request = it->second;
262 streams_.erase(it);
263
264 Send(new MediaStreamMsg_DeviceOpenFailed(request.render_view_id,
265 request.page_request_id));
266 }
267
165 } // namespace media_stream 268 } // namespace media_stream
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698