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 |