2 postMessage("Test started.");
5 postMessage("PASS: importScripts(), exists, is a function, and doesn't throw when not given any arguments");
7 var source1 = "worker-importScripts-source1.js";
8 var source2 = "worker-importScripts-source2.js";
9 var differentOrigin = "http://localhost:8000/workers/resources/worker-importScripts-differentOrigin.js";
10 var differentRedirectOrigin = "/resources/redirect.php?url=http://localhost:8000/workers/resources/worker-importScripts-differentOrigin.js";
11 var syntaxErrorSource = "worker-importScripts-syntaxError.js";
12 var fakeSource = "nonexistant";
13 var loadedSource1 = false;
14 var loadedSource2 = false;
15 var differentOriginLoaded = false;
17 function resetLoadFlags() {
18 loadedSource1 = false;
19 loadedSource2 = false;
20 differentOriginLoaded = false;
24 importScripts(differentOrigin)
26 postMessage("FAIL: Threw " + e + " when attempting cross origin load");
28 if (differentOriginLoaded)
29 postMessage("PASS: executed script from different origin");
34 importScripts(differentRedirectOrigin)
36 postMessage("FAIL: Threw " + e + " when attempting load from different origin through a redirect");
38 if (differentOriginLoaded)
39 postMessage("PASS: executed script from different origin through a redirect");
41 postMessage("FAIL: did not load script from different origin through a redirect");
45 postMessage("Testing single argument:");
46 importScripts(source1)
48 postMessage("PASS: loaded first source");
50 postMessage("FAIL: did not load first source");
54 postMessage("Testing multiple arguments:");
55 importScripts(source1, source2);
56 if (loadedSource1 && loadedSource2)
57 postMessage("PASS: Both sources loaded and executed.");
59 postMessage("FAIL: not all sources were loaded");
63 postMessage("Testing multiple arguments (different order):");
64 importScripts(source2, source1);
65 if (loadedSource1 && loadedSource2)
66 postMessage("PASS: Both sources loaded and executed.");
68 postMessage("FAIL: not all sources were loaded");
71 firstShouldThrow = false;
72 secondShouldThrow = false;
73 postMessage("Testing multiple arguments, with different origin for one argument:");
75 importScripts(source1, differentOrigin, source2);
77 postMessage("FAIL: Threw " + e + " when attempt cross origin load");
79 if (loadedSource1 && loadedSource2 && differentOriginLoaded)
80 postMessage("PASS: all resources executed.");
82 postMessage("FAIL: Not of the origin failure");
87 importScripts(source1, fakeSource, source2);
89 postMessage("PASS: Threw " + e + " when load failed");
91 if (!loadedSource1 && !loadedSource2)
92 postMessage("FAIL: Nothing was executed when network error occurred.");
94 postMessage("PASS: some resources were loaded despite the network error");
99 importScripts(source1, syntaxErrorSource, source2);
101 postMessage("PASS: Threw " + e + " when encountering a syntax error in imported script");
103 if (!loadedSource1 && !loadedSource2)
104 postMessage("FAIL: Nothing was executed when syntax error was present in any source.");
106 postMessage("PASS: some resources were loaded despite the presence of a syntax error");
110 postMessage("Testing multiple arguments, with first resource throwing an exception:");
111 firstShouldThrow = true;
113 importScripts(source1, source2);
115 postMessage("PASS: Propagated '" + e + "' from script");
117 firstShouldThrow = false;
118 if (loadedSource1 && !loadedSource2)
119 postMessage("PASS: First resource was executed, and second resource was not");
120 else if (loadedSource2)
121 postMessage("FAIL: Second resource was executed");
123 postMessage("FAIL: first resource did not execute correctly");
127 postMessage("Testing multiple arguments, with second resource throwing an exception:");
128 secondShouldThrow = true;
130 importScripts(source1, source2);
132 postMessage("PASS: Propagated '" + e + "' from script");
134 secondShouldThrow = false;
135 if (loadedSource1 && loadedSource2)
136 postMessage("PASS: Both scripts were executed");
138 postMessage("FAIL: scripts did not execute correctly");
143 postMessage("FAIL: Unexpected exception: " + e);