Index: content/public/test/browser_test_utils.cc |
diff --git a/content/public/test/browser_test_utils.cc b/content/public/test/browser_test_utils.cc |
index 802d4eba324aefe2afe3628832346c879ff54346..64b6aa924a934308f6ecc49cde5580ba61ae115d 100644 |
--- a/content/public/test/browser_test_utils.cc |
+++ b/content/public/test/browser_test_utils.cc |
@@ -408,6 +408,25 @@ void AppendGzippedResource(const base::RefCountedMemory& encoded, |
} while (status != net::Filter::FILTER_DONE); |
} |
+// Queries for video input devices on the current system using the getSources |
+// API. |
+// |
+// This does not guarantee that a getUserMedia with video will succeed, as the |
+// camera could be busy for instance. |
+// |
+// Returns has-video-input-device to the test if there is a webcam available, |
+// no-video-input-devices otherwise. |
+static const std::string hasVideoInputDeviceOnSystem = |
+ "(function() {" |
+ "MediaStreamTrack.getSources(function(devices) {" |
+ "devices.forEach(function(device) {" |
+ "if (device.kind == 'video')" |
+ "returnToTest('has-video-input-device');" |
mcasas
2016/09/06 23:13:12
returnToTest(), confusingly enough, doesn't
seem t
lunalu1
2016/09/07 14:30:34
Done.
|
+ "});" |
+ "returnToTest('no-video-input-devices');" |
+ "});" |
+ "})()"; |
+ |
} // namespace |
bool NavigateIframeToURL(WebContents* web_contents, |
@@ -742,6 +761,13 @@ void SimulateKeyPress(WebContents* web_contents, |
ASSERT_EQ(modifiers, 0); |
} |
+bool HasWebcamAvailableOnSystem(WebContents* tab_contents) { |
+ std::string result; |
+ EXPECT_TRUE(content::ExecuteScriptAndExtractString( |
+ tab_contents, hasVideoInputDeviceOnSystem, &result)); |
+ return result == "has-video-input-device"; |
+} |
+ |
RenderFrameHost* ConvertToRenderFrameHost(WebContents* web_contents) { |
return web_contents->GetMainFrame(); |
} |