import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo

This commit is contained in:
Roy Tam 2018-01-19 03:59:58 +08:00
commit dcd9973243
150858 changed files with 23884658 additions and 0 deletions

View file

@ -0,0 +1,3 @@
onconnect = function(e) {
e.ports[0].postMessage(['1', self.name]);
}

View file

@ -0,0 +1,19 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>Web Workers: SharedWorker - throw URLMismatchError</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
var worker = new SharedWorker('shared-worker.js', 'name');
assert_throws("URLMismatchError", function() {
new SharedWorker('some-other-url.js', 'name');
});
}, "Create SharedWorker with different URLs but same name");
</script>

View file

@ -0,0 +1,26 @@
<!--
onconnect = function(e) {
e.ports[0].postMessage([e.data === '', e instanceof MessageEvent, e.ports.length == 1]);
};
/*
-->
<!doctype html>
<title>connect event</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
(async_test()).step(function() {
var worker = new SharedWorker('#');
worker.port.addEventListener('message', this.step_func(function(e) {
assert_true(e.data[0], "e.data === ''");
assert_true(e.data[1], "e instanceof MessageEvent");
assert_true(e.data[2], "e.ports.length == 1");
this.done();
}), false);
worker.port.start();
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1,17 @@
<!--
/*
-->
<!doctype html>
<title>creating a dummy shared worker with name "foo"</title>
<link rel=help href="http://www.whatwg.org/html/#dom-sharedworker">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
var worker = new SharedWorker('#', 'foo');
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1,17 @@
<!--
/*
-->
<!doctype html>
<title>creating a dummy shared worker</title>
<link rel=help href="http://www.whatwg.org/html/#dom-sharedworker">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
var worker = new SharedWorker('#');
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1,17 @@
<!--
/*
-->
<!doctype html>
<title>creating a dummy shared worker with explicit name ""</title>
<link rel=help href="http://www.whatwg.org/html/#dom-sharedworker">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
var worker = new SharedWorker('#', '');
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1,34 @@
<!--
var expected = 'self location close onerror importScripts navigator addEventListener removeEventListener dispatchEvent name applicationCache onconnect setTimeout clearTimeout setInterval clearInterval'.split(' ');
var log = '';
for (var i = 0; i < expected.length; ++i) {
if (!(expected[i] in self))
log += expected[i] + ' did not exist\n';
}
onconnect = function(e) {
e.ports[0].postMessage(log);
};
/*
-->
<!doctype html>
<title>members of SharedWorkerGlobalScope</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
(async_test()).step(function() {
var worker = new SharedWorker('#');
worker.port.addEventListener('message', this.step_func(function(e) {
assert_equals(e.data, '');
this.done();
}), false);
worker.port.start();
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1,41 @@
<!--
var prt;
function handleCall(e) {
var log = [];
for (var i = 0; i < e.data.length; ++i) {
if (!(e.data[i] in self))
log.push(e.data[i]);
}
prt.postMessage('These were missing: '+log.join(', '));
}
onconnect = function(e) {
prt = e.ports[0];
prt.onmessage = handleCall;
};
/*
-->
<!doctype html>
<title>expected interface objects/constructors</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
(async_test()).step(function() {
var expected = 'XMLHttpRequest WebSocket EventSource MessageChannel Worker SharedWorker ApplicationCache'.split(' ');
var supported = [];
for (var i = 0; i < expected.length; ++i) {
if (expected[i] in window)
supported.push(expected[i]);
}
var worker = new SharedWorker('#');
worker.port.start();
worker.port.postMessage(supported);
worker.port.addEventListener('message', this.step_func(function(e) {
assert_equals(e.data, '');
this.done();
}), false);
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1,24 @@
<!--
onconnect = function(e) {
e.ports[0].postMessage(self.name);
}
/*
-->
<!doctype html>
<title>self.name</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
(async_test()).step(function() {
var worker = new SharedWorker('#', 'hello');
worker.port.addEventListener('message', this.step_func(function(e) {
assert_equals(e.data, 'hello');
this.done();
}), false);
worker.port.start();
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1,20 @@
<!--
/*
-->
<!doctype html>
<title>no arguments</title>
<link rel=help href="http://www.whatwg.org/html/#sharedworker">
<link rel=help href="http://dev.w3.org/2006/webapi/WebIDL/#es-interface-call">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
assert_throws(new TypeError(), function() {
var worker = new SharedWorker();
});
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1,3 @@
onconnect = function(e) {
e.ports[0].postMessage(['null', self.name]);
}

View file

@ -0,0 +1,25 @@
<!--
onconnect = function(e) {
e.ports[0].postMessage(['FAIL', self.name]);
}
/*
-->
<!doctype html>
<title>null as arguments</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
(async_test()).step(function() {
var worker = new SharedWorker(null, null);
worker.port.addEventListener('message', this.step_func(function(e) {
assert_equals(e.data[0], 'null', 'first arg');
assert_equals(e.data[1], 'null', 'second arg');
this.done();
}), false);
worker.port.start();
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1,25 @@
<!--
onconnect = function(e) {
e.ports[0].postMessage(['FAIL', self.name]);
}
/*
-->
<!doctype html>
<title>1 as arguments</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
(async_test()).step(function() {
var worker = new SharedWorker(1, 1);
worker.port.addEventListener('message', this.step_func(function(e) {
assert_equals(e.data[0], '1', 'first arg');
assert_equals(e.data[1], '1', 'second arg');
this.done();
}), false);
worker.port.start();
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1,23 @@
<!--
onconnect = function(e) {
e.ports[0].postMessage(true);
}
/*
-->
<!doctype html>
<title>worker.port.onmessage</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
(async_test()).step(function() {
var worker = new SharedWorker('#', '');
worker.port.onmessage = this.step_func(function(e) {
assert_true(e.data);
this.done();
});
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1,26 @@
<!--
/*
-->
<!doctype html>
<title>worker.port</title>
<link rel=help href="http://www.whatwg.org/html/#sharedworker">
<link rel=help href="http://www.whatwg.org/html/#messageport">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
var worker = new SharedWorker('#', '');
assert_true('port' in worker, "port");
assert_true('postMessage' in worker.port, "postMessage");
assert_true('start' in worker.port, "start");
assert_true('close' in worker.port, "close");
assert_true('onmessage' in worker.port, "onmessage");
assert_true('addEventListener' in worker.port, "addEventListener");
assert_true('removeEventListener' in worker.port, "removeEventListener");
assert_true('dispatchEvent' in worker.port, "dispatchEvent");
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1,21 @@
<!--
/*
-->
<!doctype html>
<title>setting worker.port</title>
<link rel=help href="http://www.whatwg.org/html/#sharedworker">
<link rel=help href="http://dev.w3.org/2006/webapi/WebIDL/#dfn-attribute-setter">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
var worker = new SharedWorker('#', '');
var x = worker.port;
worker.port = 1;
assert_equals(worker.port, x);
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1,67 @@
<!--
/*
-->
<!doctype html>
<title>same-origin checks</title>
<link rel=help href="http://www.whatwg.org/html/#dom-sharedworker">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
// Needed to prevent a race condition if a worker throws an exception that may or may
// not propogate to the window before the tests finish
setup({allow_uncaught_exception: true});
function testSharedWorkerHelper(t, script) {
try {
var worker = new SharedWorker(script, '');
worker.onerror = t.step_func_done(function(e) {
assert_true(e instanceof ErrorEvent);
});
} catch (e) {
t.step_func_done(function(e) { assert_true(true); });
}
}
test(function() {
assert_throws("SecurityError", function() { new SharedWorker('unsupported:', ''); });
}, "unsupported_scheme");
async_test(function() {
var worker = new SharedWorker('data:,onconnect = function(e) { e.ports[0].postMessage(1); }', '');
worker.port.onmessage = this.step_func_done(function(e) {
assert_equals(e.data, 1);
});
}, "data_url");
async_test(function(t) {
testSharedWorkerHelper(this, 'javascript:""');
}, "javascript_url");
async_test(function(t) {
testSharedWorkerHelper(this, 'about:blank');
}, "about_blank");
async_test(function(t) {
testSharedWorkerHelper(this, 'http://www.opera.com/');
}, "opera_com");
async_test(function(t) {
testSharedWorkerHelper(this, location.protocol+'//'+location.hostname+':81/');
}, "port_81");
async_test(function(t) {
testSharedWorkerHelper(this, 'https://'+location.hostname+':80/');
}, "https_port_80");
async_test(function(t) {
testSharedWorkerHelper(this, 'https://'+location.hostname+':8000/');
}, "https_port_8000");
async_test(function(t) {
testSharedWorkerHelper(this, 'http://'+location.hostname+':8012/');
}, "http_port_8012");
</script>
<!--
*/
//-->

