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

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 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_EnumerateDevices,
47 OnEnumerateDevices)
48 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_OpenDevice,
49 OnOpenDevice)
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::OnEnumerateDevices(
109 int render_view_id,
110 int page_request_id,
111 media_stream::MediaStreamType type,
112 const std::string& security_origin) {
113 DVLOG(1) << "MediaStreamDispatcherHost::OnEnumerateDevices("
114 << render_view_id << ", "
115 << page_request_id << ", "
116 << type << ", "
117 << security_origin << ")";
118
119 std::string label;
120 manager()->EnumerateDevices(this, render_process_id_, render_view_id,
121 type, security_origin, &label);
122 DCHECK(!label.empty());
123 streams_[label] = StreamRequest(render_view_id, page_request_id);
124 }
125
126 void MediaStreamDispatcherHost::OnOpenDevice(
127 int render_view_id,
128 int page_request_id,
129 const std::string& device_id,
130 media_stream::MediaStreamType type,
131 const std::string& security_origin) {
132 DVLOG(1) << "MediaStreamDispatcherHost::OnOpenDevice("
133 << render_view_id << ", "
134 << page_request_id << ", device_id: "
135 << device_id.c_str() << ", type: "
136 << type << ", "
137 << security_origin << ")";
138
139 std::string label;
140 manager()->OpenDevice(this, render_process_id_, render_view_id,
141 device_id, type, security_origin, &label);
142 DCHECK(!label.empty());
143 streams_[label] = StreamRequest(render_view_id, page_request_id);
144 }
145
104 void MediaStreamDispatcherHost::StreamGenerated( 146 void MediaStreamDispatcherHost::StreamGenerated(
105 const std::string& label, 147 const std::string& label,
106 const StreamDeviceInfoArray& audio_devices, 148 const StreamDeviceInfoArray& audio_devices,
107 const StreamDeviceInfoArray& video_devices) { 149 const StreamDeviceInfoArray& video_devices) {
108 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 150 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
109 DVLOG(1) << "MediaStreamDispatcherHost::StreamGenerated(" 151 DVLOG(1) << "MediaStreamDispatcherHost::StreamGenerated("
110 << ", {label = " << label << "})"; 152 << ", {label = " << label << "})";
111 153
112 StreamMap::iterator it = streams_.find(label); 154 StreamMap::iterator it = streams_.find(label);
113 DCHECK(it != streams_.end()); 155 DCHECK(it != streams_.end());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 << ", {label = " << label << "})"; 196 << ", {label = " << label << "})";
155 197
156 StreamMap::iterator it = streams_.find(label); 198 StreamMap::iterator it = streams_.find(label);
157 DCHECK(it != streams_.end()); 199 DCHECK(it != streams_.end());
158 StreamRequest request = it->second; 200 StreamRequest request = it->second;
159 Send(new MediaStreamHostMsg_VideoDeviceFailed(request.render_view_id, 201 Send(new MediaStreamHostMsg_VideoDeviceFailed(request.render_view_id,
160 label, 202 label,
161 index)); 203 index));
162 } 204 }
163 205
206 void MediaStreamDispatcherHost::DevicesEnumerated(
207 const std::string& label,
208 const StreamDeviceInfoArray& devices) {
209 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
210 DVLOG(1) << "MediaStreamDispatcherHost::DevicesEnumerated("
211 << ", {label = " << label << "})";
212
213 StreamMap::iterator it = streams_.find(label);
214 DCHECK(it != streams_.end());
215 StreamRequest request = it->second;
216 streams_.erase(it);
217
218 Send(new MediaStreamMsg_DevicesEnumerated(
219 request.render_view_id, request.page_request_id, devices));
220 }
221
222 void MediaStreamDispatcherHost::DevicesEnumerationFailed(
223 const std::string& label) {
224 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
225 DVLOG(1) << "MediaStreamDispatcherHost::DevicesEnumerationFailed("
226 << ", {label = " << label << "})";
227
228 StreamMap::iterator it = streams_.find(label);
229 DCHECK(it != streams_.end());
230 StreamRequest request = it->second;
231 streams_.erase(it);
232
233 Send(new MediaStreamMsg_DevicesEnumerationFailed(
234 request.render_view_id, request.page_request_id));
235 }
236
237 void MediaStreamDispatcherHost::DeviceOpened(
238 const std::string& label,
239 const StreamDeviceInfo& video_device) {
240 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
241 DVLOG(1) << "MediaStreamDispatcherHost::DeviceOpened("
242 << ", {label = " << label << "})";
243
244 StreamMap::iterator it = streams_.find(label);
245 DCHECK(it != streams_.end());
246 StreamRequest request = it->second;
247
248 Send(new MediaStreamMsg_DeviceOpened(
249 request.render_view_id, request.page_request_id, label, video_device));
250 }
251
252 void MediaStreamDispatcherHost::DeviceOpenFailed(
253 const std::string& label) {
254 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
255 DVLOG(1) << "MediaStreamDispatcherHost::DeviceOpenFailed("
256 << ", {label = " << label << "})";
257
258 StreamMap::iterator it = streams_.find(label);
259 DCHECK(it != streams_.end());
260 StreamRequest request = it->second;
261 streams_.erase(it);
262
263 Send(new MediaStreamMsg_DeviceOpenFailed(request.render_view_id,
264 request.page_request_id));
265 }
266
164 } // namespace media_stream 267 } // namespace media_stream
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698