OLD | NEW |
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 "chrome/browser/media/media_capture_devices_dispatcher.h" | 5 #include "chrome/browser/media/media_capture_devices_dispatcher.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/metrics/field_trial.h" | 9 #include "base/metrics/field_trial.h" |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 content::MediaStreamDevices::const_iterator iter = devices.begin(); | 59 content::MediaStreamDevices::const_iterator iter = devices.begin(); |
60 for (; iter != devices.end(); ++iter) { | 60 for (; iter != devices.end(); ++iter) { |
61 if (iter->id == device_id) { | 61 if (iter->id == device_id) { |
62 return &(*iter); | 62 return &(*iter); |
63 } | 63 } |
64 } | 64 } |
65 return NULL; | 65 return NULL; |
66 } | 66 } |
67 | 67 |
68 #if defined(ENABLE_EXTENSIONS) | 68 #if defined(ENABLE_EXTENSIONS) |
69 inline DesktopCaptureAccessHandler* ToDesktopCaptureAccessHandler( | 69 inline CaptureAccessHandlerBase* ToCaptureAccessHandlerBase( |
70 MediaAccessHandler* handler) { | 70 MediaAccessHandler* handler) { |
71 return static_cast<DesktopCaptureAccessHandler*>(handler); | 71 return static_cast<CaptureAccessHandlerBase*>(handler); |
72 } | 72 } |
73 #endif | 73 #endif |
74 } // namespace | 74 } // namespace |
75 | 75 |
76 MediaCaptureDevicesDispatcher* MediaCaptureDevicesDispatcher::GetInstance() { | 76 MediaCaptureDevicesDispatcher* MediaCaptureDevicesDispatcher::GetInstance() { |
77 return base::Singleton<MediaCaptureDevicesDispatcher>::get(); | 77 return base::Singleton<MediaCaptureDevicesDispatcher>::get(); |
78 } | 78 } |
79 | 79 |
80 MediaCaptureDevicesDispatcher::MediaCaptureDevicesDispatcher() | 80 MediaCaptureDevicesDispatcher::MediaCaptureDevicesDispatcher() |
81 : is_device_enumeration_disabled_(false), | 81 : is_device_enumeration_disabled_(false), |
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 } | 366 } |
367 | 367 |
368 void MediaCaptureDevicesDispatcher::OnCreatingAudioStreamOnUIThread( | 368 void MediaCaptureDevicesDispatcher::OnCreatingAudioStreamOnUIThread( |
369 int render_process_id, | 369 int render_process_id, |
370 int render_frame_id) { | 370 int render_frame_id) { |
371 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 371 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
372 FOR_EACH_OBSERVER(Observer, observers_, | 372 FOR_EACH_OBSERVER(Observer, observers_, |
373 OnCreatingAudioStream(render_process_id, render_frame_id)); | 373 OnCreatingAudioStream(render_process_id, render_frame_id)); |
374 } | 374 } |
375 | 375 |
376 bool MediaCaptureDevicesDispatcher::IsDesktopCaptureInProgress() { | 376 bool MediaCaptureDevicesDispatcher::IsInsecureCapturingInProgress( |
| 377 int render_process_id, |
| 378 int render_frame_id) { |
377 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 379 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
378 #if defined(ENABLE_EXTENSIONS) | 380 #if defined(ENABLE_EXTENSIONS) |
379 for (MediaAccessHandler* handler : media_access_handlers_) { | 381 for (MediaAccessHandler* handler : media_access_handlers_) { |
380 if (handler->SupportsStreamType(content::MEDIA_DESKTOP_VIDEO_CAPTURE, | 382 if (handler->SupportsStreamType(content::MEDIA_DESKTOP_VIDEO_CAPTURE, |
381 NULL)) { | 383 nullptr) || |
382 return ToDesktopCaptureAccessHandler(handler)->IsCaptureInProgress(); | 384 handler->SupportsStreamType(content::MEDIA_TAB_VIDEO_CAPTURE, |
| 385 nullptr)) { |
| 386 if (ToCaptureAccessHandlerBase(handler)->IsInsecureCapturingInProgress( |
| 387 render_process_id, render_frame_id)) |
| 388 return true; |
383 } | 389 } |
384 } | 390 } |
385 #endif | 391 #endif |
386 return false; | 392 return false; |
387 } | 393 } |
388 | 394 |
389 void MediaCaptureDevicesDispatcher::SetTestAudioCaptureDevices( | 395 void MediaCaptureDevicesDispatcher::SetTestAudioCaptureDevices( |
390 const MediaStreamDevices& devices) { | 396 const MediaStreamDevices& devices) { |
391 test_audio_devices_ = devices; | 397 test_audio_devices_ = devices; |
392 } | 398 } |
393 | 399 |
394 void MediaCaptureDevicesDispatcher::SetTestVideoCaptureDevices( | 400 void MediaCaptureDevicesDispatcher::SetTestVideoCaptureDevices( |
395 const MediaStreamDevices& devices) { | 401 const MediaStreamDevices& devices) { |
396 test_video_devices_ = devices; | 402 test_video_devices_ = devices; |
397 } | 403 } |
| 404 |
| 405 void MediaCaptureDevicesDispatcher::OnSetCapturingLinkSecured( |
| 406 int render_process_id, |
| 407 int render_frame_id, |
| 408 int page_request_id, |
| 409 content::MediaStreamType stream_type, |
| 410 bool is_secure) { |
| 411 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 412 if (stream_type != content::MEDIA_TAB_VIDEO_CAPTURE && |
| 413 stream_type != content::MEDIA_DESKTOP_VIDEO_CAPTURE) |
| 414 return; |
| 415 |
| 416 BrowserThread::PostTask( |
| 417 BrowserThread::UI, FROM_HERE, |
| 418 base::Bind(&MediaCaptureDevicesDispatcher::UpdateCapturingLinkSecured, |
| 419 base::Unretained(this), render_process_id, render_frame_id, |
| 420 page_request_id, stream_type, is_secure)); |
| 421 } |
| 422 |
| 423 void MediaCaptureDevicesDispatcher::UpdateCapturingLinkSecured( |
| 424 int render_process_id, |
| 425 int render_frame_id, |
| 426 int page_request_id, |
| 427 content::MediaStreamType stream_type, |
| 428 bool is_secure) { |
| 429 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 430 if (stream_type != content::MEDIA_TAB_VIDEO_CAPTURE && |
| 431 stream_type != content::MEDIA_DESKTOP_VIDEO_CAPTURE) |
| 432 return; |
| 433 |
| 434 #if defined(ENABLE_EXTENSIONS) |
| 435 for (MediaAccessHandler* handler : media_access_handlers_) { |
| 436 if (handler->SupportsStreamType(stream_type, nullptr)) { |
| 437 ToCaptureAccessHandlerBase(handler)->UpdateCapturingLinkSecured( |
| 438 render_process_id, render_frame_id, page_request_id, is_secure); |
| 439 break; |
| 440 } |
| 441 } |
| 442 #endif |
| 443 } |
OLD | NEW |