003.html
<!--
onconnect = function(e) {
var expected = [
// https://html.spec.whatwg.org/
"ApplicationCache",
"WorkerGlobalScope",
"SharedWorkerGlobalScope",
"Worker",
"SharedWorker",
"MessagePort",
"MessageEvent",
"WorkerNavigator",
"MessageChannel",
"WorkerLocation",
"ImageData",
"ImageBitmap",
"CanvasGradient",
"CanvasPattern",
"CanvasPath",
"Path2D",
"PromiseRejectionEvent",
"EventSource",
"WebSocket",
"CloseEvent",
"BroadcastChannel",
// https://tc39.github.io/ecma262/
"ArrayBuffer",
"Int8Array",
"Uint8Array",
"Uint8ClampedArray",
"Int16Array",
"Uint16Array",
"Int32Array",
"Uint32Array",
"Float32Array",
"Float64Array",
"DataView",
// https://xhr.spec.whatwg.org/
"XMLHttpRequestEventTarget",
"XMLHttpRequestUpload",
"XMLHttpRequest",
"ProgressEvent",
"FormData",
// https://url.spec.whatwg.org/
"URL",
"URLSearchParams",
// https://w3c.github.io/FileAPI/
"File",
"Blob",
"FileList",
"FileReader",
"FileReaderSync",
// https://dom.spec.whatwg.org/
"EventTarget",
"ErrorEvent",
"Event",
"CustomEvent",
// http://heycam.github.io/webidl/
"DOMException",
// https://streams.spec.whatwg.org/
"ReadableStream",
"WritableStream",
"ByteLengthQueuingStrategy",
"CountQueuingStrategy",
// http://w3c.github.io/IndexedDB/
"IDBRequest",
"IDBOpenDBRequest",
"IDBVersionChangeEvent",
"IDBFactory",
"IDBDatabase",
"IDBObjectStore",
"IDBIndex",
"IDBKeyRange",
"IDBCursor",
"IDBCursorWithValue",
"IDBTransaction",
];
var result = [];
for (var i = 0; i < expected.length; ++i) {
result.push([expected[i], expected[i] in self]);
}
e.ports[0].postMessage(result);
}
/*
-->
<!doctype html>
<title>available interface objects in shared worker</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id=log></div>
<script>
setup(function() {
window.worker = new SharedWorker('#');
worker.port.onmessage = function(e) {
var result = e.data;
for (var i = 0; i < result.length; ++i) {
test(function() {
assert_true(result[i][1]);
}, "The " + result[i][0] + " interface object should be exposed");
}
done();
}
}, {explicit_done: true});
</script>
<!--
*/
//-->