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

Side by Side Diff: content/renderer/media/media_stream_dispatcher.cc

Issue 10830063: refactor EnumerateDevices to make it a persistent request. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: code review Created 8 years, 4 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/renderer/media/media_stream_dispatcher.h" 5 #include "content/renderer/media/media_stream_dispatcher.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "content/common/media/media_stream_messages.h" 8 #include "content/common/media/media_stream_messages.h"
9 #include "content/renderer/media/media_stream_dispatcher_eventhandler.h" 9 #include "content/renderer/media/media_stream_dispatcher_eventhandler.h"
10 #include "content/renderer/render_view_impl.h" 10 #include "content/renderer/render_view_impl.h"
(...skipping 13 matching lines...) Expand all
24 }; 24 };
25 25
26 struct MediaStreamDispatcher::Stream { 26 struct MediaStreamDispatcher::Stream {
27 Stream() {} 27 Stream() {}
28 ~Stream() {} 28 ~Stream() {}
29 base::WeakPtr<MediaStreamDispatcherEventHandler> handler; 29 base::WeakPtr<MediaStreamDispatcherEventHandler> handler;
30 media_stream::StreamDeviceInfoArray audio_array; 30 media_stream::StreamDeviceInfoArray audio_array;
31 media_stream::StreamDeviceInfoArray video_array; 31 media_stream::StreamDeviceInfoArray video_array;
32 }; 32 };
33 33
34 MediaStreamDispatcher::EnumerationRequest::EnumerationRequest(
35 const base::WeakPtr<MediaStreamDispatcherEventHandler>& handler,
36 int request_id)
37 : handler(handler),
38 request_id(request_id) {
39 }
40
41 MediaStreamDispatcher::EnumerationRequest::~EnumerationRequest() {}
42
43 MediaStreamDispatcher::EnumerationState::EnumerationState()
44 : ipc_id(-1) {
45 }
46
47 MediaStreamDispatcher::EnumerationState::~EnumerationState() {}
48
49 struct MediaStreamDispatcher::EnumerationState::CachedDevices {
50 CachedDevices(const std::string& label,
51 const media_stream::StreamDeviceInfoArray& device_array)
52 : label(label),
53 device_array(device_array) {
54 }
55 ~CachedDevices() {}
56
57 std::string label;
58 media_stream::StreamDeviceInfoArray device_array;
scherkus (not reviewing) 2012/08/02 22:45:18 nit: this can be |devices| -- no need to annotate
wjia(left Chromium) 2012/08/03 21:53:45 Done.
59 };
60
34 MediaStreamDispatcher::MediaStreamDispatcher(RenderViewImpl* render_view) 61 MediaStreamDispatcher::MediaStreamDispatcher(RenderViewImpl* render_view)
35 : content::RenderViewObserver(render_view), 62 : content::RenderViewObserver(render_view),
63 main_loop_(base::MessageLoopProxy::current()),
36 next_ipc_id_(0) { 64 next_ipc_id_(0) {
37 } 65 }
38 66
39 MediaStreamDispatcher::~MediaStreamDispatcher() {} 67 MediaStreamDispatcher::~MediaStreamDispatcher() {}
40 68
41 void MediaStreamDispatcher::GenerateStream( 69 void MediaStreamDispatcher::GenerateStream(
42 int request_id, 70 int request_id,
43 const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler, 71 const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler,
44 media_stream::StreamOptions components, 72 media_stream::StreamOptions components,
45 const GURL& security_origin) { 73 const GURL& security_origin) {
74 DCHECK(main_loop_->BelongsToCurrentThread());
46 DVLOG(1) << "MediaStreamDispatcher::GenerateStream(" << request_id << ")"; 75 DVLOG(1) << "MediaStreamDispatcher::GenerateStream(" << request_id << ")";
47 76
48 requests_.push_back(Request(event_handler, request_id, next_ipc_id_)); 77 requests_.push_back(Request(event_handler, request_id, next_ipc_id_));
49 Send(new MediaStreamHostMsg_GenerateStream(routing_id(), 78 Send(new MediaStreamHostMsg_GenerateStream(routing_id(),
50 next_ipc_id_++, 79 next_ipc_id_++,
51 components, 80 components,
52 security_origin)); 81 security_origin));
53 } 82 }
54 83
55 void MediaStreamDispatcher::CancelGenerateStream(int request_id) { 84 void MediaStreamDispatcher::CancelGenerateStream(int request_id) {
85 DCHECK(main_loop_->BelongsToCurrentThread());
56 DVLOG(1) << "MediaStreamDispatcher::CancelGenerateStream" 86 DVLOG(1) << "MediaStreamDispatcher::CancelGenerateStream"
57 << ", {request_id = " << request_id << "}"; 87 << ", {request_id = " << request_id << "}";
58 88
59 RequestList::iterator it = requests_.begin(); 89 RequestList::iterator it = requests_.begin();
60 for (; it != requests_.end(); ++it) { 90 for (; it != requests_.end(); ++it) {
61 Request& request = *it; 91 Request& request = *it;
62 if (request.request_id == request_id) { 92 if (request.request_id == request_id) {
63 requests_.erase(it); 93 requests_.erase(it);
64 Send(new MediaStreamHostMsg_CancelGenerateStream(routing_id(), 94 Send(new MediaStreamHostMsg_CancelGenerateStream(routing_id(),
65 request_id)); 95 request_id));
66 break; 96 break;
67 } 97 }
68 } 98 }
69 } 99 }
70 100
71 void MediaStreamDispatcher::StopStream(const std::string& label) { 101 void MediaStreamDispatcher::StopStream(const std::string& label) {
102 DCHECK(main_loop_->BelongsToCurrentThread());
72 DVLOG(1) << "MediaStreamDispatcher::StopStream" 103 DVLOG(1) << "MediaStreamDispatcher::StopStream"
73 << ", {label = " << label << "}"; 104 << ", {label = " << label << "}";
74 105
75 LabelStreamMap::iterator it = label_stream_map_.find(label); 106 LabelStreamMap::iterator it = label_stream_map_.find(label);
76 if (it == label_stream_map_.end()) 107 if (it == label_stream_map_.end())
77 return; 108 return;
78 109
79 Send(new MediaStreamHostMsg_StopGeneratedStream(routing_id(), label)); 110 Send(new MediaStreamHostMsg_StopGeneratedStream(routing_id(), label));
80 label_stream_map_.erase(it); 111 label_stream_map_.erase(it);
81 } 112 }
82 113
83 void MediaStreamDispatcher::EnumerateDevices( 114 void MediaStreamDispatcher::EnumerateDevices(
84 int request_id, 115 int request_id,
85 const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler, 116 const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler,
86 media_stream::MediaStreamType type, 117 media_stream::MediaStreamType type,
87 const GURL& security_origin) { 118 const GURL& security_origin) {
119 DCHECK(main_loop_->BelongsToCurrentThread());
120 DCHECK(type == content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE ||
121 type == content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE);
88 DVLOG(1) << "MediaStreamDispatcher::EnumerateDevices(" 122 DVLOG(1) << "MediaStreamDispatcher::EnumerateDevices("
89 << request_id << ")"; 123 << request_id << ")";
90 124
91 requests_.push_back(Request(event_handler, request_id, next_ipc_id_)); 125 EnumerationState* state =
92 Send(new MediaStreamHostMsg_EnumerateDevices(routing_id(), 126 (type == content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE ?
93 next_ipc_id_++, 127 &audio_enumeration_state_ : &video_enumeration_state_);
94 type, 128 state->requests.push_back(
95 security_origin)); 129 EnumerationRequest(event_handler, request_id));
130
131 if (state->cached_devices.get()) {
132 event_handler->OnDevicesEnumerated(
133 request_id, state->cached_devices->device_array);
134 } else if (state->ipc_id < 0) {
135 Send(new MediaStreamHostMsg_EnumerateDevices(routing_id(),
136 next_ipc_id_,
137 type,
138 security_origin));
139 state->ipc_id = next_ipc_id_++;
140 }
141 }
142
143 void MediaStreamDispatcher::StopEnumerateDevices(
144 int request_id,
145 const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler) {
146 DCHECK(main_loop_->BelongsToCurrentThread());
147 DVLOG(1) << "MediaStreamDispatcher::StopEnumerateDevices("
148 << request_id << ")";
149
150 // Remove the request.
151 RemoveEnumerationRequest(
152 request_id, event_handler, &audio_enumeration_state_);
153 RemoveEnumerationRequest(
154 request_id, event_handler, &video_enumeration_state_);
155 }
156
157 bool MediaStreamDispatcher::RemoveEnumerationRequest(
scherkus (not reviewing) 2012/08/02 22:45:18 RER() no longer needs to return a bool
wjia(left Chromium) 2012/08/03 21:53:45 Done.
158 int request_id,
159 const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler,
160 EnumerationState* state) {
161 EnumerationRequestList* requests = &state->requests;
162 for (EnumerationRequestList::iterator it = requests->begin();
163 it != requests->end(); ++it) {
164 if (it->request_id == request_id && it->handler == event_handler) {
165 requests->erase(it);
166 if (requests->empty() && !state->cached_devices.get()) {
167 // No more request and has a label, try to stop the label
168 // and invalidate the state.
169 Send(new MediaStreamHostMsg_StopGeneratedStream(
170 routing_id(), state->cached_devices->label));
171 state->ipc_id = -1;
172 state->cached_devices.reset();
173 }
174 return true;
175 }
176 }
177 return false;
96 } 178 }
97 179
98 void MediaStreamDispatcher::OpenDevice( 180 void MediaStreamDispatcher::OpenDevice(
99 int request_id, 181 int request_id,
100 const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler, 182 const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler,
101 const std::string& device_id, 183 const std::string& device_id,
102 media_stream::MediaStreamType type, 184 media_stream::MediaStreamType type,
103 const GURL& security_origin) { 185 const GURL& security_origin) {
186 DCHECK(main_loop_->BelongsToCurrentThread());
104 DVLOG(1) << "MediaStreamDispatcher::OpenDevice(" << request_id << ")"; 187 DVLOG(1) << "MediaStreamDispatcher::OpenDevice(" << request_id << ")";
105 188
106 requests_.push_back(Request(event_handler, request_id, next_ipc_id_)); 189 requests_.push_back(Request(event_handler, request_id, next_ipc_id_));
107 Send(new MediaStreamHostMsg_OpenDevice(routing_id(), 190 Send(new MediaStreamHostMsg_OpenDevice(routing_id(),
108 next_ipc_id_++, 191 next_ipc_id_++,
109 device_id, 192 device_id,
110 type, 193 type,
111 security_origin)); 194 security_origin));
112 } 195 }
113 196
114 void MediaStreamDispatcher::CloseDevice(const std::string& label) { 197 void MediaStreamDispatcher::CloseDevice(const std::string& label) {
198 DCHECK(main_loop_->BelongsToCurrentThread());
115 DVLOG(1) << "MediaStreamDispatcher::CloseDevice" 199 DVLOG(1) << "MediaStreamDispatcher::CloseDevice"
116 << ", {label = " << label << "}"; 200 << ", {label = " << label << "}";
117 201
118 StopStream(label); 202 StopStream(label);
119 } 203 }
120 204
121 bool MediaStreamDispatcher::OnMessageReceived(const IPC::Message& message) { 205 bool MediaStreamDispatcher::OnMessageReceived(const IPC::Message& message) {
122 bool handled = true; 206 bool handled = true;
123 IPC_BEGIN_MESSAGE_MAP(MediaStreamDispatcher, message) 207 IPC_BEGIN_MESSAGE_MAP(MediaStreamDispatcher, message)
124 IPC_MESSAGE_HANDLER(MediaStreamMsg_StreamGenerated, 208 IPC_MESSAGE_HANDLER(MediaStreamMsg_StreamGenerated,
(...skipping 15 matching lines...) Expand all
140 IPC_MESSAGE_UNHANDLED(handled = false) 224 IPC_MESSAGE_UNHANDLED(handled = false)
141 IPC_END_MESSAGE_MAP() 225 IPC_END_MESSAGE_MAP()
142 return handled; 226 return handled;
143 } 227 }
144 228
145 void MediaStreamDispatcher::OnStreamGenerated( 229 void MediaStreamDispatcher::OnStreamGenerated(
146 int request_id, 230 int request_id,
147 const std::string& label, 231 const std::string& label,
148 const media_stream::StreamDeviceInfoArray& audio_array, 232 const media_stream::StreamDeviceInfoArray& audio_array,
149 const media_stream::StreamDeviceInfoArray& video_array) { 233 const media_stream::StreamDeviceInfoArray& video_array) {
234 DCHECK(main_loop_->BelongsToCurrentThread());
150 235
151 for (RequestList::iterator it = requests_.begin(); 236 for (RequestList::iterator it = requests_.begin();
152 it != requests_.end(); ++it) { 237 it != requests_.end(); ++it) {
153 Request& request = *it; 238 Request& request = *it;
154 if (request.ipc_request == request_id) { 239 if (request.ipc_request == request_id) {
155 Stream new_stream; 240 Stream new_stream;
156 new_stream.handler = request.handler; 241 new_stream.handler = request.handler;
157 new_stream.audio_array = audio_array; 242 new_stream.audio_array = audio_array;
158 new_stream.video_array = video_array; 243 new_stream.video_array = video_array;
159 label_stream_map_[label] = new_stream; 244 label_stream_map_[label] = new_stream;
160 if (request.handler) { 245 if (request.handler) {
161 request.handler->OnStreamGenerated(request.request_id, label, 246 request.handler->OnStreamGenerated(request.request_id, label,
162 audio_array, video_array); 247 audio_array, video_array);
163 DVLOG(1) << "MediaStreamDispatcher::OnStreamGenerated(" 248 DVLOG(1) << "MediaStreamDispatcher::OnStreamGenerated("
164 << request.request_id << ", " << label << ")"; 249 << request.request_id << ", " << label << ")";
165 } 250 }
166 requests_.erase(it); 251 requests_.erase(it);
167 break; 252 break;
168 } 253 }
169 } 254 }
170 } 255 }
171 256
172 void MediaStreamDispatcher::OnStreamGenerationFailed(int request_id) { 257 void MediaStreamDispatcher::OnStreamGenerationFailed(int request_id) {
258 DCHECK(main_loop_->BelongsToCurrentThread());
173 for (RequestList::iterator it = requests_.begin(); 259 for (RequestList::iterator it = requests_.begin();
174 it != requests_.end(); ++it) { 260 it != requests_.end(); ++it) {
175 Request& request = *it; 261 Request& request = *it;
176 if (request.ipc_request == request_id) { 262 if (request.ipc_request == request_id) {
177 if (request.handler) { 263 if (request.handler) {
178 request.handler->OnStreamGenerationFailed(request.request_id); 264 request.handler->OnStreamGenerationFailed(request.request_id);
179 DVLOG(1) << "MediaStreamDispatcher::OnStreamGenerationFailed(" 265 DVLOG(1) << "MediaStreamDispatcher::OnStreamGenerationFailed("
180 << request.request_id << ")\n"; 266 << request.request_id << ")\n";
181 } 267 }
182 requests_.erase(it); 268 requests_.erase(it);
183 break; 269 break;
184 } 270 }
185 } 271 }
186 } 272 }
187 273
188 void MediaStreamDispatcher::OnVideoDeviceFailed(const std::string& label, 274 void MediaStreamDispatcher::OnVideoDeviceFailed(const std::string& label,
189 int index) { 275 int index) {
276 DCHECK(main_loop_->BelongsToCurrentThread());
190 LabelStreamMap::iterator it = label_stream_map_.find(label); 277 LabelStreamMap::iterator it = label_stream_map_.find(label);
191 if (it == label_stream_map_.end()) 278 if (it == label_stream_map_.end())
192 return; 279 return;
193 280
194 // index is the index in the video_array that has failed. 281 // index is the index in the video_array that has failed.
195 DCHECK_GT(it->second.video_array.size(), static_cast<size_t>(index)); 282 DCHECK_GT(it->second.video_array.size(), static_cast<size_t>(index));
196 media_stream::StreamDeviceInfoArray::iterator device_it = 283 media_stream::StreamDeviceInfoArray::iterator device_it =
197 it->second.video_array.begin(); 284 it->second.video_array.begin();
198 it->second.video_array.erase(device_it + index); 285 it->second.video_array.erase(device_it + index);
199 if (it->second.handler) 286 if (it->second.handler)
200 it->second.handler->OnVideoDeviceFailed(label, index); 287 it->second.handler->OnVideoDeviceFailed(label, index);
201 } 288 }
202 289
203 void MediaStreamDispatcher::OnAudioDeviceFailed(const std::string& label, 290 void MediaStreamDispatcher::OnAudioDeviceFailed(const std::string& label,
204 int index) { 291 int index) {
292 DCHECK(main_loop_->BelongsToCurrentThread());
205 LabelStreamMap::iterator it = label_stream_map_.find(label); 293 LabelStreamMap::iterator it = label_stream_map_.find(label);
206 if (it == label_stream_map_.end()) 294 if (it == label_stream_map_.end())
207 return; 295 return;
208 296
209 // index is the index in the audio_array that has failed. 297 // index is the index in the audio_array that has failed.
210 DCHECK_GT(it->second.audio_array.size(), static_cast<size_t>(index)); 298 DCHECK_GT(it->second.audio_array.size(), static_cast<size_t>(index));
211 media_stream::StreamDeviceInfoArray::iterator device_it = 299 media_stream::StreamDeviceInfoArray::iterator device_it =
212 it->second.audio_array.begin(); 300 it->second.audio_array.begin();
213 it->second.audio_array.erase(device_it + index); 301 it->second.audio_array.erase(device_it + index);
214 if (it->second.handler) 302 if (it->second.handler)
215 it->second.handler->OnAudioDeviceFailed(label, index); 303 it->second.handler->OnAudioDeviceFailed(label, index);
216 } 304 }
217 305
218 void MediaStreamDispatcher::OnDevicesEnumerated( 306 void MediaStreamDispatcher::OnDevicesEnumerated(
219 int request_id, 307 int request_id,
308 const std::string& label,
220 const media_stream::StreamDeviceInfoArray& device_array) { 309 const media_stream::StreamDeviceInfoArray& device_array) {
310 DCHECK(main_loop_->BelongsToCurrentThread());
311 DCHECK_GE(request_id, 0);
221 312
222 for (RequestList::iterator it = requests_.begin(); 313 EnumerationState* state;
223 it != requests_.end(); ++it) { 314 if (request_id == audio_enumeration_state_.ipc_id) {
224 Request& request = *it; 315 state = &audio_enumeration_state_;
225 if (request.ipc_request == request_id) { 316 } else if (request_id == video_enumeration_state_.ipc_id) {
226 if (request.handler) { 317 state = &video_enumeration_state_;
227 request.handler->OnDevicesEnumerated(request.request_id, device_array); 318 } else {
228 DVLOG(1) << "MediaStreamDispatcher::OnDevicesEnumerated(" 319 // This could happen when requester has stopped enumeration while some
229 << request.request_id << ")"; 320 // enumerated response is on the way. Have to stop the |label| because
230 } 321 // this might be the first enumerated device list is received. This also
231 requests_.erase(it); 322 // lead to same label being stopped multiple times.
232 break; 323 Send(new MediaStreamHostMsg_StopGeneratedStream(routing_id(), label));
324 return;
325 }
326
327 DCHECK(!label.empty());
328 state->cached_devices.reset(new EnumerationState::CachedDevices(
329 label, device_array));
330
331 for (EnumerationRequestList::iterator it = state->requests.begin();
332 it != state->requests.end(); ++it) {
333 if (it->handler) {
334 it->handler->OnDevicesEnumerated(it->request_id, device_array);
335 DVLOG(1) << "MediaStreamDispatcher::OnDevicesEnumerated("
336 << it->request_id << ")";
233 } 337 }
234 } 338 }
235 } 339 }
236 340
237 void MediaStreamDispatcher::OnDevicesEnumerationFailed(int request_id) { 341 void MediaStreamDispatcher::OnDevicesEnumerationFailed(int request_id) {
342 DCHECK(main_loop_->BelongsToCurrentThread());
238 for (RequestList::iterator it = requests_.begin(); 343 for (RequestList::iterator it = requests_.begin();
239 it != requests_.end(); ++it) { 344 it != requests_.end(); ++it) {
240 Request& request = *it; 345 Request& request = *it;
241 if (request.ipc_request == request_id) { 346 if (request.ipc_request == request_id) {
242 if (request.handler) { 347 if (request.handler) {
243 request.handler->OnStreamGenerationFailed(request.request_id); 348 request.handler->OnStreamGenerationFailed(request.request_id);
244 DVLOG(1) << "MediaStreamDispatcher::OnDevicesEnumerationFailed(" 349 DVLOG(1) << "MediaStreamDispatcher::OnDevicesEnumerationFailed("
245 << request.request_id << ")\n"; 350 << request.request_id << ")\n";
246 } 351 }
247 requests_.erase(it); 352 requests_.erase(it);
248 break; 353 break;
249 } 354 }
250 } 355 }
251 } 356 }
252 357
253 void MediaStreamDispatcher::OnDeviceOpened( 358 void MediaStreamDispatcher::OnDeviceOpened(
254 int request_id, 359 int request_id,
255 const std::string& label, 360 const std::string& label,
256 const media_stream::StreamDeviceInfo& device_info) { 361 const media_stream::StreamDeviceInfo& device_info) {
362 DCHECK(main_loop_->BelongsToCurrentThread());
257 for (RequestList::iterator it = requests_.begin(); 363 for (RequestList::iterator it = requests_.begin();
258 it != requests_.end(); ++it) { 364 it != requests_.end(); ++it) {
259 Request& request = *it; 365 Request& request = *it;
260 if (request.ipc_request == request_id) { 366 if (request.ipc_request == request_id) {
261 Stream new_stream; 367 Stream new_stream;
262 new_stream.handler = request.handler; 368 new_stream.handler = request.handler;
263 if (device_info.stream_type == 369 if (device_info.stream_type ==
264 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE) { 370 content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE) {
265 new_stream.video_array.push_back(device_info); 371 new_stream.video_array.push_back(device_info);
266 } else { 372 } else {
267 new_stream.audio_array.push_back(device_info); 373 new_stream.audio_array.push_back(device_info);
268 } 374 }
269 label_stream_map_[label] = new_stream; 375 label_stream_map_[label] = new_stream;
270 if (request.handler) { 376 if (request.handler) {
271 request.handler->OnDeviceOpened(request.request_id, label, 377 request.handler->OnDeviceOpened(request.request_id, label,
272 device_info); 378 device_info);
273 DVLOG(1) << "MediaStreamDispatcher::OnDeviceOpened(" 379 DVLOG(1) << "MediaStreamDispatcher::OnDeviceOpened("
274 << request.request_id << ", " << label << ")"; 380 << request.request_id << ", " << label << ")";
275 } 381 }
276 requests_.erase(it); 382 requests_.erase(it);
277 break; 383 break;
278 } 384 }
279 } 385 }
280 } 386 }
281 387
282 void MediaStreamDispatcher::OnDeviceOpenFailed(int request_id) { 388 void MediaStreamDispatcher::OnDeviceOpenFailed(int request_id) {
389 DCHECK(main_loop_->BelongsToCurrentThread());
283 for (RequestList::iterator it = requests_.begin(); 390 for (RequestList::iterator it = requests_.begin();
284 it != requests_.end(); ++it) { 391 it != requests_.end(); ++it) {
285 Request& request = *it; 392 Request& request = *it;
286 if (request.ipc_request == request_id) { 393 if (request.ipc_request == request_id) {
287 if (request.handler) { 394 if (request.handler) {
288 request.handler->OnDeviceOpenFailed(request.request_id); 395 request.handler->OnDeviceOpenFailed(request.request_id);
289 DVLOG(1) << "MediaStreamDispatcher::OnDeviceOpenFailed(" 396 DVLOG(1) << "MediaStreamDispatcher::OnDeviceOpenFailed("
290 << request.request_id << ")\n"; 397 << request.request_id << ")\n";
291 } 398 }
292 requests_.erase(it); 399 requests_.erase(it);
(...skipping 18 matching lines...) Expand all
311 418
312 int MediaStreamDispatcher::video_session_id(const std::string& label, 419 int MediaStreamDispatcher::video_session_id(const std::string& label,
313 int index) { 420 int index) {
314 LabelStreamMap::iterator it = label_stream_map_.find(label); 421 LabelStreamMap::iterator it = label_stream_map_.find(label);
315 if (it == label_stream_map_.end()) 422 if (it == label_stream_map_.end())
316 return media_stream::StreamDeviceInfo::kNoId; 423 return media_stream::StreamDeviceInfo::kNoId;
317 424
318 DCHECK_GT(it->second.video_array.size(), static_cast<size_t>(index)); 425 DCHECK_GT(it->second.video_array.size(), static_cast<size_t>(index));
319 return it->second.video_array[index].session_id; 426 return it->second.video_array[index].session_id;
320 } 427 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698