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

Side by Side Diff: chrome/browser/media/media_capture_devices_dispatcher.cc

Issue 1873293002: Report if video capturing meets output protection requirement. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments. 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 "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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698