Move parseFontFaceDescriptor to CSSPropertyParser.cpp
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / webaudio / audioparam-connect-audioratesignal.html
blobf2619593f7a21251ed7b442bf562a59eb10fa6be
1 <!DOCTYPE html>
3 <!--
4 Tests that an audio-rate signal (AudioNode output) can be connected to an AudioParam.
5 Specifically, this tests that an audio-rate signal coming from an AudioBufferSourceNode
6 playing an AudioBuffer containing a specific curve can be connected to an AudioGainNode's
7 .gain attribute (an AudioParam). Another AudioBufferSourceNode will be the audio source
8 having its gain changed. We load this one with an AudioBuffer containing a constant value of 1.
9 Thus it's easy to check that the resultant signal should be equal to the gain-scaling curve.
10 -->
12 <html>
13 <head>
14 <script src="resources/compatibility.js"></script>
15 <script src="resources/audio-testing.js"></script>
16 <script src="../resources/js-test.js"></script>
18 </head>
19 <body>
21 <script>
23 var sampleRate = 44100.0;
24 var lengthInSeconds = 1;
26 var context = 0;
27 var constantOneBuffer = 0;
28 var linearRampBuffer = 0;
30 function checkResult(event) {
31 var renderedBuffer = event.renderedBuffer;
32 var renderedData = renderedBuffer.getChannelData(0);
33 var expectedData = linearRampBuffer.getChannelData(0);
34 var n = renderedBuffer.length;
36 if (n == linearRampBuffer.length) {
37 testPassed("Rendered signal is of correct length.");
38 } else {
39 testFailed("Rendered signal is not of correct length.");
42 // Check that the rendered result exactly matches the buffer used to control gain.
43 // This is because we're changing the gain of a signal having constant value 1.
44 var success = true;
45 for (var i = 0; i < n; ++i) {
46 if (renderedData[i] != expectedData[i]) {
47 success = false;
48 break;
52 if (success) {
53 testPassed("Rendered signal exactly matches the audio-rate gain changing signal.");
54 } else {
55 testFailed("Rendered signal differs from the audio-rate gain changing signal.");
58 finishJSTest();
61 function runTest() {
62 if (window.testRunner) {
63 testRunner.dumpAsText();
64 testRunner.waitUntilDone();
67 window.jsTestIsAsync = true;
69 var sampleFrameLength = sampleRate * lengthInSeconds;
71 // Create offline audio context.
72 context = new OfflineAudioContext(1, sampleFrameLength, sampleRate);
74 // Create buffer used by the source which will have its gain controlled.
75 constantOneBuffer = createConstantBuffer(context, sampleFrameLength, 1);
77 // Create buffer used to control gain.
78 linearRampBuffer = createLinearRampBuffer(context, sampleFrameLength);
80 // Create the two sources.
82 var constantSource = context.createBufferSource();
83 constantSource.buffer = constantOneBuffer;
85 var gainChangingSource = context.createBufferSource();
86 gainChangingSource.buffer = linearRampBuffer;
88 // Create a gain node controlling the gain of constantSource and make the connections.
89 var gainNode = context.createGain();
91 // Intrinsic baseline gain of zero.
92 gainNode.gain.value = 0;
94 constantSource.connect(gainNode);
95 gainNode.connect(context.destination);
97 // Connect an audio-rate signal to control the .gain AudioParam.
98 // This is the heart of what is being tested.
99 gainChangingSource.connect(gainNode.gain);
101 // Start both sources at time 0.
102 constantSource.start(0);
103 gainChangingSource.start(0);
105 context.oncomplete = checkResult;
106 context.startRendering();
109 runTest();
110 successfullyParsed = true;
112 </script>
114 </body>
115 </html>