View file

@ -0,0 +1,59 @@
<!--
/*
-->
<!doctype html>
<title>setting members of worker.port</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
setup(function() {
window.worker = new SharedWorker('#', '');
});
test(function() {
worker.port.postMessage = 1;
assert_equals(worker.port.postMessage, 1);
}, 'postMessage');
test(function() {
worker.port.start = 1;
assert_equals(worker.port.start, 1);
}, 'start');
test(function() {
worker.port.close = 1;
assert_equals(worker.port.close, 1);
}, 'close');
test(function() {
var f = function(){};
worker.port.onmessage = f;
assert_equals(worker.port.onmessage, f, 'function(){}');
worker.port.onmessage = 1;
assert_equals(worker.port.onmessage, null, '1');
worker.port.onmessage = f;
worker.port.onmessage = ';';
assert_equals(worker.port.onmessage, null, '";"');
worker.port.onmessage = f;
worker.port.onmessage = {handleEvent:function(){}};
assert_equals(worker.port.onmessage, null, '{handleEvent:function(){}}');
worker.port.onmessage = f;
worker.port.onmessage = null;
assert_equals(worker.port.onmessage, null, 'null');
worker.port.onmessage = f;
worker.port.onmessage = undefined;
assert_equals(worker.port.onmessage, null, 'undefined');
}, 'onmessage');
test(function() {
worker.port.addEventListener = 1;
assert_equals(worker.port.addEventListener, 1);
}, 'addEventListener');
test(function() {
worker.port.removeEventListener = 1;
assert_equals(worker.port.removeEventListener, 1);
}, 'removeEventListener');
test(function() {
worker.port.despatchEvent = 1;
assert_equals(worker.port.despatchEvent, 1);
}, 'despatchEvent');
</script>
<!--
*/
//-->

