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 25 matching lines...) Expand all Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |