6b699274985dcb7817fdc4ac0c760e465e2a4811
[WebKit-https.git] / LayoutTests / fast / workers / worker-constructor.html
1 <body>
2 <p>Test Worker constructor functionality. Should print a series of PASS messages, followed with DONE.</p>
3 <div id=result></div>
4 <script>
5 function log(message)
6 {
7     document.getElementById("result").innerHTML += message + "<br>";
8 }
9
10 function runNextTest()
11 {
12     testIndex++;
13     // Loop until there are no more tests to run
14     var testName = 'test' + testIndex;
15     if (window[testName]) {
16         window[testName]();
17     } else {
18         log("DONE");
19         if (window.layoutTestController)
20             layoutTestController.notifyDone();
21     }
22 }
23
24 function test1()
25 {
26     try {
27         new Worker({toString:function(){throw "exception"}})
28         log("FAIL: toString exception not propagated.");
29     } catch (ex) {
30         if (ex == "exception")
31             log("PASS: toString exception propagated correctly.");
32         else
33             log("FAIL: unexpected exception (" + ex + ") received instead of one propagated from toString.");
34     }
35     runNextTest();
36 }
37
38 function test2()
39 {
40     try {
41         var foo = {toString:function(){new Worker(foo)}}
42         new Worker(foo);
43         log("FAIL: no exception when trying to create workers recursively");
44     } catch (ex) {
45         log("PASS: trying to create workers recursively resulted in an exception (" + ex + ")");
46     }
47     runNextTest();
48 }
49
50 function test3()
51 {
52     try {
53         new Worker();
54         log("FAIL: invoking Worker constructor without arguments did not result in an exception");
55     } catch (ex) {
56         log("PASS: invoking Worker constructor without arguments resulted in an exception (" + ex + ")");
57     }
58     runNextTest();
59 }
60
61 function test4()
62 {
63     try {
64         var worker = new Worker("");
65         worker.onerror = function() {
66             log("PASS: onerror invoked for an empty script URL.");
67             runNextTest();
68         }
69     } catch (ex) {
70         log("FAIL: unexpected exception " + ex);
71         runNextTest();
72     }
73 }
74
75 function test5()
76 {
77     try {
78         var worker = new Worker("invalidurl://");
79         worker.onerror = function() {
80             log("PASS: onerror invoked for an invalid script URL.");
81             runNextTest();
82         }
83     } catch (ex) {
84         log("FAIL: unexpected exception " + ex);
85         runNextTest();
86     }
87 }
88
89 function test6()
90 {
91     try {
92         var worker = new Worker("does-not-exist.js");
93         worker.onerror = function() {
94             log("PASS: onerror invoked for a script that could not be loaded.");
95             runNextTest();
96         }
97     } catch (ex) {
98         log("FAIL: unexpected exception " + ex);
99         runNextTest();
100     }
101 }
102
103 function test7()
104 {
105     try {
106         var worker = new Worker("resources/worker-common.js");
107         // Make sure attributes from both Worker and AbstractWorker are visible.
108         if (!worker.postMessage)
109             log("FAIL: worker.postMessage did not exist.");
110         else if (!worker.addEventListener)
111             log("FAIL: worker.addEventListener did not exist.");
112         else
113             log("PASS: Successfully created worker.");
114     } catch (ex) {
115         log("FAIL: unexpected exception (" + ex + ") thrown when creating worker");
116     }
117     runNextTest();
118 }
119
120 if (window.layoutTestController) {
121     layoutTestController.dumpAsText();
122     layoutTestController.waitUntilDone();
123 }
124
125 var testIndex = 0;
126 runNextTest();
127
128 </script>
129 </body>