WebProcessCache should keep track of processes being added
[WebKit-https.git] / LayoutTests / webaudio / mediaelementaudiosourcenode.html
1 <!DOCTYPE html>
2
3 <html>
4 <head>
5 <script src="../resources/js-test.js"></script>
6 <script src="resources/audio-testing.js"></script>
7 </head>
8
9 <body>
10 <div id="description"></div>
11 <div id="console"></div>
12
13 <script>
14 description("Basic tests for MediaElementAudioSourceNode API.");
15
16 var context = 0;
17
18 function runTest() {
19     window.jsTestIsAsync = true;
20
21     context = new webkitAudioContext();
22
23     audioElement = new Audio();
24     mediaSource = context.createMediaElementSource(audioElement);
25     window.audioNode = mediaSource;
26
27     // Check number of inputs and outputs.
28     if (audioNode.numberOfInputs == 0)
29         testPassed("Source AudioNode has no inputs.");
30     else
31         testFailed("Source AudioNode should not have inputs.");
32     
33     if (audioNode.numberOfOutputs == 1)
34         testPassed("Source AudioNode has one output.");
35     else
36         testFailed("Source AudioNode should have one output.");
37
38     // Try calling connect() method with illegal values.
39
40     try {
41         audioNode.connect(0, 0, 0);
42         testFailed("connect() exception should be thrown for illegal destination AudioNode.");
43     } catch(e) {
44         testPassed("connect() exception thrown for illegal destination AudioNode.");
45     }
46
47     try {
48         audioNode.connect(context.destination, 5, 0);
49         testFailed("connect() exception should be thrown for illegal output index.");
50     } catch(e) {
51         testPassed("connect() exception thrown for illegal output index.");
52     }
53
54     try {
55         audioNode.connect(context.destination, 0, 5);
56         testFailed("connect() exception should be thrown for illegal input index.");
57     } catch(e) {
58         testPassed("connect() exception thrown for illegal input index.");
59     }
60
61     // Try calling connect() with proper values.
62     try {
63         audioNode.connect(context.destination, 0, 0);
64         testPassed("audioNode.connect(context.destination) succeeded.");
65     } catch(e) {
66         testFailed("audioNode.connect(context.destination) failed.");
67     }
68     
69     // Try creating another MediaElementAudioSourceNode using the same audio element.
70     try {
71         mediaSource = context.createMediaElementSource(audioElement);
72         testFailed("createMediaElementSource() should throw if called twice on same HTMLMediaElement.");
73     } catch(e) {
74         testPassed("createMediaElementSource() threw error when called twice on same HTMLMediaElement.");
75     }
76
77     shouldThrow("context.createMediaElementSource(null)", "'TypeError: Argument 1 (\\'mediaElement\\') to webkitAudioContext.createMediaElementSource must be an instance of HTMLMediaElement'");
78
79     finishJSTest();
80 }
81
82 runTest();
83
84 </script>
85 </body>
86 </html>