View file

@ -0,0 +1,6 @@
onconnect = function(e) {
var port = e.ports[0];
port.onmessage = function(e) {
port.postMessage('ping');
}
}

View file

@ -0,0 +1,3 @@
onconnect = function(e) {
e.ports[0].postMessage(['undefined', self.name]);
}

View file

@ -0,0 +1,25 @@
<!--
onconnect = function(e) {
e.ports[0].postMessage(['FAIL', self.name]);
}
/*
-->
<!doctype html>
<title>undefined as arguments</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
(async_test()).step(function() {
var worker = new SharedWorker(undefined, undefined);
worker.port.addEventListener('message', this.step_func(function(e) {
assert_equals(e.data[0], 'undefined', 'first arg');
assert_equals(e.data[1], 'undefined', 'second arg');
this.done();
}), false);
worker.port.start();
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1,30 @@
<!--
var unexpected = 'open print stop getComputedStyle getSelection releaseEvents captureEvents alert confirm prompt addEventStream removeEventStream back forward attachEvent detachEvent navigate DOMParser XMLSerializer XPathEvaluator XSLTProcessor opera Image Option frames Audio SVGUnitTypes SVGZoomAndPan java netscape sun Packages ByteArray closed defaultStatus document event frameElement history innerHeight innerWidth opener outerHeight outerWidth pageXOffset pageYOffset parent screen screenLeft screenTop screenX screenY status top window length'.split(' '); // iterated window in opera and removed expected ones
var log = '';
for (var i = 0; i < unexpected.length; ++i) {
if (unexpected[i] in self)
log += unexpected[i] + ' ';
}
onconnect = function(e) {
e.ports[0].postMessage(log);
};
/*
-->
<!doctype html>
<title>unexpected members/interface objects/constructors</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
(async_test()).step(function() {
var worker = new SharedWorker('#');
worker.port.addEventListener('message', this.step_func(function(e) {
assert_equals(e.data, '');
this.done();
}), false);
worker.port.start();
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1,19 @@
<!--
/*
-->
<!doctype html>
<title>resolving broken url</title>
<link rel=help href="http://www.whatwg.org/html/#dom-sharedworker">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
assert_throws("SyntaxError", function() {
var worker = new SharedWorker('http://foo bar');
});
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1 @@
postMessage('1');

View file

@ -0,0 +1,48 @@
<!--
for (;) // should cause onerror to be invoked, but onerror is null, so
// the error is "not handled". should fire an ErrorEvent on the
// worker.
break;
postMessage(1); // shouldn't do anything since the script doesn't compile
/*
-->
<!doctype html>
<title>AbstractWorker.onerror</title>
<link rel=help href="https://html.spec.whatwg.org/multipage/#runtime-script-errors-2">
<link rel=help href="https://html.spec.whatwg.org/multipage/#report-the-error">
<link rel=help href="https://html.spec.whatwg.org/multipage/#the-event-handler-processing-algorithm">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
setup({allow_uncaught_exception:true});
async_test(function() {
var worker = new Worker('#');
var error;
worker.onerror = this.step_func(function(a, b, c) {
error = a;
assert_equals('' + a, '[object ErrorEvent]');
assert_true("message" in a, 'ErrorEvent.message');
assert_equals(typeof a.message, "string", 'ErrorEvent.message');
assert_equals(a.filename, document.URL + '#', 'ErrorEvent.filename');
assert_true("lineno" in a, 'ErrorEvent.lineno');
assert_equals(typeof a.lineno, "number", 'ErrorEvent.lineno');
assert_equals(b, undefined, 'unexpected second argument to onerror');
assert_equals(c, undefined, 'unexpected third argument to onerror');
});
worker.onmessage = this.step_func(function(e) {
assert_unreached('onmessage was invoked but worker script shouldn\'t have compiled');
});
window.onerror = this.step_func_done(function(a, b, c, d, e, f) {
assert_equals(a, error.message, 'message');
assert_equals(b, error.filename, 'filename');
assert_equals(c, error.lineno, 'lineno');
assert_equals(d, error.colno, 'colno');
assert_equals(e, error.error, 'error');
assert_equals(f, undefined, 'unexpected sixth argument to onerror');
});
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1,21 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>Web Workers: Worker - Blob url</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
async_test(function(t) {
var blob = new Blob(["onmessage = function(event) { postMessage(event.data); }"], {type: "text/plain"});
var worker = new Worker(window.URL.createObjectURL(blob));
var data = "Blob URL";
worker.postMessage(data);
worker.onmessage = t.step_func(function(event) {
assert_equals(event.data, data, "event.data");
t.done();
});
}, "Worker supports Blob url");
</script>

View file

@ -0,0 +1,18 @@
importScripts("/resources/testharness.js");
var expected = [
'postMessage', 'onmessage', /* DedicatedWorkerGlobalScope */
'self', 'location', 'close', 'onerror', 'onoffline', 'ononline', /* WorkerGlobalScope */
'addEventListener', 'removeEventListener', 'dispatchEvent', /* EventListener */
'importScripts', 'navigator', /* WorkerUtils */
'setTimeout', 'clearTimeout', 'setInterval', 'clearInterval', /* WindowTimers */
'btoa', 'atob' /* WindowBase64 */
];
for (var i = 0; i < expected.length; ++i) {
var property = expected[i];
test(function() {
assert_true(property in self);
}, "existence of " + property);
}
done();

