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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 DesktopCaptureAccessHandler* ToDesktopCaptureAccessHandler( |
70 MediaAccessHandler* handler) { | 70 MediaAccessHandler* handler) { |
71 return static_cast<DesktopCaptureAccessHandler*>(handler); | 71 return static_cast<DesktopCaptureAccessHandler*>(handler); |
72 } | 72 } |
| 73 |
| 74 inline TabCaptureAccessHandler* ToTabCaptureAccessHandler( |
| 75 MediaAccessHandler* handler) { |
| 76 return static_cast<TabCaptureAccessHandler*>(handler); |
| 77 } |
73 #endif | 78 #endif |
74 } // namespace | 79 } // namespace |
75 | 80 |
76 MediaCaptureDevicesDispatcher* MediaCaptureDevicesDispatcher::GetInstance() { | 81 MediaCaptureDevicesDispatcher* MediaCaptureDevicesDispatcher::GetInstance() { |
77 return base::Singleton<MediaCaptureDevicesDispatcher>::get(); | 82 return base::Singleton<MediaCaptureDevicesDispatcher>::get(); |
78 } | 83 } |
79 | 84 |
80 MediaCaptureDevicesDispatcher::MediaCaptureDevicesDispatcher() | 85 MediaCaptureDevicesDispatcher::MediaCaptureDevicesDispatcher() |
81 : is_device_enumeration_disabled_(false), | 86 : is_device_enumeration_disabled_(false), |
82 media_stream_capture_indicator_(new MediaStreamCaptureIndicator()) { | 87 media_stream_capture_indicator_(new MediaStreamCaptureIndicator()) { |
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
379 for (MediaAccessHandler* handler : media_access_handlers_) { | 384 for (MediaAccessHandler* handler : media_access_handlers_) { |
380 if (handler->SupportsStreamType(content::MEDIA_DESKTOP_VIDEO_CAPTURE, | 385 if (handler->SupportsStreamType(content::MEDIA_DESKTOP_VIDEO_CAPTURE, |
381 NULL)) { | 386 NULL)) { |
382 return ToDesktopCaptureAccessHandler(handler)->IsCaptureInProgress(); | 387 return ToDesktopCaptureAccessHandler(handler)->IsCaptureInProgress(); |
383 } | 388 } |
384 } | 389 } |
385 #endif | 390 #endif |
386 return false; | 391 return false; |
387 } | 392 } |
388 | 393 |
| 394 bool MediaCaptureDevicesDispatcher::IsCaptureInProgress(int render_process_id, |
| 395 int render_frame_id, |
| 396 bool* is_link_secure) { |
| 397 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 398 #if defined(ENABLE_EXTENSIONS) |
| 399 for (MediaAccessHandler* handler : media_access_handlers_) { |
| 400 if (handler->SupportsStreamType(content::MEDIA_DESKTOP_VIDEO_CAPTURE, |
| 401 nullptr)) { |
| 402 return ToDesktopCaptureAccessHandler(handler)->IsCaptureInProgress( |
| 403 render_process_id, render_frame_id, is_link_secure); |
| 404 } |
| 405 if (handler->SupportsStreamType(content::MEDIA_TAB_VIDEO_CAPTURE, |
| 406 nullptr)) { |
| 407 return ToTabCaptureAccessHandler(handler)->IsCaptureInProgress( |
| 408 render_process_id, render_frame_id, is_link_secure); |
| 409 } |
| 410 } |
| 411 #endif |
| 412 *is_link_secure = false; |
| 413 return false; |
| 414 } |
| 415 |
389 void MediaCaptureDevicesDispatcher::SetTestAudioCaptureDevices( | 416 void MediaCaptureDevicesDispatcher::SetTestAudioCaptureDevices( |
390 const MediaStreamDevices& devices) { | 417 const MediaStreamDevices& devices) { |
391 test_audio_devices_ = devices; | 418 test_audio_devices_ = devices; |
392 } | 419 } |
393 | 420 |
394 void MediaCaptureDevicesDispatcher::SetTestVideoCaptureDevices( | 421 void MediaCaptureDevicesDispatcher::SetTestVideoCaptureDevices( |
395 const MediaStreamDevices& devices) { | 422 const MediaStreamDevices& devices) { |
396 test_video_devices_ = devices; | 423 test_video_devices_ = devices; |
397 } | 424 } |
| 425 |
| 426 void MediaCaptureDevicesDispatcher::OnSetCapturingLinkSecured( |
| 427 int render_process_id, |
| 428 int render_frame_id, |
| 429 int page_request_id, |
| 430 content::MediaStreamType stream_type, |
| 431 bool is_secure) { |
| 432 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 433 if (stream_type != content::MEDIA_TAB_VIDEO_CAPTURE && |
| 434 stream_type != content::MEDIA_DESKTOP_VIDEO_CAPTURE) |
| 435 return; |
| 436 |
| 437 BrowserThread::PostTask( |
| 438 BrowserThread::UI, FROM_HERE, |
| 439 base::Bind(&MediaCaptureDevicesDispatcher::UpdateCapturingLinkSecured, |
| 440 base::Unretained(this), render_process_id, render_frame_id, |
| 441 page_request_id, stream_type, is_secure)); |
| 442 } |
| 443 |
| 444 void MediaCaptureDevicesDispatcher::UpdateCapturingLinkSecured( |
| 445 int render_process_id, |
| 446 int render_frame_id, |
| 447 int page_request_id, |
| 448 content::MediaStreamType stream_type, |
| 449 bool is_secure) { |
| 450 if (stream_type != content::MEDIA_TAB_VIDEO_CAPTURE && |
| 451 stream_type != content::MEDIA_DESKTOP_VIDEO_CAPTURE) |
| 452 return; |
| 453 |
| 454 #if defined(ENABLE_EXTENSIONS) |
| 455 for (MediaAccessHandler* handler : media_access_handlers_) { |
| 456 if (stream_type == content::MEDIA_DESKTOP_VIDEO_CAPTURE && |
| 457 handler->SupportsStreamType(stream_type, nullptr)) { |
| 458 ToDesktopCaptureAccessHandler(handler)->UpdateCapturingLinkSecured( |
| 459 render_process_id, render_frame_id, page_request_id, stream_type, |
| 460 is_secure); |
| 461 break; |
| 462 } |
| 463 |
| 464 if (stream_type == content::MEDIA_TAB_VIDEO_CAPTURE && |
| 465 handler->SupportsStreamType(stream_type, nullptr)) { |
| 466 ToTabCaptureAccessHandler(handler)->UpdateCapturingLinkSecured( |
| 467 render_process_id, render_frame_id, page_request_id, stream_type, |
| 468 is_secure); |
| 469 break; |
| 470 } |
| 471 } |
| 472 #endif |
| 473 } |
OLD | NEW |