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

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

Issue 1125333003: Remove CheckMediaAccessPermission() from ContentBrowserClient. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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/prefs/pref_service.h" 10 #include "base/prefs/pref_service.h"
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 window_list.begin(); 227 window_list.begin();
228 iter != window_list.end(); ++iter) { 228 iter != window_list.end(); ++iter) {
229 if ((*iter)->web_contents() == web_contents) 229 if ((*iter)->web_contents() == web_contents)
230 return (*iter)->GetNativeWindow(); 230 return (*iter)->GetNativeWindow();
231 } 231 }
232 232
233 return NULL; 233 return NULL;
234 } 234 }
235 #endif 235 #endif
236 236
237 #if defined(ENABLE_EXTENSIONS)
238 const extensions::Extension* GetExtensionForOrigin(
239 Profile* profile,
240 const GURL& security_origin) {
241 if (!security_origin.SchemeIs(extensions::kExtensionScheme))
242 return NULL;
243
244 const extensions::Extension* extension =
245 extensions::ExtensionRegistry::Get(profile)->enabled_extensions().GetByID(
246 security_origin.host());
247 DCHECK(extension);
248 return extension;
249 }
250 #endif
251
252 } // namespace 237 } // namespace
253 238
254 MediaCaptureDevicesDispatcher::PendingAccessRequest::PendingAccessRequest( 239 MediaCaptureDevicesDispatcher::PendingAccessRequest::PendingAccessRequest(
255 const content::MediaStreamRequest& request, 240 const content::MediaStreamRequest& request,
256 const content::MediaResponseCallback& callback) 241 const content::MediaResponseCallback& callback)
257 : request(request), 242 : request(request),
258 callback(callback) { 243 callback(callback) {
259 } 244 }
260 245
261 MediaCaptureDevicesDispatcher::PendingAccessRequest::~PendingAccessRequest() {} 246 MediaCaptureDevicesDispatcher::PendingAccessRequest::~PendingAccessRequest() {}
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 ProcessMediaAccessRequestFromPlatformAppOrExtension( 347 ProcessMediaAccessRequestFromPlatformAppOrExtension(
363 web_contents, request, callback, extension); 348 web_contents, request, callback, extension);
364 return; 349 return;
365 } 350 }
366 #endif 351 #endif
367 ProcessRegularMediaAccessRequest(web_contents, request, callback); 352 ProcessRegularMediaAccessRequest(web_contents, request, callback);
368 } 353 }
369 } 354 }
370 355
371 bool MediaCaptureDevicesDispatcher::CheckMediaAccessPermission( 356 bool MediaCaptureDevicesDispatcher::CheckMediaAccessPermission(
372 content::BrowserContext* browser_context,
373 const GURL& security_origin,
374 content::MediaStreamType type) {
375 DCHECK_CURRENTLY_ON(BrowserThread::UI);
376 DCHECK(type == content::MEDIA_DEVICE_AUDIO_CAPTURE ||
377 type == content::MEDIA_DEVICE_VIDEO_CAPTURE);
378
379 Profile* profile = Profile::FromBrowserContext(browser_context);
380 #if defined(ENABLE_EXTENSIONS)
381 const extensions::Extension* extension =
382 GetExtensionForOrigin(profile, security_origin);
383
384 if (extension && (extension->is_platform_app() ||
385 IsMediaRequestWhitelistedForExtension(extension))) {
386 return extension->permissions_data()->HasAPIPermission(
387 type == content::MEDIA_DEVICE_AUDIO_CAPTURE
388 ? extensions::APIPermission::kAudioCapture
389 : extensions::APIPermission::kVideoCapture);
390 }
391 #endif
392
393 ContentSettingsType contentSettingsType =
394 type == content::MEDIA_DEVICE_AUDIO_CAPTURE
395 ? CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC
396 : CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA;
397
398 if (CheckAllowAllMediaStreamContentForOrigin(
399 profile, security_origin, contentSettingsType)) {
400 return true;
401 }
402
403 const char* policy_name = type == content::MEDIA_DEVICE_AUDIO_CAPTURE
404 ? prefs::kAudioCaptureAllowed
405 : prefs::kVideoCaptureAllowed;
406 const char* list_policy_name = type == content::MEDIA_DEVICE_AUDIO_CAPTURE
407 ? prefs::kAudioCaptureAllowedUrls
408 : prefs::kVideoCaptureAllowedUrls;
409 if (GetDevicePolicy(
410 profile, security_origin, policy_name, list_policy_name) ==
411 ALWAYS_ALLOW) {
412 return true;
413 }
414
415 // There's no secondary URL for these content types, hence duplicating
416 // |security_origin|.
417 if (profile->GetHostContentSettingsMap()->GetContentSetting(
418 security_origin,
419 security_origin,
420 contentSettingsType,
421 content_settings::ResourceIdentifier()) == CONTENT_SETTING_ALLOW) {
422 return true;
423 }
424
425 return false;
426 }
427
428 bool MediaCaptureDevicesDispatcher::CheckMediaAccessPermission(
429 content::WebContents* web_contents, 357 content::WebContents* web_contents,
430 const GURL& security_origin, 358 const GURL& security_origin,
431 content::MediaStreamType type) { 359 content::MediaStreamType type) {
432 DCHECK_CURRENTLY_ON(BrowserThread::UI); 360 DCHECK_CURRENTLY_ON(BrowserThread::UI);
433 DCHECK(type == content::MEDIA_DEVICE_AUDIO_CAPTURE || 361 DCHECK(type == content::MEDIA_DEVICE_AUDIO_CAPTURE ||
434 type == content::MEDIA_DEVICE_VIDEO_CAPTURE); 362 type == content::MEDIA_DEVICE_VIDEO_CAPTURE);
435 363
436 Profile* profile = 364 Profile* profile =
437 Profile::FromBrowserContext(web_contents->GetBrowserContext()); 365 Profile::FromBrowserContext(web_contents->GetBrowserContext());
438 366
(...skipping 700 matching lines...) Expand 10 before | Expand all | Expand 10 after
1139 1067
1140 void MediaCaptureDevicesDispatcher::SetTestAudioCaptureDevices( 1068 void MediaCaptureDevicesDispatcher::SetTestAudioCaptureDevices(
1141 const MediaStreamDevices& devices) { 1069 const MediaStreamDevices& devices) {
1142 test_audio_devices_ = devices; 1070 test_audio_devices_ = devices;
1143 } 1071 }
1144 1072
1145 void MediaCaptureDevicesDispatcher::SetTestVideoCaptureDevices( 1073 void MediaCaptureDevicesDispatcher::SetTestVideoCaptureDevices(
1146 const MediaStreamDevices& devices) { 1074 const MediaStreamDevices& devices) {
1147 test_video_devices_ = devices; 1075 test_video_devices_ = devices;
1148 } 1076 }
OLDNEW
« no previous file with comments | « chrome/browser/media/media_capture_devices_dispatcher.h ('k') | content/public/browser/content_browser_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698