diff options
author | xians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-04 15:47:42 +0000 |
---|---|---|
committer | xians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-04 15:47:42 +0000 |
commit | 10fa9ceb6a87d369fd865ec0d839085036f1ff8d (patch) | |
tree | cc67708e4f1e86a6a43609558546846db03b71e3 | |
parent | c395a3a6a87f4096cbb11df7833336389b041e5b (diff) | |
download | chromium_src-10fa9ceb6a87d369fd865ec0d839085036f1ff8d.zip chromium_src-10fa9ceb6a87d369fd865ec0d839085036f1ff8d.tar.gz chromium_src-10fa9ceb6a87d369fd865ec0d839085036f1ff8d.tar.bz2 |
Add browset tests for webaudio using media stream.
This is the browser test for https://codereview.chromium.org/85523002, which is about Fixing the crash in the webaudio source provider when the audio track is going away.
BUG=322554
TEST=content_browsertests
Review URL: https://codereview.chromium.org/101783003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@238704 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/media/chrome_webrtc_browsertest.cc | 15 | ||||
-rw-r--r-- | chrome/test/data/webrtc/webaudio_crash.html | 19 |
2 files changed, 34 insertions, 0 deletions
diff --git a/chrome/browser/media/chrome_webrtc_browsertest.cc b/chrome/browser/media/chrome_webrtc_browsertest.cc index 8c5a2ba..1819470 100644 --- a/chrome/browser/media/chrome_webrtc_browsertest.cc +++ b/chrome/browser/media/chrome_webrtc_browsertest.cc @@ -61,6 +61,9 @@ class MAYBE_WebrtcBrowserTest : public WebRtcTestBase { // The video playback will not work without a GPU, so force its use here. command_line->AppendSwitch(switches::kUseGpuInTests); + + // Flag used by TestWebAudioMediaStream to force garbage collection. + command_line->AppendSwitchASCII(switches::kJavaScriptFlags, "--expose-gc"); } // Ensures we didn't get any errors asynchronously (e.g. while no javascript @@ -357,3 +360,15 @@ IN_PROC_BROWSER_TEST_F(MAYBE_WebrtcBrowserTest, ASSERT_TRUE(peerconnection_server_.Stop()); } + +IN_PROC_BROWSER_TEST_F(MAYBE_WebrtcBrowserTest, TestWebAudioMediaStream) { + ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); + GURL url(embedded_test_server()->GetURL("/webrtc/webaudio_crash.html")); + ui_test_utils::NavigateToURL(browser(), url); + content::WebContents* tab = + browser()->tab_strip_model()->GetActiveWebContents(); + // A sleep is necessary to be able to detect the crash. + SleepInJavascript(tab, 1000); + + ASSERT_FALSE(tab->IsCrashed()); +} diff --git a/chrome/test/data/webrtc/webaudio_crash.html b/chrome/test/data/webrtc/webaudio_crash.html new file mode 100644 index 0000000..aca640f --- /dev/null +++ b/chrome/test/data/webrtc/webaudio_crash.html @@ -0,0 +1,19 @@ +<script> +audioContext = new webkitAudioContext(); +dstNode = audioContext.createMediaStreamDestination(); +mediaStream = dstNode.stream; + +// Allocate AudioNode with a reference to AudioSourceProvider owned by +// the media stream track. +srcNode = audioContext.createMediaStreamSource(mediaStream); + +// Free media stream track. +mediaTrack = mediaStream.getAudioTracks()[0]; +mediaStream.removeTrack(mediaTrack); +mediaTrack = null; +gc(); + +// Use AudioSourceProvider owned by the media stream track, and ensure there +// is no crash. +srcNode.connect(audioContext.destination); +</script>
\ No newline at end of file |