diff --git a/browser/devtools/webaudioeditor/test/browser.ini b/browser/devtools/webaudioeditor/test/browser.ini index ca1ac106e11d..4090858f844f 100644 --- a/browser/devtools/webaudioeditor/test/browser.ini +++ b/browser/devtools/webaudioeditor/test/browser.ini @@ -28,6 +28,7 @@ skip-if = true # bug 1092571 [browser_audionode-actor-add-automation-event.js] [browser_audionode-actor-get-automation-data-01.js] [browser_audionode-actor-get-automation-data-02.js] +[browser_audionode-actor-get-automation-data-03.js] [browser_webaudio-actor-simple.js] [browser_webaudio-actor-destroy-node.js] [browser_webaudio-actor-connect-param.js] diff --git a/browser/devtools/webaudioeditor/test/browser_audionode-actor-get-automation-data-03.js b/browser/devtools/webaudioeditor/test/browser_audionode-actor-get-automation-data-03.js new file mode 100644 index 000000000000..13fb287b31c1 --- /dev/null +++ b/browser/devtools/webaudioeditor/test/browser_audionode-actor-get-automation-data-03.js @@ -0,0 +1,34 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +/** + * Test that `cancelScheduledEvents` clears out events on and after + * its argument. + */ + +add_task(function*() { + let { target, front } = yield initBackend(SIMPLE_CONTEXT_URL); + let [_, [destNode, oscNode, gainNode]] = yield Promise.all([ + front.setup({ reload: true }), + get3(front, "create-node") + ]); + + yield oscNode.addAutomationEvent("frequency", "setValueAtTime", [300, 0]); + yield oscNode.addAutomationEvent("frequency", "linearRampToValueAtTime", [500, 0.9]); + yield oscNode.addAutomationEvent("frequency", "setValueAtTime", [700, 1]); + yield oscNode.addAutomationEvent("frequency", "exponentialRampToValueAtTime", [1000, 2]); + yield oscNode.addAutomationEvent("frequency", "cancelScheduledValues", [1]); + + var { events, values } = yield oscNode.getAutomationData("frequency"); + + is(events.length, 2, "2 recorded events returned."); + is(values.length, 2000, "2000 value points returned"); + + checkAutomationValue(values, 0, 300); + checkAutomationValue(values, 0.5, 411.15); + checkAutomationValue(values, 0.9, 499.9); + checkAutomationValue(values, 1, 499.9); + checkAutomationValue(values, 2, 499.9); + + yield removeTab(target.tab); +}); diff --git a/toolkit/devtools/server/actors/webaudio.js b/toolkit/devtools/server/actors/webaudio.js index 8aa610f2d8f1..b17db9ea1f0e 100644 --- a/toolkit/devtools/server/actors/webaudio.js +++ b/toolkit/devtools/server/actors/webaudio.js @@ -35,7 +35,7 @@ const NODE_CREATION_METHODS = [ const AUTOMATION_METHODS = [ "setValueAtTime", "linearRampToValueAtTime", "exponentialRampToValueAtTime", - "setTargetAtTime", "setValueCurveAtTime" + "setTargetAtTime", "setValueCurveAtTime", "cancelScheduledValues" ]; const NODE_ROUTING_METHODS = [