| 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 355f62dfa5608cb3e5f9fef1891368324e340f29..a7e71ecbc135ae72a51573477132df2d050c959a 100644
|
| --- a/webrtc/modules/desktop_capture/screen_capturer_integration_test.cc
|
| +++ b/webrtc/modules/desktop_capture/screen_capturer_integration_test.cc
|
| @@ -32,6 +32,7 @@
|
| #include "webrtc/test/gtest.h"
|
|
|
| #if defined(WEBRTC_WIN)
|
| +#include "webrtc/base/win32.h"
|
| #include "webrtc/modules/desktop_capture/win/screen_capturer_win_directx.h"
|
| #endif // defined(WEBRTC_WIN)
|
|
|
| @@ -89,7 +90,14 @@ class ScreenCapturerIntegrationTest : public testing::Test {
|
| RTC_DCHECK(capturers.size() > 0);
|
| // A large enough area for the tests, which should be able to be fulfilled
|
| // by most systems.
|
| +#if defined(WEBRTC_WIN)
|
| + // On Windows, an interesting warning window may pop up randomly. The root
|
| + // cause is still under investigation, so reduce the test area to work
|
| + // around. Bug https://bugs.chromium.org/p/webrtc/issues/detail?id=6666.
|
| + const int kTestArea = 416;
|
| +#else
|
| const int kTestArea = 512;
|
| +#endif
|
| const int kRectSize = 32;
|
| std::unique_ptr<ScreenDrawer> drawer = ScreenDrawer::Create();
|
| if (!drawer || drawer->DrawableRegion().is_empty()) {
|
| @@ -217,7 +225,7 @@ class ScreenCapturerIntegrationTest : public testing::Test {
|
| std::cout << frame->size().width() << " x " << frame->size().height()
|
| << std::endl;
|
| // Split the entire string (can be over 4M) into several lines to
|
| - // avoid browser from stucking.
|
| + // avoid browser from sticking.
|
| static const size_t kLineLength = 32768;
|
| const char* result_end = result.c_str() + result.length();
|
| for (const char* it = result.c_str();
|
| @@ -227,11 +235,22 @@ class ScreenCapturerIntegrationTest : public testing::Test {
|
| std::cout << std::string(it, std::min(kLineLength, max_length))
|
| << std::endl;
|
| }
|
| + std::cout << "Failed to capture rectangle " << rect.left() << " x "
|
| + << rect.top() << " - " << rect.right() << " x "
|
| + << rect.bottom() << " with color ("
|
| + << static_cast<int>(color.red) << ", "
|
| + << static_cast<int>(color.green) << ", "
|
| + << static_cast<int>(color.blue) << ", "
|
| + << static_cast<int>(color.alpha) << ")" << std::endl;
|
| ASSERT_TRUE(false) << "ScreenCapturerIntegrationTest may be flaky. "
|
| - "Please kindly FYI the broken link to "
|
| - "zijiehe@chromium.org for investigation. If I "
|
| - "have not responded as quick as expected, "
|
| - "disable *all* tests in "
|
| + "If the error message above is "
|
| + "\"////AP///wD///8A\", it's a known issue, "
|
| + "which should be able to recover by rerunning "
|
| + "the test. Otherwise please kindly FYI the "
|
| + "broken link to zijiehe@chromium.org for "
|
| + "investigation. If the failure continually "
|
| + "happens, but I have not responded as quick as "
|
| + "expected, disable *all* tests in "
|
| "screen_capturer_integration_test.cc to "
|
| "unblock other developers.";
|
| }
|
| @@ -257,15 +276,11 @@ class ScreenCapturerIntegrationTest : public testing::Test {
|
| }
|
| };
|
|
|
| -// Disabled because it's flaky.
|
| -// https://bugs.chromium.org/p/webrtc/issues/detail?id=6666
|
| -TEST_F(ScreenCapturerIntegrationTest, DISABLED_CaptureUpdatedRegion) {
|
| +TEST_F(ScreenCapturerIntegrationTest, CaptureUpdatedRegion) {
|
| TestCaptureUpdatedRegion();
|
| }
|
|
|
| -// Disabled because it's flaky.
|
| -// https://bugs.chromium.org/p/webrtc/issues/detail?id=6666
|
| -TEST_F(ScreenCapturerIntegrationTest, DISABLED_TwoCapturers) {
|
| +TEST_F(ScreenCapturerIntegrationTest, TwoCapturers) {
|
| std::unique_ptr<DesktopCapturer> capturer2 = std::move(capturer_);
|
| SetUp();
|
| TestCaptureUpdatedRegion({capturer_.get(), capturer2.get()});
|
| @@ -273,10 +288,8 @@ TEST_F(ScreenCapturerIntegrationTest, DISABLED_TwoCapturers) {
|
|
|
| #if defined(WEBRTC_WIN)
|
|
|
| -// Disabled because it's flaky.
|
| -// https://bugs.chromium.org/p/webrtc/issues/detail?id=6666
|
| TEST_F(ScreenCapturerIntegrationTest,
|
| - DISABLED_CaptureUpdatedRegionWithDirectxCapturer) {
|
| + CaptureUpdatedRegionWithDirectxCapturer) {
|
| if (!CreateDirectxCapturer()) {
|
| return;
|
| }
|
| @@ -284,9 +297,7 @@ TEST_F(ScreenCapturerIntegrationTest,
|
| TestCaptureUpdatedRegion();
|
| }
|
|
|
| -// Disabled because it's flaky.
|
| -// https://bugs.chromium.org/p/webrtc/issues/detail?id=6666
|
| -TEST_F(ScreenCapturerIntegrationTest, DISABLED_TwoDirectxCapturers) {
|
| +TEST_F(ScreenCapturerIntegrationTest, TwoDirectxCapturers) {
|
| if (!CreateDirectxCapturer()) {
|
| return;
|
| }
|
| @@ -296,27 +307,37 @@ TEST_F(ScreenCapturerIntegrationTest, DISABLED_TwoDirectxCapturers) {
|
| TestCaptureUpdatedRegion({capturer_.get(), capturer2.get()});
|
| }
|
|
|
| -// Disabled because it's flaky.
|
| -// https://bugs.chromium.org/p/webrtc/issues/detail?id=6666
|
| 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
|
| + // TODO(zijiehe): Find the root cause of the border and failure, which cannot
|
| + // reproduce on my dev machine.
|
| + if (rtc::IsWindows8OrLater()) {
|
| + return;
|
| + }
|
| CreateMagnifierCapturer();
|
| TestCaptureUpdatedRegion();
|
| }
|
|
|
| -// Disabled because it's flaky.
|
| -// https://bugs.chromium.org/p/webrtc/issues/detail?id=6666
|
| -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
|
| + // TODO(zijiehe): Find the root cause of the border and failure, which cannot
|
| + // reproduce on my dev machine.
|
| + if (rtc::IsWindows8OrLater()) {
|
| + return;
|
| + }
|
| CreateMagnifierCapturer();
|
| std::unique_ptr<DesktopCapturer> capturer2 = std::move(capturer_);
|
| CreateMagnifierCapturer();
|
| TestCaptureUpdatedRegion({capturer_.get(), capturer2.get()});
|
| }
|
|
|
| -// Disabled because it's flaky.
|
| -// https://bugs.chromium.org/p/webrtc/issues/detail?id=6666
|
| TEST_F(ScreenCapturerIntegrationTest,
|
| - DISABLED_MaybeCaptureUpdatedRegionWithDirectxCapturer) {
|
| + MaybeCaptureUpdatedRegionWithDirectxCapturer) {
|
| // Even DirectX capturer is not supported in current system, we should be able
|
| // to select a usable capturer.
|
| MaybeCreateDirectxCapturer();
|
|
|