| 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..41df0cc65ed839dfd85fe5c0a09e5b4f8ef5ee78 100644
|
| --- a/content/public/test/browser_test_utils.cc
|
| +++ b/content/public/test/browser_test_utils.cc
|
| @@ -408,6 +408,30 @@ 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.
|
| +const char kHasVideoInputDeviceOnSystem[] =
|
| + "(function() {"
|
| + "navigator.mediaDevices.enumerateDevices()"
|
| + ".then(function(devices) {"
|
| + "devices.forEach(function(device) {"
|
| + "if (device.kind == 'video') {"
|
| + "returnToTest('has-video-input-device');"
|
| + "return;"
|
| + "}"
|
| + "});"
|
| + "returnToTest('no-video-input-devices');"
|
| + "});"
|
| + "})()";
|
| +
|
| +const char kHasVideoInputDevice[] = "has-video-input-device";
|
| +
|
| } // namespace
|
|
|
| bool NavigateIframeToURL(WebContents* web_contents,
|
| @@ -742,6 +766,13 @@ void SimulateKeyPress(WebContents* web_contents,
|
| ASSERT_EQ(modifiers, 0);
|
| }
|
|
|
| +bool IsWebcamAvailableOnSystem(WebContents* web_contents) {
|
| + std::string result;
|
| + EXPECT_TRUE(content::ExecuteScriptAndExtractString(
|
| + web_contents, kHasVideoInputDeviceOnSystem, &result));
|
| + return result == kHasVideoInputDevice;
|
| +}
|
| +
|
| RenderFrameHost* ConvertToRenderFrameHost(WebContents* web_contents) {
|
| return web_contents->GetMainFrame();
|
| }
|
|
|