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

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: '' Created 9 years 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 25 matching lines...) Expand all
36 return resource_context_->media_stream_manager(); 36 return resource_context_->media_stream_manager();
37 } 37 }
38 38
39 bool MediaStreamDispatcherHost::OnMessageReceived( 39 bool MediaStreamDispatcherHost::OnMessageReceived(
40 const IPC::Message& message, bool* message_was_ok) { 40 const IPC::Message& message, bool* message_was_ok) {
41 bool handled = true; 41 bool handled = true;
42 IPC_BEGIN_MESSAGE_MAP_EX(MediaStreamDispatcherHost, message, *message_was_ok) 42 IPC_BEGIN_MESSAGE_MAP_EX(MediaStreamDispatcherHost, message, *message_was_ok)
43 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_GenerateStream, OnGenerateStream) 43 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_GenerateStream, OnGenerateStream)
44 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_StopGeneratedStream, 44 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_StopGeneratedStream,
45 OnStopGeneratedStream) 45 OnStopGeneratedStream)
46 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_EnumerateVideoDevices,
47 OnEnumerateVideoDevices)
48 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_OpenVideoDevice,
49 OnOpenVideoDevice)
46 IPC_MESSAGE_UNHANDLED(handled = false) 50 IPC_MESSAGE_UNHANDLED(handled = false)
47 IPC_END_MESSAGE_MAP_EX() 51 IPC_END_MESSAGE_MAP_EX()
48 return handled; 52 return handled;
49 } 53 }
50 54
51 void MediaStreamDispatcherHost::OnChannelClosing() { 55 void MediaStreamDispatcherHost::OnChannelClosing() {
52 BrowserMessageFilter::OnChannelClosing(); 56 BrowserMessageFilter::OnChannelClosing();
53 DVLOG(1) << "MediaStreamDispatcherHost::OnChannelClosing"; 57 DVLOG(1) << "MediaStreamDispatcherHost::OnChannelClosing";
54 58
55 // TODO(mflodman) Remove this temporary solution when shut-down issue is 59 // TODO(mflodman) Remove this temporary solution when shut-down issue is
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 int render_view_id, const std::string& label) { 98 int render_view_id, const std::string& label) {
95 DVLOG(1) << "MediaStreamDispatcherHost::OnStopGeneratedStream(" 99 DVLOG(1) << "MediaStreamDispatcherHost::OnStopGeneratedStream("
96 << ", {label = " << label << "})"; 100 << ", {label = " << label << "})";
97 101
98 StreamMap::iterator it = streams_.find(label); 102 StreamMap::iterator it = streams_.find(label);
99 DCHECK(it != streams_.end()); 103 DCHECK(it != streams_.end());
100 manager()->StopGeneratedStream(label); 104 manager()->StopGeneratedStream(label);
101 streams_.erase(it); 105 streams_.erase(it);
102 } 106 }
103 107
108 void MediaStreamDispatcherHost::OnEnumerateVideoDevices(
109 int render_view_id,
110 int page_request_id,
111 const std::string& security_origin) {
112 DVLOG(1) << "MediaStreamDispatcherHost::OnEnumerateVideoDevices("
113 << render_view_id << ", "
114 << page_request_id << ", "
115 << security_origin << ")";
116
117 std::string label;
118 manager()->EnumerateVideoDevices(this, render_process_id_, render_view_id,
119 security_origin, &label);
120 DCHECK(!label.empty());
121 streams_[label] = StreamRequest(render_view_id, page_request_id);
122 }
123
124 void MediaStreamDispatcherHost::OnOpenVideoDevice(
125 int render_view_id,
126 int page_request_id,
127 const std::string& device_id,
128 const std::string& security_origin) {
129 DVLOG(1) << "MediaStreamDispatcherHost::OnOpenVideoDevice("
130 << render_view_id << ", "
131 << page_request_id << ", device_id: "
132 << device_id.c_str() << ", "
133 << security_origin << ")";
134
135 std::string label;
136 manager()->OpenVideoDevice(this, render_process_id_, render_view_id,
137 device_id, security_origin, &label);
138 DCHECK(!label.empty());
139 streams_[label] = StreamRequest(render_view_id, page_request_id);
140 }
141
104 void MediaStreamDispatcherHost::StreamGenerated( 142 void MediaStreamDispatcherHost::StreamGenerated(
105 const std::string& label, 143 const std::string& label,
106 const StreamDeviceInfoArray& audio_devices, 144 const StreamDeviceInfoArray& audio_devices,
107 const StreamDeviceInfoArray& video_devices) { 145 const StreamDeviceInfoArray& video_devices) {
108 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 146 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
109 DVLOG(1) << "MediaStreamDispatcherHost::StreamGenerated(" 147 DVLOG(1) << "MediaStreamDispatcherHost::StreamGenerated("
110 << ", {label = " << label << "})"; 148 << ", {label = " << label << "})";
111 149
112 StreamMap::iterator it = streams_.find(label); 150 StreamMap::iterator it = streams_.find(label);
113 DCHECK(it != streams_.end()); 151 DCHECK(it != streams_.end());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 << ", {label = " << label << "})"; 192 << ", {label = " << label << "})";
155 193
156 StreamMap::iterator it = streams_.find(label); 194 StreamMap::iterator it = streams_.find(label);
157 DCHECK(it != streams_.end()); 195 DCHECK(it != streams_.end());
158 StreamRequest request = it->second; 196 StreamRequest request = it->second;
159 Send(new MediaStreamHostMsg_VideoDeviceFailed(request.render_view_id, 197 Send(new MediaStreamHostMsg_VideoDeviceFailed(request.render_view_id,
160 label, 198 label,
161 index)); 199 index));
162 } 200 }
163 201
202 void MediaStreamDispatcherHost::VideoDevicesEnumerated(
203 const std::string& label,
204 const StreamDeviceInfoArray& devices) {
205 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
206 DVLOG(1) << "MediaStreamDispatcherHost::VideoDevicesEnumerated("
207 << ", {label = " << label << "})";
208
209 StreamMap::iterator it = streams_.find(label);
210 DCHECK(it != streams_.end());
211 StreamRequest request = it->second;
212 streams_.erase(it);
213
214 Send(new MediaStreamMsg_VideoDevicesEnumerated(
215 request.render_view_id, request.page_request_id, devices));
216 }
217
218 void MediaStreamDispatcherHost::VideoDevicesEnumerationFailed(
219 const std::string& label) {
220 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
221 DVLOG(1) << "MediaStreamDispatcherHost::VideoDevicesEnumerationFailed("
222 << ", {label = " << label << "})";
223
224 StreamMap::iterator it = streams_.find(label);
225 DCHECK(it != streams_.end());
226 StreamRequest request = it->second;
227 streams_.erase(it);
228
229 Send(new MediaStreamMsg_VideoDevicesEnumerationFailed(
230 request.render_view_id, request.page_request_id));
231 }
232
233 void MediaStreamDispatcherHost::VideoDeviceOpened(
234 const std::string& label,
235 const StreamDeviceInfo& video_device) {
236 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
237 DVLOG(1) << "MediaStreamDispatcherHost::VideoDeviceOpened("
238 << ", {label = " << label << "})";
239
240 StreamMap::iterator it = streams_.find(label);
241 DCHECK(it != streams_.end());
242 StreamRequest request = it->second;
243
244 Send(new MediaStreamMsg_VideoDeviceOpened(
245 request.render_view_id, request.page_request_id, label, video_device));
246 }
247
248 void MediaStreamDispatcherHost::VideoDeviceOpenFailed(
249 const std::string& label) {
250 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
251 DVLOG(1) << "MediaStreamDispatcherHost::VideoDeviceOpenFailed("
252 << ", {label = " << label << "})";
253
254 StreamMap::iterator it = streams_.find(label);
255 DCHECK(it != streams_.end());
256 StreamRequest request = it->second;
257 streams_.erase(it);
258
259 Send(new MediaStreamMsg_VideoDeviceOpenFailed(request.render_view_id,
260 request.page_request_id));
261 }
262
164 } // namespace media_stream 263 } // namespace media_stream
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698