mochitest for bug 1255618 r=ehsan draft
authorKarl Tomlinson <karlt+@karlt.net>
Mon, 14 Mar 2016 16:58:18 +1300
changeset 340336 40e1e01e40ea7abc3b29e66d837c0bc7d7ff9c90
parent 339691 4eb4787a255f77b6a734ef30ac9d59bae50fbe0f
child 516171 73cbe8ce7af505ec73742a22558fba7af8b6c273
push id12945
push userktomlinson@mozilla.com
push dateTue, 15 Mar 2016 05:33:04 +0000
reviewersehsan
bugs1255618
milestone48.0a1
mochitest for bug 1255618 r=ehsan MozReview-Commit-ID: 9SImAja2jXH
dom/media/webaudio/test/mochitest.ini
dom/media/webaudio/test/test_bug1255618.html
--- a/dom/media/webaudio/test/mochitest.ini
+++ b/dom/media/webaudio/test/mochitest.ini
@@ -85,16 +85,17 @@ tags=capturestream
 [test_bug956489.html]
 [test_bug964376.html]
 [test_bug966247.html]
 tags=capturestream
 [test_bug972678.html]
 [test_bug1118372.html]
 [test_bug1056032.html]
 skip-if = toolkit == 'android' # bug 1056706
+[test_bug1255618.html]
 [test_channelMergerNode.html]
 [test_channelMergerNodeWithVolume.html]
 [test_channelSplitterNode.html]
 [test_channelSplitterNodeWithVolume.html]
 skip-if = (android_version == '18' && debug) # bug 1158417
 [test_convolverNode.html]
 [test_convolverNode_mono_mono.html]
 [test_convolverNodeChannelCount.html]
new file mode 100644
--- /dev/null
+++ b/dom/media/webaudio/test/test_bug1255618.html
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+  <title>Test sync XHR does not crash unlinked AudioContext</title>
+  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+</head>
+<body>
+<script>
+SimpleTest.waitForExplicitFinish();
+
+const filename = "test_bug1255618.html";
+
+function collect_and_fetch() {
+    SpecialPowers.forceGC();
+    SpecialPowers.forceCC();
+
+    var xhr = new XMLHttpRequest();
+    xhr.open("GET", filename, false);
+    var ended = false;
+    xhr.onloadend = function() { ended = true; }
+    // Sync XHR will suspend timeouts, which involves any AudioContexts still
+    // registered with the window.
+    // See https://bugzilla.mozilla.org/show_bug.cgi?id=1255618#c0
+    xhr.send(null);
+
+    ok(ended, "No crash during fetch");
+    SimpleTest.finish();
+}
+
+var ac = new AudioContext();
+
+ac.onstatechange = function () {
+    ac.onstatechange = null;
+    is(ac.state, "running", "statechange to running");
+    ac = null;
+    SimpleTest.executeSoon(collect_and_fetch);
+}
+
+</script>
+</body>