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

Side by Side Diff: content/browser/renderer_host/media/media_stream_dispatcher_host.cc

Issue 1928493002: Use url::Origin to represent security origins in MediaStream-related code. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase 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 "content/browser/renderer_host/media/media_stream_dispatcher_host.h" 5 #include "content/browser/renderer_host/media/media_stream_dispatcher_host.h"
6 6
7 #include "content/browser/browser_main_loop.h" 7 #include "content/browser/browser_main_loop.h"
8 #include "content/browser/child_process_security_policy_impl.h"
9 #include "content/common/media/media_stream_messages.h" 8 #include "content/common/media/media_stream_messages.h"
10 #include "content/common/media/media_stream_options.h" 9 #include "content/common/media/media_stream_options.h"
11 #include "content/public/browser/render_process_host.h" 10 #include "content/public/browser/render_process_host.h"
12 #include "url/gurl.h" 11 #include "url/gurl.h"
13 12
14 namespace content { 13 namespace content {
15 14
16 MediaStreamDispatcherHost::MediaStreamDispatcherHost( 15 MediaStreamDispatcherHost::MediaStreamDispatcherHost(
17 int render_process_id, 16 int render_process_id,
18 const ResourceContext::SaltCallback& salt_callback, 17 const ResourceContext::SaltCallback& salt_callback,
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 void MediaStreamDispatcherHost::OnChannelClosing() { 121 void MediaStreamDispatcherHost::OnChannelClosing() {
123 DVLOG(1) << "MediaStreamDispatcherHost::OnChannelClosing"; 122 DVLOG(1) << "MediaStreamDispatcherHost::OnChannelClosing";
124 123
125 // Since the IPC sender is gone, close all requesting/requested streams. 124 // Since the IPC sender is gone, close all requesting/requested streams.
126 media_stream_manager_->CancelAllRequests(render_process_id_); 125 media_stream_manager_->CancelAllRequests(render_process_id_);
127 } 126 }
128 127
129 MediaStreamDispatcherHost::~MediaStreamDispatcherHost() { 128 MediaStreamDispatcherHost::~MediaStreamDispatcherHost() {
130 } 129 }
131 130
132 void MediaStreamDispatcherHost::OnGenerateStream(int render_frame_id, 131 void MediaStreamDispatcherHost::OnGenerateStream(
133 int page_request_id, 132 int render_frame_id,
134 const StreamControls& controls, 133 int page_request_id,
135 const GURL& security_origin, 134 const StreamControls& controls,
136 bool user_gesture) { 135 const url::Origin& security_origin,
136 bool user_gesture) {
137 DVLOG(1) << "MediaStreamDispatcherHost::OnGenerateStream(" << render_frame_id 137 DVLOG(1) << "MediaStreamDispatcherHost::OnGenerateStream(" << render_frame_id
138 << ", " << page_request_id << ", [" 138 << ", " << page_request_id << ", ["
139 << " audio:" << controls.audio.requested 139 << " audio:" << controls.audio.requested
140 << " video:" << controls.video.requested << " ], " 140 << " video:" << controls.video.requested << " ], " << security_origin
141 << security_origin.spec() << ", " << user_gesture << ")"; 141 << ", " << user_gesture << ")";
142 142
143 if (!IsURLAllowed(security_origin)) 143 if (!MediaStreamManager::IsOriginAllowed(render_process_id_, security_origin))
144 return; 144 return;
145 145
146 media_stream_manager_->GenerateStream( 146 media_stream_manager_->GenerateStream(
147 this, render_process_id_, render_frame_id, salt_callback_, 147 this, render_process_id_, render_frame_id, salt_callback_,
148 page_request_id, controls, security_origin, user_gesture); 148 page_request_id, controls, security_origin, user_gesture);
149 } 149 }
150 150
151 void MediaStreamDispatcherHost::OnCancelGenerateStream(int render_frame_id, 151 void MediaStreamDispatcherHost::OnCancelGenerateStream(int render_frame_id,
152 int page_request_id) { 152 int page_request_id) {
153 DVLOG(1) << "MediaStreamDispatcherHost::OnCancelGenerateStream(" 153 DVLOG(1) << "MediaStreamDispatcherHost::OnCancelGenerateStream("
(...skipping 10 matching lines...) Expand all
164 << render_frame_id << ", " 164 << render_frame_id << ", "
165 << device_id << ")"; 165 << device_id << ")";
166 media_stream_manager_->StopStreamDevice(render_process_id_, render_frame_id, 166 media_stream_manager_->StopStreamDevice(render_process_id_, render_frame_id,
167 device_id); 167 device_id);
168 } 168 }
169 169
170 void MediaStreamDispatcherHost::OnEnumerateDevices( 170 void MediaStreamDispatcherHost::OnEnumerateDevices(
171 int render_frame_id, 171 int render_frame_id,
172 int page_request_id, 172 int page_request_id,
173 MediaStreamType type, 173 MediaStreamType type,
174 const GURL& security_origin) { 174 const url::Origin& security_origin) {
175 DVLOG(1) << "MediaStreamDispatcherHost::OnEnumerateDevices(" 175 DVLOG(1) << "MediaStreamDispatcherHost::OnEnumerateDevices("
176 << render_frame_id << ", " 176 << render_frame_id << ", " << page_request_id << ", " << type << ", "
177 << page_request_id << ", " 177 << security_origin << ")";
178 << type << ", "
179 << security_origin.spec() << ")";
180 178
181 if (!IsURLAllowed(security_origin)) 179 if (!MediaStreamManager::IsOriginAllowed(render_process_id_, security_origin))
182 return; 180 return;
183 181
184 media_stream_manager_->EnumerateDevices( 182 media_stream_manager_->EnumerateDevices(
185 this, render_process_id_, render_frame_id, salt_callback_, 183 this, render_process_id_, render_frame_id, salt_callback_,
186 page_request_id, type, security_origin); 184 page_request_id, type, security_origin);
187 } 185 }
188 186
189 void MediaStreamDispatcherHost::OnCancelEnumerateDevices( 187 void MediaStreamDispatcherHost::OnCancelEnumerateDevices(
190 int render_frame_id, 188 int render_frame_id,
191 int page_request_id) { 189 int page_request_id) {
192 DVLOG(1) << "MediaStreamDispatcherHost::OnCancelEnumerateDevices(" 190 DVLOG(1) << "MediaStreamDispatcherHost::OnCancelEnumerateDevices("
193 << render_frame_id << ", " 191 << render_frame_id << ", "
194 << page_request_id << ")"; 192 << page_request_id << ")";
195 media_stream_manager_->CancelRequest(render_process_id_, render_frame_id, 193 media_stream_manager_->CancelRequest(render_process_id_, render_frame_id,
196 page_request_id); 194 page_request_id);
197 } 195 }
198 196
199 void MediaStreamDispatcherHost::OnOpenDevice( 197 void MediaStreamDispatcherHost::OnOpenDevice(
200 int render_frame_id, 198 int render_frame_id,
201 int page_request_id, 199 int page_request_id,
202 const std::string& device_id, 200 const std::string& device_id,
203 MediaStreamType type, 201 MediaStreamType type,
204 const GURL& security_origin) { 202 const url::Origin& security_origin) {
205 DVLOG(1) << "MediaStreamDispatcherHost::OnOpenDevice(" 203 DVLOG(1) << "MediaStreamDispatcherHost::OnOpenDevice(" << render_frame_id
206 << render_frame_id << ", " 204 << ", " << page_request_id << ", device_id: " << device_id.c_str()
207 << page_request_id << ", device_id: " 205 << ", type: " << type << ", " << security_origin << ")";
208 << device_id.c_str() << ", type: "
209 << type << ", "
210 << security_origin.spec() << ")";
211 206
212 if (!IsURLAllowed(security_origin)) 207 if (!MediaStreamManager::IsOriginAllowed(render_process_id_, security_origin))
213 return; 208 return;
214 209
215 media_stream_manager_->OpenDevice( 210 media_stream_manager_->OpenDevice(
216 this, render_process_id_, render_frame_id, salt_callback_, 211 this, render_process_id_, render_frame_id, salt_callback_,
217 page_request_id, device_id, type, security_origin); 212 page_request_id, device_id, type, security_origin);
218 } 213 }
219 214
220 void MediaStreamDispatcherHost::OnCloseDevice( 215 void MediaStreamDispatcherHost::OnCloseDevice(
221 int render_frame_id, 216 int render_frame_id,
222 const std::string& label) { 217 const std::string& label) {
223 DVLOG(1) << "MediaStreamDispatcherHost::OnCloseDevice(" 218 DVLOG(1) << "MediaStreamDispatcherHost::OnCloseDevice("
224 << render_frame_id << ", " 219 << render_frame_id << ", "
225 << label << ")"; 220 << label << ")";
226 221
227 media_stream_manager_->CancelRequest(label); 222 media_stream_manager_->CancelRequest(label);
228 } 223 }
229 224
230 bool MediaStreamDispatcherHost::IsURLAllowed(const GURL& url) {
231 if (!ChildProcessSecurityPolicyImpl::GetInstance()->CanRequestURL(
232 render_process_id_, url)) {
233 LOG(ERROR) << "MSDH: Renderer requested a URL it's not allowed to use.";
234 return false;
235 }
236
237 return true;
238 }
239
240 } // namespace content 225 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698