View file

@ -0,0 +1,23 @@
<!--
postMessage('FAIL');
/*
-->
<!doctype html>
<title>1 as argument</title>
<link rel=help href="http://www.whatwg.org/html/#dom-worker">
<link rel=help href="http://dev.w3.org/2006/webapi/WebIDL/#es-DOMString">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
var t = async_test();
t.step(function() {
var worker = new Worker(1);
worker.addEventListener('message', t.step_func_done(function(e) {
assert_equals(e.data, '1')
}), false);
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1,23 @@
<!--
postMessage('FAIL');
/*
-->
<!doctype html>
<title>null as argument</title>
<link rel=help href="http://www.whatwg.org/html/#dom-worker">
<link rel=help href="http://dev.w3.org/2006/webapi/WebIDL/#es-DOMString">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
var t = async_test();
t.step(function() {
var worker = new Worker(null);
worker.addEventListener('message', t.step_func_done(function(e) {
assert_equals(e.data, 'null')
}), false);
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1,23 @@
<!--
postMessage('FAIL');
/*
-->
<!doctype html>
<title>undefined as argument</title>
<link rel=help href="http://www.whatwg.org/html/#dom-worker">
<link rel=help href="http://dev.w3.org/2006/webapi/WebIDL/#es-DOMString">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
var t = async_test();
t.step(function() {
var worker = new Worker(undefined);
worker.addEventListener('message', t.step_func_done(function(e) {
assert_equals(e.data, 'undefined')
}), false);
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1,11 @@
importScripts("/resources/testharness.js");
var expected = ['XMLHttpRequest', 'WebSocket', 'EventSource', 'MessageChannel', 'Worker', 'SharedWorker'];
for (var i = 0; i < expected.length; ++i) {
var property = expected[i];
test(function() {
assert_true(property in self);
}, "existence of " + property);
}
done();

View file

@ -0,0 +1,13 @@
<!doctype html>
<meta charset=utf-8>
<title>without arguments</title>
<link rel=help href="http://dev.w3.org/2006/webapi/WebIDL/#es-interface-call">
<link rel=help href="http://www.whatwg.org/html/#dedicated-workers-and-the-worker-interface">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
assert_throws(new TypeError(), function() { new Worker(); });
});
</script>

View file

@ -0,0 +1 @@
postMessage('null');

View file

@ -0,0 +1,22 @@
<!--
postMessage('ok');
/*
-->
<!doctype html>
<meta charset=utf-8>
<title>resolve the empty string</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
var t = async_test();
t.step(function() {
var worker = new Worker('');
worker.addEventListener('message', t.step_func_done(function(e) {
assert_equals(e.data, 'ok');
}), false);
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1,63 @@
<!doctype html>
<meta charset=utf-8>
<title>same-origin checks; the script is in a script element</title>
<link rel=help href="http://www.whatwg.org/html/#dom-worker">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
// Needed to prevent a race condition if a worker throws an exception that may or may
// not propogate to the window before the tests finish
setup({allow_uncaught_exception: true});
function testSharedWorkerHelper(t, script) {
try {
var worker = new SharedWorker(script, '');
worker.onerror = t.step_func_done(function(e) {
assert_true(e instanceof ErrorEvent);
});
} catch (e) {
t.step_func_done(function(e) { assert_true(true); });
}
}
test(function() {
assert_throws("SecurityError", function() { new Worker('unsupported:'); });
}, "unsupported_scheme");
async_test(function() {
var worker = new Worker('data:,postMessage(1);');
worker.onmessage = this.step_func_done(function(e) {
assert_equals(e.data, 1);
});
}, "data_url");
async_test(function(t) {
testSharedWorkerHelper(t, 'about:blank');
}, "about_blank");
async_test(function(t) {
testSharedWorkerHelper(t, 'http://www.example.invalid/');
}, "example_invalid");
async_test(function(t) {
testSharedWorkerHelper(t, location.protocol+'//'+location.hostname+':81/');
}, "port_81");
async_test(function(t) {
testSharedWorkerHelper(t, 'https://'+location.hostname+':80/');
}, "https_port_80");
async_test(function(t) {
testSharedWorkerHelper(t, 'https://'+location.hostname+':8000/');
}, "https_port_8000");
async_test(function(t) {
testSharedWorkerHelper(t, 'http://'+location.hostname+':8012/');
}, "http_post_8012");
async_test(function(t) {
testSharedWorkerHelper(t,'javascript:""');
}, "javascript_url");
</script>

View file

@ -0,0 +1 @@
onmessage = function(event) { postMessage(event.data); }

View file

@ -0,0 +1,44 @@
<!--
(function f() {
postMessage(1);
setTimeout(f, 0);
})();
/*
-->
<!doctype html>
<title>terminate()</title>
<link rel=help href="http://www.whatwg.org/html/#dom-worker-terminate">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
var t = async_test();
t.step(function() {
var worker = new Worker('#');
var i = 0;
var expected;
worker.onmessage = t.step_func(function() {
i++;
});
setTimeout(t.step_func(function() {
expected = i;
start_time = Date.now();
//Hang the main thread for a bit to give the worker the chance to post some more messages
while(Date.now() - start_time < 500) {
//pass
}
worker.terminate();
setTimeout(t.step_func(function() {
assert_equals(i, expected);
t.done();
}), 100);
}), 100);
});
</script>
<!--
*/
//-->

