diff options
author | phoglund@chromium.org <phoglund@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-09 12:00:24 +0000 |
---|---|---|
committer | phoglund@chromium.org <phoglund@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-09 12:00:24 +0000 |
commit | 13f43f18b6de6999addb4f7f4ff8a1017570e996 (patch) | |
tree | f3469ae4d94f6eacd32ff9383485ece45e17d5f2 /content | |
parent | 21a0b805858e25ca56074f37625108baa15eccb4 (diff) | |
download | chromium_src-13f43f18b6de6999addb4f7f4ff8a1017570e996.zip chromium_src-13f43f18b6de6999addb4f7f4ff8a1017570e996.tar.gz chromium_src-13f43f18b6de6999addb4f7f4ff8a1017570e996.tar.bz2 |
content_browsertests will now use fake webrtc devices.
BUG=
Review URL: https://chromiumcodereview.appspot.com/10919095
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@155622 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r-- | content/browser/renderer_host/media/media_stream_manager.cc | 13 | ||||
-rw-r--r-- | content/browser/renderer_host/media/media_stream_manager.h | 9 | ||||
-rw-r--r-- | content/test/content_test_launcher.cc | 5 |
3 files changed, 25 insertions, 2 deletions
diff --git a/content/browser/renderer_host/media/media_stream_manager.cc b/content/browser/renderer_host/media/media_stream_manager.cc index 8194fde..3a0f617 100644 --- a/content/browser/renderer_host/media/media_stream_manager.cc +++ b/content/browser/renderer_host/media/media_stream_manager.cc @@ -134,6 +134,13 @@ MediaStreamManager::EnumerationCache::EnumerationCache() MediaStreamManager::EnumerationCache::~EnumerationCache() { } +bool MediaStreamManager::always_use_fake_devices_ = false; + +// static +void MediaStreamManager::AlwaysUseFakeDevice() { + always_use_fake_devices_ = true; +} + MediaStreamManager::MediaStreamManager( AudioInputDeviceManager* audio_input_device_manager, VideoCaptureManager* video_capture_manager) @@ -174,6 +181,8 @@ void MediaStreamManager::GenerateStream(MediaStreamRequester* requester, const GURL& security_origin, std::string* label) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); + if (always_use_fake_devices_) + UseFakeDevice(); // Create a new request based on options. DeviceRequest new_request(requester, options, @@ -715,6 +724,8 @@ void MediaStreamManager::WillDestroyCurrentMessageLoop() { void MediaStreamManager::NotifyObserverDevicesOpened(DeviceRequest* request) { content::MediaObserver* media_observer = content::GetContentClient()->browser()->GetMediaObserver(); + if (media_observer == NULL) + return; content::MediaStreamDevices opened_devices; DevicesFromRequest(request, &opened_devices); DCHECK(!opened_devices.empty()); @@ -726,6 +737,8 @@ void MediaStreamManager::NotifyObserverDevicesOpened(DeviceRequest* request) { void MediaStreamManager::NotifyObserverDevicesClosed(DeviceRequest* request) { content::MediaObserver* media_observer = content::GetContentClient()->browser()->GetMediaObserver(); + if (media_observer == NULL) + return; content::MediaStreamDevices closed_devices; DevicesFromRequest(request, &closed_devices); if (closed_devices.empty()) diff --git a/content/browser/renderer_host/media/media_stream_manager.h b/content/browser/renderer_host/media/media_stream_manager.h index bb407ce..9a86596 100644 --- a/content/browser/renderer_host/media/media_stream_manager.h +++ b/content/browser/renderer_host/media/media_stream_manager.h @@ -148,10 +148,12 @@ class CONTENT_EXPORT MediaStreamManager // Used by unit test to make sure fake devices are used instead of a real // devices, which is needed for server based testing. - // TODO(xians): Remove this hack since we can create our own - // MediaStreamManager in our unit tests. void UseFakeDevice(); + // Call to have all GenerateStream calls from now on use fake devices instead + // of real ones. This should NOT be used in production versions of Chrome. + static void AlwaysUseFakeDevice(); + // This object gets deleted on the UI thread after the IO thread has been // destroyed. So we need to know when IO thread is being destroyed so that // we can delete VideoCaptureManager and AudioInputDeviceManager. @@ -229,6 +231,9 @@ class CONTENT_EXPORT MediaStreamManager // managers on the right thread. MessageLoop* io_loop_; + // Static members. + static bool always_use_fake_devices_; + DISALLOW_COPY_AND_ASSIGN(MediaStreamManager); }; diff --git a/content/test/content_test_launcher.cc b/content/test/content_test_launcher.cc index 5ab1910..8ea54b1 100644 --- a/content/test/content_test_launcher.cc +++ b/content/test/content_test_launcher.cc @@ -9,6 +9,7 @@ #include "base/logging.h" #include "base/path_service.h" #include "base/test/test_suite.h" +#include "content/browser/renderer_host/media/media_stream_manager.h" #include "content/public/app/content_main.h" #include "content/public/common/content_switches.h" #include "content/public/test/content_test_suite_base.h" @@ -134,6 +135,10 @@ class ContentTestLauncherDelegate : public test_launcher::TestLauncherDelegate { } // namespace content int main(int argc, char** argv) { + // Always use fake WebRTC devices in this binary since we want to be able + // to test WebRTC even if we don't have any devices on the system. + media_stream::MediaStreamManager::AlwaysUseFakeDevice(); + content::ContentTestLauncherDelegate launcher_delegate; return test_launcher::LaunchTests(&launcher_delegate, argc, argv); } |