OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |