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

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

Issue 1939313003: Revert of Add support for device-change notifications to MediaStreamDispatcher (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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
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 <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "content/common/media/media_stream_messages.h" 10 #include "content/common/media/media_stream_messages.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 base::WeakPtr<MediaStreamDispatcherEventHandler> handler; 61 base::WeakPtr<MediaStreamDispatcherEventHandler> handler;
62 StreamDeviceInfoArray audio_array; 62 StreamDeviceInfoArray audio_array;
63 StreamDeviceInfoArray video_array; 63 StreamDeviceInfoArray video_array;
64 }; 64 };
65 65
66 MediaStreamDispatcher::MediaStreamDispatcher(RenderFrame* render_frame) 66 MediaStreamDispatcher::MediaStreamDispatcher(RenderFrame* render_frame)
67 : RenderFrameObserver(render_frame), 67 : RenderFrameObserver(render_frame),
68 next_ipc_id_(0) { 68 next_ipc_id_(0) {
69 } 69 }
70 70
71 MediaStreamDispatcher::~MediaStreamDispatcher() { 71 MediaStreamDispatcher::~MediaStreamDispatcher() {}
72 DCHECK(device_change_subscribers_.empty());
73 }
74 72
75 void MediaStreamDispatcher::GenerateStream( 73 void MediaStreamDispatcher::GenerateStream(
76 int request_id, 74 int request_id,
77 const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler, 75 const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler,
78 const StreamControls& controls, 76 const StreamControls& controls,
79 const url::Origin& security_origin) { 77 const url::Origin& security_origin) {
80 DCHECK(thread_checker_.CalledOnValidThread()); 78 DCHECK(thread_checker_.CalledOnValidThread());
81 DVLOG(1) << "MediaStreamDispatcher::GenerateStream(" << request_id << ")"; 79 DVLOG(1) << "MediaStreamDispatcher::GenerateStream(" << request_id << ")";
82 80
83 requests_.push_back(Request(event_handler, request_id, next_ipc_id_)); 81 requests_.push_back(Request(event_handler, request_id, next_ipc_id_));
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 << ", {label = " << label << "}"; 202 << ", {label = " << label << "}";
205 203
206 LabelStreamMap::iterator it = label_stream_map_.find(label); 204 LabelStreamMap::iterator it = label_stream_map_.find(label);
207 if (it == label_stream_map_.end()) 205 if (it == label_stream_map_.end())
208 return; 206 return;
209 label_stream_map_.erase(it); 207 label_stream_map_.erase(it);
210 208
211 Send(new MediaStreamHostMsg_CloseDevice(routing_id(), label)); 209 Send(new MediaStreamHostMsg_CloseDevice(routing_id(), label));
212 } 210 }
213 211
214 void MediaStreamDispatcher::SubscribeToDeviceChangeNotifications(
215 const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler,
216 const url::Origin& security_origin) {
217 DCHECK(thread_checker_.CalledOnValidThread());
218 DCHECK(std::find_if(
219 device_change_subscribers_.begin(),
220 device_change_subscribers_.end(),
221 [&event_handler](
222 const base::WeakPtr<MediaStreamDispatcherEventHandler>& item) {
223 return event_handler.get() == item.get();
224 }) == device_change_subscribers_.end());
225 DVLOG(1) << "MediaStreamDispatcher::SubscribeToDeviceChangeNotifications";
226
227 if (device_change_subscribers_.empty()) {
228 Send(new MediaStreamHostMsg_SubscribeToDeviceChangeNotifications(
229 routing_id(), security_origin));
230 }
231 device_change_subscribers_.push_back(event_handler);
232 }
233
234 void MediaStreamDispatcher::CancelDeviceChangeNotifications(
235 const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler) {
236 DCHECK(thread_checker_.CalledOnValidThread());
237 DVLOG(1) << "MediaStreamDispatcher::SubscribeToDeviceChangeNotifications";
238 auto it = std::find_if(
239 device_change_subscribers_.begin(), device_change_subscribers_.end(),
240 [&event_handler](
241 const base::WeakPtr<MediaStreamDispatcherEventHandler>& item) {
242 return event_handler.get() == item.get();
243 });
244 CHECK(it != device_change_subscribers_.end());
245 device_change_subscribers_.erase(it);
246
247 if (device_change_subscribers_.empty())
248 Send(new MediaStreamHostMsg_CancelDeviceChangeNotifications(routing_id()));
249 }
250
251 void MediaStreamDispatcher::OnDestruct() { 212 void MediaStreamDispatcher::OnDestruct() {
252 // Do not self-destruct. UserMediaClientImpl owns |this|. 213 // Do not self-destruct. UserMediaClientImpl owns |this|.
253 } 214 }
254 215
255 bool MediaStreamDispatcher::Send(IPC::Message* message) { 216 bool MediaStreamDispatcher::Send(IPC::Message* message) {
256 if (!RenderThread::Get()) { 217 if (!RenderThread::Get()) {
257 delete message; 218 delete message;
258 return false; 219 return false;
259 } 220 }
260 221
261 return RenderThread::Get()->Send(message); 222 return RenderThread::Get()->Send(message);
262 } 223 }
263 224
264 bool MediaStreamDispatcher::OnMessageReceived(const IPC::Message& message) { 225 bool MediaStreamDispatcher::OnMessageReceived(const IPC::Message& message) {
265 bool handled = true; 226 bool handled = true;
266 IPC_BEGIN_MESSAGE_MAP(MediaStreamDispatcher, message) 227 IPC_BEGIN_MESSAGE_MAP(MediaStreamDispatcher, message)
267 IPC_MESSAGE_HANDLER(MediaStreamMsg_StreamGenerated, 228 IPC_MESSAGE_HANDLER(MediaStreamMsg_StreamGenerated,
268 OnStreamGenerated) 229 OnStreamGenerated)
269 IPC_MESSAGE_HANDLER(MediaStreamMsg_StreamGenerationFailed, 230 IPC_MESSAGE_HANDLER(MediaStreamMsg_StreamGenerationFailed,
270 OnStreamGenerationFailed) 231 OnStreamGenerationFailed)
271 IPC_MESSAGE_HANDLER(MediaStreamMsg_DeviceStopped, 232 IPC_MESSAGE_HANDLER(MediaStreamMsg_DeviceStopped,
272 OnDeviceStopped) 233 OnDeviceStopped)
273 IPC_MESSAGE_HANDLER(MediaStreamMsg_DevicesEnumerated, 234 IPC_MESSAGE_HANDLER(MediaStreamMsg_DevicesEnumerated,
274 OnDevicesEnumerated) 235 OnDevicesEnumerated)
275 IPC_MESSAGE_HANDLER(MediaStreamMsg_DeviceOpened, 236 IPC_MESSAGE_HANDLER(MediaStreamMsg_DeviceOpened,
276 OnDeviceOpened) 237 OnDeviceOpened)
277 IPC_MESSAGE_HANDLER(MediaStreamMsg_DeviceOpenFailed, 238 IPC_MESSAGE_HANDLER(MediaStreamMsg_DeviceOpenFailed,
278 OnDeviceOpenFailed) 239 OnDeviceOpenFailed)
279 IPC_MESSAGE_HANDLER(MediaStreamMsg_DevicesChanged, OnDevicesChanged)
280 IPC_MESSAGE_UNHANDLED(handled = false) 240 IPC_MESSAGE_UNHANDLED(handled = false)
281 IPC_END_MESSAGE_MAP() 241 IPC_END_MESSAGE_MAP()
282 return handled; 242 return handled;
283 } 243 }
284 244
285 void MediaStreamDispatcher::OnStreamGenerated( 245 void MediaStreamDispatcher::OnStreamGenerated(
286 int request_id, 246 int request_id,
287 const std::string& label, 247 const std::string& label,
288 const StreamDeviceInfoArray& audio_array, 248 const StreamDeviceInfoArray& audio_array,
289 const StreamDeviceInfoArray& video_array) { 249 const StreamDeviceInfoArray& video_array) {
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 request.handler->OnDeviceOpenFailed(request.request_id); 371 request.handler->OnDeviceOpenFailed(request.request_id);
412 DVLOG(1) << "MediaStreamDispatcher::OnDeviceOpenFailed(" 372 DVLOG(1) << "MediaStreamDispatcher::OnDeviceOpenFailed("
413 << request.request_id << ")\n"; 373 << request.request_id << ")\n";
414 } 374 }
415 requests_.erase(it); 375 requests_.erase(it);
416 break; 376 break;
417 } 377 }
418 } 378 }
419 } 379 }
420 380
421 void MediaStreamDispatcher::OnDevicesChanged() {
422 DCHECK(thread_checker_.CalledOnValidThread());
423 for (auto event_handler : device_change_subscribers_) {
424 DCHECK(event_handler);
425 event_handler->OnDevicesChanged();
426 }
427 }
428
429 int MediaStreamDispatcher::audio_session_id(const std::string& label, 381 int MediaStreamDispatcher::audio_session_id(const std::string& label,
430 int index) { 382 int index) {
431 DCHECK(thread_checker_.CalledOnValidThread()); 383 DCHECK(thread_checker_.CalledOnValidThread());
432 LabelStreamMap::iterator it = label_stream_map_.find(label); 384 LabelStreamMap::iterator it = label_stream_map_.find(label);
433 if (it == label_stream_map_.end() || 385 if (it == label_stream_map_.end() ||
434 it->second.audio_array.size() <= static_cast<size_t>(index)) { 386 it->second.audio_array.size() <= static_cast<size_t>(index)) {
435 return StreamDeviceInfo::kNoId; 387 return StreamDeviceInfo::kNoId;
436 } 388 }
437 return it->second.audio_array[index].session_id; 389 return it->second.audio_array[index].session_id;
438 } 390 }
439 391
440 bool MediaStreamDispatcher::IsStream(const std::string& label) { 392 bool MediaStreamDispatcher::IsStream(const std::string& label) {
441 DCHECK(thread_checker_.CalledOnValidThread()); 393 DCHECK(thread_checker_.CalledOnValidThread());
442 return label_stream_map_.find(label) != label_stream_map_.end(); 394 return label_stream_map_.find(label) != label_stream_map_.end();
443 } 395 }
444 396
445 int MediaStreamDispatcher::video_session_id(const std::string& label, 397 int MediaStreamDispatcher::video_session_id(const std::string& label,
446 int index) { 398 int index) {
447 DCHECK(thread_checker_.CalledOnValidThread()); 399 DCHECK(thread_checker_.CalledOnValidThread());
448 LabelStreamMap::iterator it = label_stream_map_.find(label); 400 LabelStreamMap::iterator it = label_stream_map_.find(label);
449 if (it == label_stream_map_.end() || 401 if (it == label_stream_map_.end() ||
450 it->second.video_array.size() <= static_cast<size_t>(index)) { 402 it->second.video_array.size() <= static_cast<size_t>(index)) {
451 return StreamDeviceInfo::kNoId; 403 return StreamDeviceInfo::kNoId;
452 } 404 }
453 return it->second.video_array[index].session_id; 405 return it->second.video_array[index].session_id;
454 } 406 }
455 407
456 } // namespace content 408 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/media_stream_dispatcher.h ('k') | content/renderer/media/media_stream_dispatcher_eventhandler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698