/
blob-script-with-cross-domain-imported-scripts.html
91 lines (79 loc) · 2.76 KB
/
blob-script-with-cross-domain-imported-scripts.html
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
<!DOCTYPE html>
<html>
<head>
<script src="../resources/inspector-test.js"></script>
<script>
let worker;
function triggerWorkerStart() {
let blob = new Blob([`importScripts(["http://localhost:8000/inspector/worker/resources/worker-blob-script.js"]);`]);
let blobURL = URL.createObjectURL(blob);
worker = new Worker(blobURL);
}
function test()
{
let workerTarget;
let mainTarget = WI.mainTarget;
function sanitizeURL(url) {
if (!url)
return "<null>";
if (url.startsWith("blob:"))
return "blob:<sanitized>";
return url;
}
function dumpURLs(urls) {
if (!urls.length)
InspectorTest.log("-- None --");
else {
urls.sort((a, b) => a <= b)
for (let url of urls)
InspectorTest.log(url);
}
}
function dumpWorkerScripts() {
InspectorTest.log("SCRIPTS:");
let targetData = WI.debuggerManager.dataForTarget(workerTarget);
let urls = [];
for (let script of targetData.scripts)
urls.push(sanitizeURL(script.url));
dumpURLs(urls);
}
function dumpWorkerResources() {
InspectorTest.log("RESOURCES:");
let urls = [];
for (let resource of workerTarget.resourceCollection)
urls.push(sanitizeURL(resource.url));
dumpURLs(urls);
}
let suite = InspectorTest.createAsyncSuite("Worker.Resources");
suite.addTestCase({
name: "Worker.Resource.Start",
description: "Start the worker and load multiple resources.",
test(resolve, reject) {
InspectorTest.evaluateInPage("triggerWorkerStart()");
WI.targetManager.singleFireEventListener(WI.TargetManager.Event.TargetAdded, (event) => {
workerTarget = event.data.target;
InspectorTest.assert(workerTarget instanceof WI.Target);
InspectorTest.expectEqual(workerTarget.type, WI.TargetType.Worker, "Added Target should have Worker type.");
});
let seen = 0;
const expected = 3;
let listener = WI.debuggerManager.addEventListener(WI.DebuggerManager.Event.ScriptAdded, (event) => {
if (event.data.script.target === workerTarget)
seen++;
if (seen !== expected)
return;
WI.debuggerManager.removeEventListener(WI.DebuggerManager.Event.ScriptAdded, listener);
dumpWorkerResources();
dumpWorkerScripts();
resolve();
});
}
});
suite.runTestCasesAndFinish();
}
</script>
</head>
<body onload="runTest()">
<p>Test for Resources in a Worker started with a Blob URL that imports cross origin scripts.</p>
</body>
</html>