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

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

Issue 1873293002: Report if video capturing meets output protection requirement. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/tab_capture_access_handler.h" 5 #include "chrome/browser/media/tab_capture_access_handler.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "chrome/browser/extensions/api/tab_capture/tab_capture_registry.h" 9 #include "chrome/browser/extensions/api/tab_capture/tab_capture_registry.h"
10 #include "chrome/browser/media/media_capture_devices_dispatcher.h" 10 #include "chrome/browser/media/media_capture_devices_dispatcher.h"
11 #include "chrome/browser/media/media_stream_capture_indicator.h" 11 #include "chrome/browser/media/media_stream_capture_indicator.h"
12 #include "chrome/browser/profiles/profile.h" 12 #include "chrome/browser/profiles/profile.h"
13 #include "content/public/browser/web_contents.h" 13 #include "content/public/browser/web_contents.h"
14 #include "extensions/common/permissions/permissions_data.h" 14 #include "extensions/common/permissions/permissions_data.h"
15 15
16 TabCaptureAccessHandler::TabCaptureAccessHandler() { 16 TabCaptureAccessHandler::TabCaptureAccessHandler()
17 } 17 : render_process_id_(-1),
18 render_frame_id_(-1),
19 is_capturing_link_secure_(false),
20 extension_whitelisted_(false) {}
18 21
19 TabCaptureAccessHandler::~TabCaptureAccessHandler() { 22 TabCaptureAccessHandler::~TabCaptureAccessHandler() {
20 } 23 }
21 24
22 bool TabCaptureAccessHandler::SupportsStreamType( 25 bool TabCaptureAccessHandler::SupportsStreamType(
23 const content::MediaStreamType type, 26 const content::MediaStreamType type,
24 const extensions::Extension* extension) { 27 const extensions::Extension* extension) {
25 return type == content::MEDIA_TAB_VIDEO_CAPTURE || 28 return type == content::MEDIA_TAB_VIDEO_CAPTURE ||
26 type == content::MEDIA_TAB_AUDIO_CAPTURE; 29 type == content::MEDIA_TAB_AUDIO_CAPTURE;
27 } 30 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 extension->permissions_data()->HasAPIPermission( 74 extension->permissions_data()->HasAPIPermission(
72 extensions::APIPermission::kTabCapture)) { 75 extensions::APIPermission::kTabCapture)) {
73 devices.push_back(content::MediaStreamDevice( 76 devices.push_back(content::MediaStreamDevice(
74 content::MEDIA_TAB_VIDEO_CAPTURE, std::string(), std::string())); 77 content::MEDIA_TAB_VIDEO_CAPTURE, std::string(), std::string()));
75 } 78 }
76 79
77 if (!devices.empty()) { 80 if (!devices.empty()) {
78 ui = MediaCaptureDevicesDispatcher::GetInstance() 81 ui = MediaCaptureDevicesDispatcher::GetInstance()
79 ->GetMediaStreamCaptureIndicator() 82 ->GetMediaStreamCaptureIndicator()
80 ->RegisterMediaStream(web_contents, devices); 83 ->RegisterMediaStream(web_contents, devices);
84 render_process_id_ = request.render_process_id;
85 render_frame_id_ = request.render_frame_id;
81 } 86 }
87 extension_whitelisted_ = MediaCaptureDevicesDispatcher::IsOriginForCasting(
88 request.security_origin);
82 callback.Run(devices, devices.empty() ? content::MEDIA_DEVICE_INVALID_STATE 89 callback.Run(devices, devices.empty() ? content::MEDIA_DEVICE_INVALID_STATE
83 : content::MEDIA_DEVICE_OK, 90 : content::MEDIA_DEVICE_OK,
84 std::move(ui)); 91 std::move(ui));
85 } 92 }
93
94 bool TabCaptureAccessHandler::IsCaptureInProgress(int render_process_id,
95 int render_frame_id,
96 bool* is_link_secure) {
97 if ((render_frame_id == render_frame_id_) &&
98 (render_process_id == render_process_id_)) {
99 *is_link_secure = is_capturing_link_secure_ && extension_whitelisted_;
100 return true;
101 }
102 *is_link_secure = false;
103 return false;
104 }
105
106 void TabCaptureAccessHandler::UpdateCapturingLinkSecured(
107 int render_process_id,
108 int render_frame_id,
109 int page_request_id,
110 content::MediaStreamType stream_type,
111 bool is_secure) {
112 if (stream_type != content::MEDIA_TAB_VIDEO_CAPTURE ||
113 render_process_id != render_process_id_ ||
114 render_frame_id != render_frame_id_) {
115 return;
116 }
117
118 is_capturing_link_secure_ = is_secure;
119
120 VLOG(1) << "TabCaptureAccessHandler:"
121 << " render_process_id: " << render_process_id
122 << " render_frame_id: " << render_frame_id
123 << " is_capturing_link_secure_: " << is_secure;
124 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698