| 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/common/extensions/request_media_access_permission_helper.h" | 5 #include "chrome/common/extensions/request_media_access_permission_helper.h" |
| 6 | 6 |
| 7 #include "chrome/common/extensions/feature_switch.h" | 7 #include "chrome/common/extensions/feature_switch.h" |
| 8 | 8 |
| 9 namespace extensions { | 9 namespace extensions { |
| 10 | 10 |
| 11 // static | 11 // static |
| 12 void RequestMediaAccessPermissionHelper::AuthorizeRequest( | 12 void RequestMediaAccessPermissionHelper::AuthorizeRequest( |
| 13 const content::MediaStreamDevices& devices, | 13 const content::MediaStreamDevices& devices, |
| 14 const content::MediaStreamRequest* request, | 14 const content::MediaStreamRequest& request, |
| 15 const content::MediaResponseCallback& callback, | 15 const content::MediaResponseCallback& callback, |
| 16 const extensions::Extension* extension, | 16 const extensions::Extension* extension, |
| 17 bool is_packaged_app) { | 17 bool is_packaged_app) { |
| 18 content::MediaStreamDevices accepted_devices; | 18 content::MediaStreamDevices accepted_devices; |
| 19 bool accepted_an_audio_device = false; | 19 bool accepted_an_audio_device = false; |
| 20 bool accepted_a_video_device = false; | 20 bool accepted_a_video_device = false; |
| 21 for (content::MediaStreamDevices::const_iterator it = | 21 for (content::MediaStreamDevices::const_iterator it = |
| 22 devices.begin(); it != devices.end(); ++it) { | 22 devices.begin(); it != devices.end(); ++it) { |
| 23 if (!accepted_an_audio_device && content::IsAudioMediaType(it->type)) { | 23 if (!accepted_an_audio_device && content::IsAudioMediaType(it->type)) { |
| 24 // Require flag and tab capture permission for tab media. | 24 // Require flag and tab capture permission for tab media. |
| 25 // Require audio capture permission for packaged apps. | 25 // Require audio capture permission for packaged apps. |
| 26 if ((request->audio_type == content::MEDIA_TAB_AUDIO_CAPTURE && | 26 if ((request.audio_type == content::MEDIA_TAB_AUDIO_CAPTURE && |
| 27 extensions::FeatureSwitch::tab_capture()->IsEnabled() && | 27 extensions::FeatureSwitch::tab_capture()->IsEnabled() && |
| 28 extension->HasAPIPermission(APIPermission::kTabCapture)) || | 28 extension->HasAPIPermission(APIPermission::kTabCapture)) || |
| 29 (request->audio_type == content::MEDIA_DEVICE_AUDIO_CAPTURE && | 29 (request.audio_type == content::MEDIA_DEVICE_AUDIO_CAPTURE && |
| 30 is_packaged_app && | 30 is_packaged_app && |
| 31 extension->HasAPIPermission(APIPermission::kAudioCapture))) { | 31 extension->HasAPIPermission(APIPermission::kAudioCapture))) { |
| 32 accepted_devices.push_back(*it); | 32 accepted_devices.push_back(*it); |
| 33 accepted_an_audio_device = true; | 33 accepted_an_audio_device = true; |
| 34 } | 34 } |
| 35 } else if (!accepted_a_video_device && | 35 } else if (!accepted_a_video_device && |
| 36 content::IsVideoMediaType(it->type)) { | 36 content::IsVideoMediaType(it->type)) { |
| 37 // Require flag and tab capture permission for tab media. | 37 // Require flag and tab capture permission for tab media. |
| 38 // Require video capture permission for packaged apps. | 38 // Require video capture permission for packaged apps. |
| 39 if ((request->video_type == content::MEDIA_TAB_VIDEO_CAPTURE && | 39 if ((request.video_type == content::MEDIA_TAB_VIDEO_CAPTURE && |
| 40 extensions::FeatureSwitch::tab_capture()->IsEnabled() && | 40 extensions::FeatureSwitch::tab_capture()->IsEnabled() && |
| 41 extension->HasAPIPermission(APIPermission::kTabCapture)) || | 41 extension->HasAPIPermission(APIPermission::kTabCapture)) || |
| 42 (request->video_type == content::MEDIA_DEVICE_VIDEO_CAPTURE && | 42 (request.video_type == content::MEDIA_DEVICE_VIDEO_CAPTURE && |
| 43 is_packaged_app && | 43 is_packaged_app && |
| 44 extension->HasAPIPermission(APIPermission::kVideoCapture))) { | 44 extension->HasAPIPermission(APIPermission::kVideoCapture))) { |
| 45 accepted_devices.push_back(*it); | 45 accepted_devices.push_back(*it); |
| 46 accepted_a_video_device = true; | 46 accepted_a_video_device = true; |
| 47 } | 47 } |
| 48 } | 48 } |
| 49 } | 49 } |
| 50 | 50 |
| 51 callback.Run(accepted_devices); | 51 callback.Run(accepted_devices); |
| 52 } | 52 } |
| 53 | 53 |
| 54 } // namespace extensions | 54 } // namespace extensions |
| OLD | NEW |