View file

@ -0,0 +1 @@
postMessage('undefined');

View file

@ -0,0 +1,11 @@
importScripts("/resources/testharness.js");
var unexpected = ['open', 'print', 'stop', 'getComputedStyle', 'getSelection', 'releaseEvents', 'captureEvents', 'alert', 'confirm', 'prompt', 'addEventStream', 'removeEventStream', 'back', 'forward', 'attachEvent', 'detachEvent', 'navigate', 'DOMParser', 'XMLSerializer', 'XPathEvaluator', 'XSLTProcessor', 'opera', 'Image', 'Option', 'frames', 'Audio', 'SVGUnitTypes', 'SVGZoomAndPan', 'java', 'netscape', 'sun', 'Packages', 'ByteArray', 'closed', 'defaultStatus', 'document', 'event', 'frameElement', 'history', 'innerHeight', 'innerWidth', 'name', 'opener', 'outerHeight', 'outerWidth', 'pageXOffset', 'pageYOffset', 'parent', 'screen', 'screenLeft', 'screenTop', 'screenX', 'screenY', 'status', 'top', 'window', 'length']; // iterated window in opera and removed expected ones
for (var i = 0; i < unexpected.length; ++i) {
var property = unexpected[i];
test(function() {
assert_false(property in self);
}, "existence of " + property);
}
done();

View file

@ -0,0 +1,12 @@
<!doctype html>
<meta charset=utf-8>
<title>unresolvable url</title>
<link rel=help href="http://www.whatwg.org/html/#dom-worker">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
assert_throws("SyntaxError", function() { new Worker('http://invalid url/'); });
});
</script>

View file

@ -0,0 +1,18 @@
<!doctype html>
<meta charset="utf-8">
<title>Use the document base url when resolving worker URLs</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<base href="/workers/constructors/Worker/sample_worker/">
<script>
async_test(function(t) {
var worker = new Worker('worker.js');
var data = "foo";
worker.postMessage(data);
worker.onmessage = t.step_func_done(function(event) {
assert_equals(event.data, data, "event.data does not match expected data");
});
worker.onerror = t.unreached_func("received error event");
}, "Use the document base url when resolving worker URLs");
</script>