From 5f8de423f190bbb79a62f804151bc24824fa32d8 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 04:16:08 -0500 Subject: Add m-esr52 at 52.6.0 --- .../test/browser_wa_destroy-node-01.js | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 devtools/client/webaudioeditor/test/browser_wa_destroy-node-01.js (limited to 'devtools/client/webaudioeditor/test/browser_wa_destroy-node-01.js') diff --git a/devtools/client/webaudioeditor/test/browser_wa_destroy-node-01.js b/devtools/client/webaudioeditor/test/browser_wa_destroy-node-01.js new file mode 100644 index 000000000..d7dde4d97 --- /dev/null +++ b/devtools/client/webaudioeditor/test/browser_wa_destroy-node-01.js @@ -0,0 +1,59 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +/** + * Tests that the destruction node event is fired and that the nodes are no + * longer stored internally in the tool, that the graph is updated properly, and + * that selecting a soon-to-be dead node clears the inspector. + * + * All done in one test since this test takes a few seconds to clear GC. + */ + +add_task(function* () { + let { target, panel } = yield initWebAudioEditor(DESTROY_NODES_URL); + let { panelWin } = panel; + let { gFront, $, $$, gAudioNodes } = panelWin; + + let started = once(gFront, "start-context"); + + let events = Promise.all([ + getNSpread(gAudioNodes, "add", 13), + waitForGraphRendered(panelWin, 13, 2) + ]); + reload(target); + let [created] = yield events; + + // Flatten arrays of event arguments and take the first (AudioNodeModel) + // and get its ID. + let actorIDs = created.map(ev => ev[0].id); + + // Click a soon-to-be dead buffer node + yield clickGraphNode(panelWin, actorIDs[5]); + + let destroyed = getN(gAudioNodes, "remove", 10); + + // Force a CC in the child process to collect the orphaned nodes. + forceNodeCollection(); + + // Wait for destruction and graph to re-render + yield Promise.all([destroyed, waitForGraphRendered(panelWin, 3, 2)]); + + // Test internal storage + is(panelWin.gAudioNodes.length, 3, "All nodes should be GC'd except one gain, osc and dest node."); + + // Test graph rendering + ok(findGraphNode(panelWin, actorIDs[0]), "dest should be in graph"); + ok(findGraphNode(panelWin, actorIDs[1]), "osc should be in graph"); + ok(findGraphNode(panelWin, actorIDs[2]), "gain should be in graph"); + + let { nodes, edges } = countGraphObjects(panelWin); + + is(nodes, 3, "Only 3 nodes rendered in graph."); + is(edges, 2, "Only 2 edges rendered in graph."); + + // Test that the inspector reset to no node selected + ok(isVisible($("#web-audio-editor-details-pane-empty")), + "InspectorView empty message should show if the currently selected node gets collected."); + + yield teardown(target); +}); -- cgit v1.2.3