summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorphoglund@chromium.org <phoglund@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-09 12:00:24 +0000
committerphoglund@chromium.org <phoglund@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-09 12:00:24 +0000
commit13f43f18b6de6999addb4f7f4ff8a1017570e996 (patch)
treef3469ae4d94f6eacd32ff9383485ece45e17d5f2 /content
parent21a0b805858e25ca56074f37625108baa15eccb4 (diff)
downloadchromium_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.cc13
-rw-r--r--content/browser/renderer_host/media/media_stream_manager.h9
-rw-r--r--content/test/content_test_launcher.cc5
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);
}