| 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 |