| Index: chrome/browser/media/chrome_webrtc_browsertest.cc
|
| diff --git a/chrome/browser/media/chrome_webrtc_browsertest.cc b/chrome/browser/media/chrome_webrtc_browsertest.cc
|
| index e70eaef94ce1d1584ba0ed074aaa3d139ec837f7..570374c110acd078ca2c400e85253d10ddf7a1ca 100644
|
| --- a/chrome/browser/media/chrome_webrtc_browsertest.cc
|
| +++ b/chrome/browser/media/chrome_webrtc_browsertest.cc
|
| @@ -32,18 +32,24 @@
|
| #include "net/test/embedded_test_server/embedded_test_server.h"
|
| #include "testing/perf/perf_test.h"
|
|
|
| +// For fine-grained suppression.
|
| +#if defined(OS_WIN)
|
| +#include "base/win/windows_version.h"
|
| +#endif
|
| +
|
| static const char kMainWebrtcTestHtmlPage[] =
|
| "/webrtc/webrtc_jsep01_test.html";
|
|
|
| // Top-level integration test for WebRTC. The test methods here must run
|
| // sequentially since they use a server binary on the system (hence they are
|
| -// tagged as MANUAL).
|
| +// tagged as MANUAL). In addition, they need the reference videos which require
|
| +// the webrtc.DEPS solution, which is not generally available on Chromium bots.
|
| class WebRtcBrowserTest : public WebRtcTestBase,
|
| public testing::WithParamInterface<bool> {
|
| public:
|
| WebRtcBrowserTest() {}
|
| virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
|
| - PeerConnectionServerRunner::KillAllPeerConnectionServersOnCurrentSystem();
|
| + test::PeerConnectionServerRunner::KillAllPeerConnectionServers();
|
| DetectErrorsInJavaScript(); // Look for errors in our rather complex js.
|
| }
|
|
|
| @@ -51,8 +57,12 @@ class WebRtcBrowserTest : public WebRtcTestBase,
|
| // Ensure the infobar is enabled, since we expect that in this test.
|
| EXPECT_FALSE(command_line->HasSwitch(switches::kUseFakeUIForMediaStream));
|
|
|
| - // TODO(phoglund): allow this test to also run with real devices once we
|
| - // get real webcam bots up.
|
| + // Play a suitable, somewhat realistic video file.
|
| + base::FilePath input_video = test::GetReferenceVideosDir()
|
| + .Append(test::kReferenceFileName360p)
|
| + .AddExtension(test::kY4mFileExtension);
|
| + command_line->AppendSwitchPath(switches::kUseFileForFakeVideoCapture,
|
| + input_video);
|
| command_line->AppendSwitch(switches::kUseFakeDeviceForMediaStream);
|
|
|
| // Flag used by TestWebAudioMediaStream to force garbage collection.
|
| @@ -113,7 +123,15 @@ class WebRtcBrowserTest : public WebRtcTestBase,
|
| return NULL;
|
| }
|
|
|
| - PeerConnectionServerRunner peerconnection_server_;
|
| + bool OnWinXp() {
|
| +#if defined(OS_WIN)
|
| + return base::win::GetVersion() <= base::win::VERSION_XP;
|
| +#else
|
| + return false;
|
| +#endif
|
| + }
|
| +
|
| + test::PeerConnectionServerRunner peerconnection_server_;
|
| };
|
|
|
| static const bool kRunTestsWithFlag[] = { false, true };
|
| @@ -123,6 +141,9 @@ INSTANTIATE_TEST_CASE_P(WebRtcBrowserTests,
|
|
|
| IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest,
|
| MANUAL_RunsAudioVideoWebRTCCallInTwoTabs) {
|
| + if (OnWinXp()) return;
|
| +
|
| + ASSERT_TRUE(test::HasReferenceFilesInCheckout());
|
| ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
| ASSERT_TRUE(peerconnection_server_.Start());
|
|
|
| @@ -147,6 +168,9 @@ IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest,
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest, MANUAL_CpuUsage15Seconds) {
|
| + if (OnWinXp()) return;
|
| +
|
| + ASSERT_TRUE(test::HasReferenceFilesInCheckout());
|
| ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
| ASSERT_TRUE(peerconnection_server_.Start());
|
|
|
| @@ -182,7 +206,7 @@ IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest, MANUAL_CpuUsage15Seconds) {
|
|
|
| EstablishCall(left_tab, right_tab);
|
|
|
| - SleepInJavascript(left_tab, 15000);
|
| + test::SleepInJavascript(left_tab, 15000);
|
|
|
| HangUp(left_tab);
|
| WaitUntilHangupVerified(left_tab);
|
| @@ -199,6 +223,9 @@ IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest, MANUAL_CpuUsage15Seconds) {
|
| // This is manual for its long execution time.
|
| IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest,
|
| MANUAL_RunsAudioVideoCall60SecsAndLogsInternalMetrics) {
|
| + if (OnWinXp()) return;
|
| +
|
| + ASSERT_TRUE(test::HasReferenceFilesInCheckout());
|
| ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
| ASSERT_TRUE(peerconnection_server_.Start());
|
|
|
| @@ -220,7 +247,7 @@ IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest,
|
| WaitForVideoToPlay(right_tab);
|
|
|
| // Let values stabilize, bandwidth ramp up, etc.
|
| - SleepInJavascript(left_tab, 60000);
|
| + test::SleepInJavascript(left_tab, 60000);
|
|
|
| // Start measurements.
|
| chrome::AddTabAt(browser(), GURL(), -1, true);
|
| @@ -228,7 +255,7 @@ IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest,
|
| content::WebContents* webrtc_internals_tab =
|
| browser()->tab_strip_model()->GetActiveWebContents();
|
|
|
| - SleepInJavascript(left_tab, 10000);
|
| + test::SleepInJavascript(left_tab, 10000);
|
|
|
| scoped_ptr<base::DictionaryValue> all_data(
|
| GetWebrtcInternalsData(webrtc_internals_tab));
|
| @@ -237,8 +264,8 @@ IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest,
|
| const base::DictionaryValue* first_pc_dict =
|
| GetDataOnFirstPeerConnection(all_data.get());
|
| ASSERT_TRUE(first_pc_dict != NULL);
|
| - PrintBweForVideoMetrics(*first_pc_dict);
|
| - PrintMetricsForAllStreams(*first_pc_dict);
|
| + test::PrintBweForVideoMetrics(*first_pc_dict);
|
| + test::PrintMetricsForAllStreams(*first_pc_dict);
|
|
|
| HangUp(left_tab);
|
| WaitUntilHangupVerified(left_tab);
|
| @@ -247,7 +274,10 @@ IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest,
|
| ASSERT_TRUE(peerconnection_server_.Stop());
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest, TestWebAudioMediaStream) {
|
| +IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest, MANUAL_TestWebAudioMediaStream) {
|
| + if (OnWinXp()) return;
|
| +
|
| + ASSERT_TRUE(test::HasReferenceFilesInCheckout());
|
| ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
| GURL url(embedded_test_server()->GetURL("/webrtc/webaudio_crash.html"));
|
| ui_test_utils::NavigateToURL(browser(), url);
|
| @@ -255,7 +285,7 @@ IN_PROC_BROWSER_TEST_P(WebRtcBrowserTest, TestWebAudioMediaStream) {
|
| browser()->tab_strip_model()->GetActiveWebContents();
|
|
|
| // A sleep is necessary to be able to detect the crash.
|
| - SleepInJavascript(tab, 1000);
|
| + test::SleepInJavascript(tab, 1000);
|
|
|
| ASSERT_FALSE(tab->IsCrashed());
|
| }
|
|
|