-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path1055211-audionodeactor-bypass.patch
136 lines (129 loc) · 4.38 KB
/
1055211-audionodeactor-bypass.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
From 13253f1092c64ef40745cbcbc17cc63449330b1b Mon Sep 17 00:00:00 2001
From: Jordan Santell <[email protected]>
Date: Thu, 18 Sep 2014 14:23:02 -0700
Subject: Bug 1055211 - Add bypass method on AudioNodeActors. r=vp
---
browser/devtools/webaudioeditor/test/browser.ini | 5 +--
.../test/browser_audionode-actor-bypass.js | 29 +++++++++++++++++
toolkit/devtools/server/actors/webaudio.js | 38 ++++++++++++++++++++++
3 files changed, 70 insertions(+), 2 deletions(-)
create mode 100644 browser/devtools/webaudioeditor/test/browser_audionode-actor-bypass.js
diff --git a/browser/devtools/webaudioeditor/test/browser.ini b/browser/devtools/webaudioeditor/test/browser.ini
index 9545b68..8c6c7e9 100644
--- a/browser/devtools/webaudioeditor/test/browser.ini
+++ b/browser/devtools/webaudioeditor/test/browser.ini
@@ -15,19 +15,20 @@ support-files =
head.js
[browser_audionode-actor-get-param-flags.js]
[browser_audionode-actor-get-params-01.js]
[browser_audionode-actor-get-params-02.js]
[browser_audionode-actor-get-set-param.js]
[browser_audionode-actor-get-type.js]
[browser_audionode-actor-is-source.js]
-[browser_webaudio-actor-connect-param.js]
-[browser_webaudio-actor-destroy-node.js]
+[browser_audionode-actor-bypass.js]
[browser_webaudio-actor-simple.js]
+[browser_webaudio-actor-destroy-node.js]
+[browser_webaudio-actor-connect-param.js]
[browser_wa_destroy-node-01.js]
[browser_wa_first-run.js]
[browser_wa_reset-01.js]
[browser_wa_reset-02.js]
[browser_wa_reset-03.js]
[browser_wa_reset-04.js]
diff --git a/browser/devtools/webaudioeditor/test/browser_audionode-actor-bypass.js b/browser/devtools/webaudioeditor/test/browser_audionode-actor-bypass.js
new file mode 100644
index 0000000..184afc1
--- /dev/null
+++ b/browser/devtools/webaudioeditor/test/browser_audionode-actor-bypass.js
@@ -0,0 +1,29 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/**
+ * Test AudioNode#bypass(), AudioNode#isBypassed()
+ */
+
+function spawnTest () {
+ let [target, debuggee, front] = yield initBackend(SIMPLE_CONTEXT_URL);
+ let [_, [destNode, oscNode, gainNode]] = yield Promise.all([
+ front.setup({ reload: true }),
+ get3(front, "create-node")
+ ]);
+
+ is((yield gainNode.isBypassed()), false, "Nodes start off unbypassed.");
+
+ info("Calling node#bypass(true)");
+ yield gainNode.bypass(true);
+
+ is((yield gainNode.isBypassed()), true, "Node is now bypassed.");
+
+ info("Calling node#bypass(false)");
+ yield gainNode.bypass(false);
+
+ is((yield gainNode.isBypassed()), false, "Node back to being unbypassed.");
+
+ yield removeTab(target.tab);
+ finish();
+}
diff --git a/toolkit/devtools/server/actors/webaudio.js b/toolkit/devtools/server/actors/webaudio.js
index 1358696..92894c7 100644
--- a/toolkit/devtools/server/actors/webaudio.js
+++ b/toolkit/devtools/server/actors/webaudio.js
@@ -152,16 +152,54 @@ let AudioNodeActor = exports.AudioNodeActor = protocol.ActorClass({
*/
isSource: method(function () {
return !!~this.type.indexOf("Source") || this.type === "OscillatorNode";
}, {
response: { source: RetVal("boolean") }
}),
/**
+ * Returns a boolean indicating if the AudioNode has been "bypassed",
+ * via `AudioNodeActor#bypass` method.
+ *
+ * @return Boolean
+ */
+ isBypassed: method(function () {
+ let node = this.node.get();
+ if (node === null) {
+ return false;
+ }
+
+ return node.passThrough;
+ }, {
+ response: { bypassed: RetVal("boolean") }
+ }),
+
+ /**
+ * Takes a boolean, either enabling or disabling the "passThrough" option
+ * on an AudioNode. If a node is bypassed, an effects processing node (like gain, biquad),
+ * will allow the audio stream to pass through the node, unaffected.
+ *
+ * @param Boolean enable
+ * Whether the bypass value should be set on or off.
+ */
+ bypass: method(function (enable) {
+ let node = this.node.get();
+
+ if (node === null) {
+ return;
+ }
+
+ node.passThrough = enable;
+ }, {
+ request: { enable: Arg(0, "boolean") },
+ oneway: true
+ }),
+
+ /**
* Changes a param on the audio node. Responds with either `undefined`
* on success, or a description of the error upon param set failure.
*
* @param String param
* Name of the AudioParam to change.
* @param String value
* Value to change AudioParam to.
*/
--
1.8.4.2