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/browser/media/media_stream_devices_controller.h" | 5 #include "chrome/browser/media/media_stream_devices_controller.h" |
6 | 6 |
7 #include "base/values.h" | 7 #include "base/values.h" |
8 #include "chrome/browser/content_settings/content_settings_provider.h" | 8 #include "chrome/browser/content_settings/content_settings_provider.h" |
9 #include "chrome/browser/content_settings/host_content_settings_map.h" | 9 #include "chrome/browser/content_settings/host_content_settings_map.h" |
10 #include "chrome/browser/content_settings/tab_specific_content_settings.h" | 10 #include "chrome/browser/content_settings/tab_specific_content_settings.h" |
11 #include "chrome/browser/extensions/api/tab_capture/tab_capture_registry.h" | 11 #include "chrome/browser/extensions/api/tab_capture/tab_capture_registry.h" |
12 #include "chrome/browser/extensions/api/tab_capture/tab_capture_registry_factory
.h" | 12 #include "chrome/browser/extensions/api/tab_capture/tab_capture_registry_factory
.h" |
13 #include "chrome/browser/media/media_capture_devices_dispatcher.h" | 13 #include "chrome/browser/media/media_capture_devices_dispatcher.h" |
14 #include "chrome/browser/media/media_internals.h" | |
15 #include "chrome/browser/prefs/scoped_user_pref_update.h" | 14 #include "chrome/browser/prefs/scoped_user_pref_update.h" |
16 #include "chrome/browser/profiles/profile.h" | 15 #include "chrome/browser/profiles/profile.h" |
17 #include "chrome/browser/ui/browser.h" | 16 #include "chrome/browser/ui/browser.h" |
18 #include "chrome/common/content_settings.h" | 17 #include "chrome/common/content_settings.h" |
19 #include "chrome/common/pref_names.h" | 18 #include "chrome/common/pref_names.h" |
20 #include "content/public/browser/browser_thread.h" | 19 #include "content/public/browser/browser_thread.h" |
21 #include "content/public/common/media_stream_request.h" | 20 #include "content/public/common/media_stream_request.h" |
22 | 21 |
23 using content::BrowserThread; | 22 using content::BrowserThread; |
24 | 23 |
25 namespace { | 24 namespace { |
26 | 25 |
27 bool HasAnyAvailableDevice() { | 26 bool HasAnyAvailableDevice() { |
28 MediaCaptureDevicesDispatcher* dispatcher = | |
29 MediaInternals::GetInstance()->GetMediaCaptureDevicesDispatcher(); | |
30 const content::MediaStreamDevices& audio_devices = | 27 const content::MediaStreamDevices& audio_devices = |
31 dispatcher->GetAudioCaptureDevices(); | 28 MediaCaptureDevicesDispatcher::GetInstance()->GetAudioCaptureDevices(); |
32 const content::MediaStreamDevices& video_devices = | 29 const content::MediaStreamDevices& video_devices = |
33 dispatcher->GetVideoCaptureDevices(); | 30 MediaCaptureDevicesDispatcher::GetInstance()->GetVideoCaptureDevices(); |
34 | 31 |
35 return !audio_devices.empty() || !video_devices.empty(); | 32 return !audio_devices.empty() || !video_devices.empty(); |
36 }; | 33 }; |
37 | 34 |
38 } // namespace | 35 } // namespace |
39 | 36 |
40 MediaStreamDevicesController::MediaStreamDevicesController( | 37 MediaStreamDevicesController::MediaStreamDevicesController( |
41 Profile* profile, | 38 Profile* profile, |
42 TabSpecificContentSettings* content_settings, | 39 TabSpecificContentSettings* content_settings, |
43 const content::MediaStreamRequest& request, | 40 const content::MediaStreamRequest& request, |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 void MediaStreamDevicesController::Accept(bool update_content_setting) { | 119 void MediaStreamDevicesController::Accept(bool update_content_setting) { |
123 content_settings_->OnMediaStreamAccessed(); | 120 content_settings_->OnMediaStreamAccessed(); |
124 | 121 |
125 // Get the default devices for the request. | 122 // Get the default devices for the request. |
126 content::MediaStreamDevices devices; | 123 content::MediaStreamDevices devices; |
127 if (has_audio_ || has_video_) { | 124 if (has_audio_ || has_video_) { |
128 switch (request_.request_type) { | 125 switch (request_.request_type) { |
129 case content::MEDIA_OPEN_DEVICE: | 126 case content::MEDIA_OPEN_DEVICE: |
130 // For open device request pick the desired device or fall back to the | 127 // For open device request pick the desired device or fall back to the |
131 // first available of the given type. | 128 // first available of the given type. |
132 media::GetRequestedDevice(request_.requested_device_id, | 129 MediaCaptureDevicesDispatcher::GetInstance()->GetRequestedDevice( |
133 has_audio_, | 130 request_.requested_device_id, |
134 has_video_, | 131 has_audio_, |
135 &devices); | 132 has_video_, |
| 133 &devices); |
136 break; | 134 break; |
137 case content::MEDIA_DEVICE_ACCESS: | 135 case content::MEDIA_DEVICE_ACCESS: |
138 case content::MEDIA_GENERATE_STREAM: | 136 case content::MEDIA_GENERATE_STREAM: |
139 case content::MEDIA_ENUMERATE_DEVICES: | 137 case content::MEDIA_ENUMERATE_DEVICES: |
140 // Get the default devices for the request. | 138 // Get the default devices for the request. |
141 media::GetDefaultDevicesForProfile(profile_, | 139 MediaCaptureDevicesDispatcher::GetInstance()-> |
142 has_audio_, | 140 GetDefaultDevicesForProfile(profile_, |
143 has_video_, | 141 has_audio_, |
144 &devices); | 142 has_video_, |
| 143 &devices); |
145 break; | 144 break; |
146 } | 145 } |
147 | 146 |
148 if (update_content_setting && IsSchemeSecure() && !devices.empty()) | 147 if (update_content_setting && IsSchemeSecure() && !devices.empty()) |
149 SetPermission(true); | 148 SetPermission(true); |
150 } | 149 } |
151 | 150 |
152 callback_.Run(devices); | 151 callback_.Run(devices); |
153 } | 152 } |
154 | 153 |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 } | 299 } |
301 if (has_video_) { | 300 if (has_video_) { |
302 profile_->GetHostContentSettingsMap()->SetContentSetting( | 301 profile_->GetHostContentSettingsMap()->SetContentSetting( |
303 primary_pattern, | 302 primary_pattern, |
304 ContentSettingsPattern::Wildcard(), | 303 ContentSettingsPattern::Wildcard(), |
305 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, | 304 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, |
306 std::string(), | 305 std::string(), |
307 content_setting); | 306 content_setting); |
308 } | 307 } |
309 } | 308 } |
OLD | NEW |