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 "content/browser/renderer_host/media/media_stream_manager.h" | 5 #include "content/browser/renderer_host/media/media_stream_manager.h" |
6 | 6 |
7 #include <list> | 7 #include <list> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 StreamDeviceInfoArray video_devices; | 127 StreamDeviceInfoArray video_devices; |
128 }; | 128 }; |
129 | 129 |
130 MediaStreamManager::EnumerationCache::EnumerationCache() | 130 MediaStreamManager::EnumerationCache::EnumerationCache() |
131 : valid(false) { | 131 : valid(false) { |
132 } | 132 } |
133 | 133 |
134 MediaStreamManager::EnumerationCache::~EnumerationCache() { | 134 MediaStreamManager::EnumerationCache::~EnumerationCache() { |
135 } | 135 } |
136 | 136 |
| 137 bool MediaStreamManager::always_use_fake_devices_ = false; |
| 138 |
| 139 // static |
| 140 void MediaStreamManager::AlwaysUseFakeDevice() { |
| 141 always_use_fake_devices_ = true; |
| 142 } |
| 143 |
137 MediaStreamManager::MediaStreamManager( | 144 MediaStreamManager::MediaStreamManager( |
138 AudioInputDeviceManager* audio_input_device_manager, | 145 AudioInputDeviceManager* audio_input_device_manager, |
139 VideoCaptureManager* video_capture_manager) | 146 VideoCaptureManager* video_capture_manager) |
140 : ALLOW_THIS_IN_INITIALIZER_LIST( | 147 : ALLOW_THIS_IN_INITIALIZER_LIST( |
141 device_settings_(new MediaStreamDeviceSettings(this))), | 148 device_settings_(new MediaStreamDeviceSettings(this))), |
142 audio_input_device_manager_(audio_input_device_manager), | 149 audio_input_device_manager_(audio_input_device_manager), |
143 video_capture_manager_(video_capture_manager), | 150 video_capture_manager_(video_capture_manager), |
144 monitoring_started_(false), | 151 monitoring_started_(false), |
145 io_loop_(NULL) { | 152 io_loop_(NULL) { |
146 memset(active_enumeration_ref_count_, 0, | 153 memset(active_enumeration_ref_count_, 0, |
(...skipping 20 matching lines...) Expand all Loading... |
167 return audio_input_device_manager_; | 174 return audio_input_device_manager_; |
168 } | 175 } |
169 | 176 |
170 void MediaStreamManager::GenerateStream(MediaStreamRequester* requester, | 177 void MediaStreamManager::GenerateStream(MediaStreamRequester* requester, |
171 int render_process_id, | 178 int render_process_id, |
172 int render_view_id, | 179 int render_view_id, |
173 const StreamOptions& options, | 180 const StreamOptions& options, |
174 const GURL& security_origin, | 181 const GURL& security_origin, |
175 std::string* label) { | 182 std::string* label) { |
176 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 183 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 184 if (always_use_fake_devices_) |
| 185 UseFakeDevice(); |
177 | 186 |
178 // Create a new request based on options. | 187 // Create a new request based on options. |
179 DeviceRequest new_request(requester, options, | 188 DeviceRequest new_request(requester, options, |
180 render_process_id, | 189 render_process_id, |
181 render_view_id, | 190 render_view_id, |
182 security_origin); | 191 security_origin); |
183 StartEnumeration(&new_request, label); | 192 StartEnumeration(&new_request, label); |
184 | 193 |
185 // Get user confirmation to use capture devices. | 194 // Get user confirmation to use capture devices. |
186 device_settings_->RequestCaptureDeviceUsage(*label, | 195 device_settings_->RequestCaptureDeviceUsage(*label, |
(...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
708 | 717 |
709 audio_input_device_manager_ = NULL; | 718 audio_input_device_manager_ = NULL; |
710 video_capture_manager_ = NULL; | 719 video_capture_manager_ = NULL; |
711 io_loop_ = NULL; | 720 io_loop_ = NULL; |
712 device_settings_.reset(); | 721 device_settings_.reset(); |
713 } | 722 } |
714 | 723 |
715 void MediaStreamManager::NotifyObserverDevicesOpened(DeviceRequest* request) { | 724 void MediaStreamManager::NotifyObserverDevicesOpened(DeviceRequest* request) { |
716 content::MediaObserver* media_observer = | 725 content::MediaObserver* media_observer = |
717 content::GetContentClient()->browser()->GetMediaObserver(); | 726 content::GetContentClient()->browser()->GetMediaObserver(); |
| 727 if (media_observer == NULL) |
| 728 return; |
718 content::MediaStreamDevices opened_devices; | 729 content::MediaStreamDevices opened_devices; |
719 DevicesFromRequest(request, &opened_devices); | 730 DevicesFromRequest(request, &opened_devices); |
720 DCHECK(!opened_devices.empty()); | 731 DCHECK(!opened_devices.empty()); |
721 media_observer->OnCaptureDevicesOpened(request->render_process_id, | 732 media_observer->OnCaptureDevicesOpened(request->render_process_id, |
722 request->render_view_id, | 733 request->render_view_id, |
723 opened_devices); | 734 opened_devices); |
724 } | 735 } |
725 | 736 |
726 void MediaStreamManager::NotifyObserverDevicesClosed(DeviceRequest* request) { | 737 void MediaStreamManager::NotifyObserverDevicesClosed(DeviceRequest* request) { |
727 content::MediaObserver* media_observer = | 738 content::MediaObserver* media_observer = |
728 content::GetContentClient()->browser()->GetMediaObserver(); | 739 content::GetContentClient()->browser()->GetMediaObserver(); |
| 740 if (media_observer == NULL) |
| 741 return; |
729 content::MediaStreamDevices closed_devices; | 742 content::MediaStreamDevices closed_devices; |
730 DevicesFromRequest(request, &closed_devices); | 743 DevicesFromRequest(request, &closed_devices); |
731 if (closed_devices.empty()) | 744 if (closed_devices.empty()) |
732 return; | 745 return; |
733 media_observer->OnCaptureDevicesClosed(request->render_process_id, | 746 media_observer->OnCaptureDevicesClosed(request->render_process_id, |
734 request->render_view_id, | 747 request->render_view_id, |
735 closed_devices); | 748 closed_devices); |
736 } | 749 } |
737 | 750 |
738 void MediaStreamManager::DevicesFromRequest( | 751 void MediaStreamManager::DevicesFromRequest( |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
852 it != requests_.end(); ++it) { | 865 it != requests_.end(); ++it) { |
853 if (it->second.type == DeviceRequest::ENUMERATE_DEVICES && | 866 if (it->second.type == DeviceRequest::ENUMERATE_DEVICES && |
854 Requested(it->second.options, stream_type)) { | 867 Requested(it->second.options, stream_type)) { |
855 return true; | 868 return true; |
856 } | 869 } |
857 } | 870 } |
858 return false; | 871 return false; |
859 } | 872 } |
860 | 873 |
861 } // namespace media_stream | 874 } // namespace media_stream |
OLD | NEW |