Index: chrome/browser/media/chrome_webrtc_apprtc_browsertest.cc |
diff --git a/chrome/browser/media/chrome_webrtc_apprtc_browsertest.cc b/chrome/browser/media/chrome_webrtc_apprtc_browsertest.cc |
index e9a38abaf0817f21ae8f49d0d5a4638c5229700b..e995a9888cc487b13adb526c48931988bc2d94c0 100644 |
--- a/chrome/browser/media/chrome_webrtc_apprtc_browsertest.cc |
+++ b/chrome/browser/media/chrome_webrtc_apprtc_browsertest.cc |
@@ -3,6 +3,7 @@ |
// found in the LICENSE file. |
#include "base/command_line.h" |
+#include "base/files/file_enumerator.h" |
#include "base/path_service.h" |
#include "base/process/launch.h" |
#include "base/rand_util.h" |
@@ -37,7 +38,7 @@ const char kTitlePageOfAppEngineAdminPage[] = "Instances"; |
// on the running system. This test is not meant to run in the main browser |
// test suite since normal tester machines do not have webcams. Chrome will use |
// its fake camera for both tests, but Firefox will use the real webcam in the |
-// Firefox interop test. |
+// Firefox interop test. Thus, this test must on a machine with a real webcam. |
// |
// This test will bring up a AppRTC instance on localhost and verify that the |
// call gets up when connecting to the same room from two tabs in a browser. |
@@ -184,6 +185,22 @@ class WebRtcApprtcBrowserTest : public WebRtcTestBase { |
&firefox_); |
} |
+ bool HasWebcamOnSystem() { |
+#if defined(OS_LINUX) |
+ // Implementation note: normally we would be able to figure this out with |
+ // MediaStreamTrack.getSources, but we can't ask Chrome since it runs in |
+ // fake device mode where it will not enumerate webcams on the system. |
+ // Therefore, look for /dev/video* entries directly since this test only |
+ // runs on Linux for now anyway. |
+ base::FileEnumerator dev_video(base::FilePath(FILE_PATH_LITERAL("/dev")), |
+ false, base::FileEnumerator::FILES, |
+ FILE_PATH_LITERAL("video*")); |
+ return !dev_video.Next().empty(); |
+#endif |
+ NOTREACHED(); |
+ return false; |
+ } |
+ |
private: |
base::ProcessHandle dev_appserver_; |
base::ProcessHandle firefox_; |
@@ -230,6 +247,12 @@ IN_PROC_BROWSER_TEST_F(WebRtcApprtcBrowserTest, |
if (base::win::GetVersion() < base::win::VERSION_VISTA) |
return; |
#endif |
+ if (!HasWebcamOnSystem()) { |
+ LOG(INFO) |
+ << "Didn't find a webcam on the system; skipping test since Firefox " |
+ << "needs to be able to acquire a webcam."; |
+ return; |
+ } |
DetectErrorsInJavaScript(); |
ASSERT_TRUE(LaunchApprtcInstanceOnLocalhost()); |