Index: content/browser/renderer_host/media/video_capture_browsertest.cc |
diff --git a/content/browser/renderer_host/media/video_capture_browsertest.cc b/content/browser/renderer_host/media/video_capture_browsertest.cc |
index 19ce4c692abc2ee6e47fa775240c1da15b0af1df..a4113524a279d695242ca5322656a8ab6678d5e8 100644 |
--- a/content/browser/renderer_host/media/video_capture_browsertest.cc |
+++ b/content/browser/renderer_host/media/video_capture_browsertest.cc |
@@ -14,6 +14,7 @@ |
#include "media/base/bind_to_current_loop.h" |
#include "media/base/media_switches.h" |
#include "media/capture/video_capture_types.h" |
+#include "services/video_capture/public/cpp/constants.h" |
#include "testing/gmock/include/gmock/gmock.h" |
using testing::_; |
@@ -66,6 +67,7 @@ struct TestParams { |
gfx::Size resolution_to_use; |
float frame_rate_to_use; |
bool exercise_accelerated_jpeg_decoding; |
+ bool use_mojo_service; |
}; |
struct FrameInfo { |
@@ -75,6 +77,8 @@ struct FrameInfo { |
base::TimeDelta timestamp; |
}; |
+// Integration test that exercises the VideoCaptureManager instance running in |
+// the Browser process. |
class VideoCaptureBrowserTest |
: public ContentBrowserTest, |
public ::testing::WithParamInterface<TestParams> { |
@@ -90,7 +94,7 @@ class VideoCaptureBrowserTest |
void TearDownCaptureDeviceOnIOThread(base::Closure continuation, |
bool post_to_end_of_message_queue) { |
- // StopCaptureForClient must not be called synchronously from either the |
+ // DisconnectClient() must not be called synchronously from either the |
// |done_cb| passed to StartCaptureForClient() nor any callback made to a |
// VideoCaptureControllerEventHandler. To satisfy this, we have to post our |
// invocation to the end of the IO message queue. |
@@ -125,6 +129,10 @@ class VideoCaptureBrowserTest |
base::CommandLine::ForCurrentProcess()->AppendSwitch( |
switches::kDisableAcceleratedMjpegDecode); |
} |
+ if (GetParam().use_mojo_service) { |
+ base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
+ switches::kEnableFeatures, video_capture::kMojoVideoCapture.name); |
+ } |
} |
// This cannot be part of an override of SetUp(), because at the time when |
@@ -177,6 +185,12 @@ class VideoCaptureBrowserTest |
}; |
IN_PROC_BROWSER_TEST_P(VideoCaptureBrowserTest, StartAndImmediatelyStop) { |
+#if defined(OS_ANDROID) |
+ // Mojo video capture is currently not supported on Android |
mcasas
2017/05/10 02:33:32
This sounds pretty bad: at least a TODO() and a bu
chfremer
2017/05/10 17:59:39
Done.
|
+ if (GetParam().use_mojo_service) |
+ return; |
+#endif |
+ |
SetUpRequiringBrowserMainLoopOnMainThread(); |
base::RunLoop run_loop; |
auto quit_run_loop_on_current_thread_cb = |
@@ -194,11 +208,14 @@ IN_PROC_BROWSER_TEST_P(VideoCaptureBrowserTest, StartAndImmediatelyStop) { |
IN_PROC_BROWSER_TEST_P(VideoCaptureBrowserTest, |
ReceiveFramesFromFakeCaptureDevice) { |
-// TODO(chfremer): This test case is flaky on Android. Find out cause of |
-// flakiness and then re-enable. See crbug.com/709039. |
#if defined(OS_ANDROID) |
+ // TODO(chfremer): This test case is flaky on Android. Find out cause of |
+ // flakiness and then re-enable. See crbug.com/709039. |
if (GetParam().exercise_accelerated_jpeg_decoding) |
return; |
+ // Mojo video capture is currently not supported on Android |
+ if (GetParam().use_mojo_service) |
+ return; |
#endif |
SetUpRequiringBrowserMainLoopOnMainThread(); |
@@ -281,16 +298,22 @@ INSTANTIATE_TEST_CASE_P( |
, |
VideoCaptureBrowserTest, |
Values(TestParams{"fps=25,device-count=2", 0, media::PIXEL_FORMAT_I420, |
- gfx::Size(1280, 720), 25.0f, false}, |
+ gfx::Size(1280, 720), 25.0f, false, false}, |
+ TestParams{"fps=25,device-count=2", 0, media::PIXEL_FORMAT_I420, |
+ gfx::Size(1280, 720), 25.0f, false, true}, |
// The 2nd device outputs Y16 |
TestParams{"fps=25,device-count=2", 1, media::PIXEL_FORMAT_Y16, |
- gfx::Size(1280, 720), 25.0f, false}, |
+ gfx::Size(1280, 720), 25.0f, false, false}, |
+ TestParams{"fps=25,device-count=2", 1, media::PIXEL_FORMAT_Y16, |
+ gfx::Size(1280, 720), 25.0f, false, true}, |
TestParams{"fps=15,device-count=2", 1, media::PIXEL_FORMAT_Y16, |
- gfx::Size(640, 480), 15.0f, false}, |
+ gfx::Size(640, 480), 15.0f, false, false}, |
// The 3rd device outputs MJPEG, which is converted to I420. |
TestParams{"fps=15,device-count=3", 2, media::PIXEL_FORMAT_I420, |
- gfx::Size(640, 480), 25.0f, false}, |
+ gfx::Size(640, 480), 25.0f, false, false}, |
+ TestParams{"fps=15,device-count=3", 2, media::PIXEL_FORMAT_I420, |
+ gfx::Size(640, 480), 25.0f, false, true}, |
TestParams{"fps=6,device-count=3", 2, media::PIXEL_FORMAT_I420, |
- gfx::Size(640, 480), 6.0f, true})); |
+ gfx::Size(640, 480), 6.0f, true, false})); |
mcasas
2017/05/10 02:33:33
Consider using ::testing::Combine to simplify all
chfremer
2017/05/10 17:59:39
I prefer to not use ::testing::Combine() here, bec
mcasas
2017/05/10 18:15:43
Why not? It should be made explicit here why not,
chfremer
2017/05/10 21:08:05
Done.
|
} // namespace content |