Chromium Code Reviews| Index: webrtc/modules/desktop_capture/screen_capturer_integration_test.cc |
| diff --git a/webrtc/modules/desktop_capture/screen_capturer_integration_test.cc b/webrtc/modules/desktop_capture/screen_capturer_integration_test.cc |
| index 48c0c173b91b6e0e910cab31c339c7e0bc69c641..eae9530db5d72364ab589effd5b84e432a59e36e 100644 |
| --- a/webrtc/modules/desktop_capture/screen_capturer_integration_test.cc |
| +++ b/webrtc/modules/desktop_capture/screen_capturer_integration_test.cc |
| @@ -42,7 +42,8 @@ namespace webrtc { |
| namespace { |
| -ACTION_P(SaveUniquePtrArg, dest) { |
| +ACTION_P2(SaveCaptureResult, result, dest) { |
| + *result = arg0; |
| *dest = std::move(*arg1); |
| } |
| @@ -266,40 +267,46 @@ class ScreenCapturerIntegrationTest : public testing::Test { |
| // Expects |capturer| to successfully capture a frame, and returns it. |
| std::unique_ptr<DesktopFrame> CaptureFrame(DesktopCapturer* capturer) { |
| - std::unique_ptr<DesktopFrame> frame; |
| - EXPECT_CALL(callback_, |
| - OnCaptureResultPtr(DesktopCapturer::Result::SUCCESS, _)) |
| - .WillOnce(SaveUniquePtrArg(&frame)); |
| - capturer->CaptureFrame(); |
| - EXPECT_TRUE(frame); |
| - return frame; |
| + for (int i = 0; i < 10; i++) { |
| + std::unique_ptr<DesktopFrame> frame; |
| + DesktopCapturer::Result result; |
| + EXPECT_CALL(callback_, OnCaptureResultPtr(_, _)) |
| + .WillOnce(SaveCaptureResult(&result, &frame)); |
| + capturer->CaptureFrame(); |
| + if (result == DesktopCapturer::Result::SUCCESS) { |
|
Sergey Ulanov
2016/12/07 19:45:05
Verify that the callback was called, e.g. by calli
Hzj_jie
2016/12/07 20:09:30
Done.
|
| + EXPECT_TRUE(frame); |
| + return frame; |
| + } else { |
| + EXPECT_FALSE(frame); |
| + } |
| + } |
| + |
| + EXPECT_TRUE(false); |
| + return nullptr; |
| } |
| }; |
| -#if defined(WEBRTC_WIN) |
| -#define MAYBE_CaptureUpdatedRegion DISABLED_CaptureUpdatedRegion |
| -#else |
| -#define MAYBE_CaptureUpdatedRegion CaptureUpdatedRegion |
| -#endif |
| -TEST_F(ScreenCapturerIntegrationTest, MAYBE_CaptureUpdatedRegion) { |
| +TEST_F(ScreenCapturerIntegrationTest, CaptureUpdatedRegion) { |
| +#if !defined(WEBRTC_WIN) |
| + // ScreenCapturerWinGdi randomly returns blank screen, the root cause is still |
| + // unknown. Bug, https://bugs.chromium.org/p/webrtc/issues/detail?id=6843. |
| TestCaptureUpdatedRegion(); |
| +#endif |
| } |
| -#if defined(WEBRTC_WIN) |
| -#define MAYBE_TwoCapturers DISABLED_TwoCapturers |
| -#else |
| -#define MAYBE_TwoCapturers TwoCapturers |
| -#endif |
| -TEST_F(ScreenCapturerIntegrationTest, MAYBE_TwoCapturers) { |
| +TEST_F(ScreenCapturerIntegrationTest, TwoCapturers) { |
| +#if !defined(WEBRTC_WIN) |
| + // ScreenCapturerWinGdi randomly returns blank screen, the root cause is still |
| + // unknown. Bug, https://bugs.chromium.org/p/webrtc/issues/detail?id=6843. |
| std::unique_ptr<DesktopCapturer> capturer2 = std::move(capturer_); |
| SetUp(); |
| TestCaptureUpdatedRegion({capturer_.get(), capturer2.get()}); |
| +#endif |
| } |
| #if defined(WEBRTC_WIN) |
| -TEST_F(ScreenCapturerIntegrationTest, |
| - DISABLED_CaptureUpdatedRegionWithDirectxCapturer) { |
| +TEST_F(ScreenCapturerIntegrationTest, CaptureUpdatedRegionWithDirectxCapturer) { |
| if (!CreateDirectxCapturer()) { |
| return; |
| } |
| @@ -307,7 +314,7 @@ TEST_F(ScreenCapturerIntegrationTest, |
| TestCaptureUpdatedRegion(); |
| } |
| -TEST_F(ScreenCapturerIntegrationTest, DISABLED_TwoDirectxCapturers) { |
| +TEST_F(ScreenCapturerIntegrationTest, TwoDirectxCapturers) { |
| if (!CreateDirectxCapturer()) { |
| return; |
| } |
| @@ -318,10 +325,10 @@ TEST_F(ScreenCapturerIntegrationTest, DISABLED_TwoDirectxCapturers) { |
| } |
| TEST_F(ScreenCapturerIntegrationTest, |
| - DISABLED_CaptureUpdatedRegionWithMagnifierCapturer) { |
| + CaptureUpdatedRegionWithMagnifierCapturer) { |
| // On Windows 8 or later, magnifier APIs return a frame with a border on test |
| // environment, so disable these tests. |
| - // Bug https://bugs.chromium.org/p/webrtc/issues/detail?id=6666 |
| + // Bug https://bugs.chromium.org/p/webrtc/issues/detail?id=6844 |
| // TODO(zijiehe): Find the root cause of the border and failure, which cannot |
| // reproduce on my dev machine. |
| if (rtc::IsWindows8OrLater()) { |
| @@ -331,10 +338,10 @@ TEST_F(ScreenCapturerIntegrationTest, |
| TestCaptureUpdatedRegion(); |
| } |
| -TEST_F(ScreenCapturerIntegrationTest, DISABLED_TwoMagnifierCapturers) { |
| +TEST_F(ScreenCapturerIntegrationTest, TwoMagnifierCapturers) { |
| // On Windows 8 or later, magnifier APIs return a frame with a border on test |
| // environment, so disable these tests. |
| - // Bug https://bugs.chromium.org/p/webrtc/issues/detail?id=6666 |
| + // Bug https://bugs.chromium.org/p/webrtc/issues/detail?id=6844 |
| // TODO(zijiehe): Find the root cause of the border and failure, which cannot |
| // reproduce on my dev machine. |
| if (rtc::IsWindows8OrLater()) { |
| @@ -347,7 +354,15 @@ TEST_F(ScreenCapturerIntegrationTest, DISABLED_TwoMagnifierCapturers) { |
| } |
| TEST_F(ScreenCapturerIntegrationTest, |
| - DISABLED_MaybeCaptureUpdatedRegionWithDirectxCapturer) { |
| + MaybeCaptureUpdatedRegionWithDirectxCapturer) { |
| + if (!rtc::IsWindows8OrLater()) { |
| + // ScreenCapturerWinGdi randomly returns blank screen, the root cause is |
| + // still unknown. Bug, |
| + // https://bugs.chromium.org/p/webrtc/issues/detail?id=6843. |
| + // On Windows 7 or early version, MaybeCreateDirectxCapturer() always |
| + // creates GDI capturer. |
| + return; |
| + } |
| // Even DirectX capturer is not supported in current system, we should be able |
| // to select a usable capturer. |
| MaybeCreateDirectxCapturer(); |