Chromium Code Reviews| Index: content/browser/media/webrtc_browsertest.cc |
| diff --git a/content/browser/media/webrtc_browsertest.cc b/content/browser/media/webrtc_browsertest.cc |
| index 47847a7d53bac2b7b1776d4602123880539f273f..9e68826542ea52d69e7ce4eb9860058352432a23 100644 |
| --- a/content/browser/media/webrtc_browsertest.cc |
| +++ b/content/browser/media/webrtc_browsertest.cc |
| @@ -8,6 +8,7 @@ |
| #include "base/strings/stringprintf.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "base/values.h" |
| +#include "content/browser/media/webrtc_internals.h" |
| #include "content/browser/web_contents/web_contents_impl.h" |
| #include "content/public/common/content_switches.h" |
| #include "content/public/test/browser_test_utils.h" |
| @@ -618,4 +619,90 @@ IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, |
| ExpectTitle("OK"); |
| } |
| +#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) |
| +// Timing out on ARM linux bot: http://crbug.com/238490 |
| +#define MAYBE_CallWithAecDump DISABLED_CallWithAecDump |
| +#else |
| +#define MAYBE_CallWithAecDump CallWithAecDump |
| +#endif |
| + |
| +// This tests will make a complete PeerConnection-based call, verify that |
| +// video is playing for the call, and verify that a non-empty AEC dump file |
| +// exists. The AEC dump is enabled through webrtc-internals, in contrast to |
| +// using a command line flag (tested in webrtc_aecdump_browsertest.cc). The HTML |
| +// and Javascript is bypassed since it would trigger a file picker dialog. |
| +// Instead, the dialog callback FileSelected() is invoked directly. In fact, |
| +// there's never a webrtc-internals page opened at all since that's not needed. |
| +IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, MAYBE_CallWithAecDump) { |
| + ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
| + |
| + // We must navigate somewhere first so that the render process is created. |
| + NavigateToURL(shell(), GURL("")); |
| + |
| + base::FilePath dump_file; |
| + ASSERT_TRUE(base::GetTempDir(&dump_file)); |
|
phoglund_chromium
2013/12/18 14:20:46
Again use CreateTemporaryFile here.
Henrik Grunell
2013/12/19 08:43:14
Done.
|
| + dump_file = dump_file.Append( |
| + base::FilePath(FILE_PATH_LITERAL("audio.aecdump"))); |
| + ASSERT_TRUE(base::DeleteFile(dump_file, false)); |
| + |
| + // This fakes the behavior of another open tab with webrtc-internals, and |
| + // enabling AEC dump in that tab. |
| + WebRTCInternals::GetInstance()->FileSelected(dump_file, -1, NULL); |
| + |
| + GURL url(embedded_test_server()->GetURL("/media/peerconnection-call.html")); |
| + NavigateToURL(shell(), url); |
| + |
| + EXPECT_TRUE(ExecuteJavascript("call({video: true, audio: true});")); |
| + ExpectTitle("OK"); |
| + |
| + EXPECT_TRUE(base::PathExists(dump_file)); |
|
phoglund_chromium
2013/12/18 14:20:46
You may as well assert on all of these: further er
Henrik Grunell
2013/12/19 08:43:14
But that won't delete the file, which afaik is not
phoglund_chromium
2013/12/19 11:57:04
Hmm, yeah that's true. Like I said offline you sho
|
| + int64 file_size = 0; |
| + EXPECT_TRUE(base::GetFileSize(dump_file, &file_size)); |
| + EXPECT_GT(file_size, 0); |
| + |
| + EXPECT_TRUE(base::DeleteFile(dump_file, false)); |
| +} |
| + |
| +#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY) |
| +// Timing out on ARM linux bot: http://crbug.com/238490 |
| +#define MAYBE_CallWithAecDumpEnabledThenDisabled DISABLED_CallWithAecDumpEnabledThenDisabled |
| +#else |
| +#define MAYBE_CallWithAecDumpEnabledThenDisabled CallWithAecDumpEnabledThenDisabled |
| +#endif |
| + |
| +// As above, but enable and disable sump before starting a call. The file should |
|
phoglund_chromium
2013/12/18 14:20:46
sump?
Henrik Grunell
2013/12/19 08:43:14
That's dump's evil twin. But I'll write a test for
phoglund_chromium
2013/12/19 11:57:04
hehe
|
| +// be created, but should be empty. |
| +IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, |
| + MAYBE_CallWithAecDumpEnabledThenDisabled) { |
| + ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
| + |
| + // We must navigate somewhere first so that the render process is created. |
| + NavigateToURL(shell(), GURL("")); |
| + |
| + base::FilePath dump_file; |
| + ASSERT_TRUE(base::GetTempDir(&dump_file)); |
|
phoglund_chromium
2013/12/18 14:20:46
CreateTemporaryFile
Henrik Grunell
2013/12/19 08:43:14
Done.
|
| + dump_file = dump_file.Append( |
| + base::FilePath(FILE_PATH_LITERAL("audio.aecdump"))); |
| + ASSERT_TRUE(base::DeleteFile(dump_file, false)); |
| + |
| + // This fakes the behavior of another open tab with webrtc-internals, and |
| + // enabling AEC dump in that tab, then disabling it. |
| + WebRTCInternals::GetInstance()->FileSelected(dump_file, -1, NULL); |
| + WebRTCInternals::GetInstance()->DisableAecDump(); |
| + |
| + GURL url(embedded_test_server()->GetURL("/media/peerconnection-call.html")); |
| + NavigateToURL(shell(), url); |
| + |
| + EXPECT_TRUE(ExecuteJavascript("call({video: true, audio: true});")); |
| + ExpectTitle("OK"); |
| + |
| + EXPECT_TRUE(base::PathExists(dump_file)); |
| + int64 file_size = 0; |
| + EXPECT_TRUE(base::GetFileSize(dump_file, &file_size)); |
| + EXPECT_EQ(0, file_size); |
| + |
| + EXPECT_TRUE(base::DeleteFile(dump_file, false)); |
| +} |
| + |
| + |
| } // namespace content |