summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorxians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-04 15:47:42 +0000
committerxians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-04 15:47:42 +0000
commit10fa9ceb6a87d369fd865ec0d839085036f1ff8d (patch)
treecc67708e4f1e86a6a43609558546846db03b71e3
parentc395a3a6a87f4096cbb11df7833336389b041e5b (diff)
downloadchromium_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.cc15
-rw-r--r--chrome/test/data/webrtc/webaudio_crash.html19
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