Skip to content

Commit

Permalink
Add cross-site frame tests
Browse files Browse the repository at this point in the history
Consolidated echo window/worker into resources/ directory
  • Loading branch information
domenic authored and annevk committed Jul 9, 2019
1 parent 77560c4 commit a3c2eb5
Show file tree
Hide file tree
Showing 9 changed files with 91 additions and 57 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@

async_test(t => {
const sab = new SharedArrayBuffer();
const worker = new Worker("resources/echo-worker.js");
const worker = new Worker("../resources/echo-worker.js");

worker.addEventListener("message", t.step_func(({ data }) => {
if (data.testId !== 2) {
Expand Down Expand Up @@ -58,7 +58,7 @@
iframe.onload = t.step_func(() => {
iframe.contentWindow.postMessage({ testId: 3, sab }, "*");
});
iframe.src = "resources/echo-iframe.html";
iframe.src = "../resources/echo-iframe.html";
document.body.appendChild(iframe);
}, "postMessaging to an iframe and back does not give back the same SharedArrayBuffer");
</script>
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

test(() => {
const sab = new SharedArrayBuffer();
const worker = new Worker("resources/echo-worker.js");
const worker = new Worker("../resources/echo-worker.js");
assert_throws("DataCloneError", () => worker.postMessage(sab, [sab]));
assert_throws("DataCloneError", () => worker.postMessage("test", [sab]));
}, "Trying to transfer a SharedArrayBuffer to a worker throws");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
// .stack properties on errors are unspecified, but are present in most
// browsers, most of the time. https://github.com/tc39/proposal-error-stacks/ tracks standardizing them.
// Tests will pass automatically if the .stack property isn't present.

stackTests(() => {
return new Error('some message');
}, 'page-created Error');

stackTests(() => {
return new DOMException('InvalidStateError', 'some message');
}, 'page-created DOMException');

stackTests(() => {
try {
Object.defineProperty();
} catch (e) {
return e;
}
}, 'JS-engine-created TypeError');

stackTests(() => {
try {
HTMLParagraphElement.prototype.align;
} catch (e) {
return e;
}
}, 'web API-created TypeError');

stackTests(() => {
try {
document.createElement('');
} catch (e) {
return e;
}
}, 'web API-created DOMException');

function stackTests(errorFactory, description) {
async_test(t => {
const error = errorFactory();
const originalStack = error.stack;

if (!originalStack) {
t.done();
return;
}

const worker = new Worker('resources/echo-worker.js');
worker.onmessage = t.step_func_done(e => {
assert_equals(e.data.stack, originalStack);
});

worker.postMessage(error);
}, description + ' (worker)');

// testId needed because they all share window's message event.
let testId = 0;
async_test(t => {
const thisTestId = testId;
++testId;

const error = errorFactory();
const originalStack = error.stack;

if (!originalStack) {
t.done();
return;
}

const iframe = document.createElement('iframe');
window.addEventListener('message', t.step_func(e => {
if (e.data.testId === thisTestId) {
assert_equals(e.data.error.stack, originalStack);
t.done();
}
}));

iframe.onload = t.step_func(() => {
iframe.contentWindow.postMessage({ error, testId: thisTestId }, "*");
});

const crossSiteEchoIFrame = new URL('resources/echo-iframe.html', location.href);
crossSiteEchoIFrame.hostname = '{{hosts[alt][www1]}}';
iframe.src = crossSiteEchoIFrame;
document.body.append(iframe);
}, description + ' (cross-site iframe)');
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
//the worker is used for each test in sequence
//worker's callback will be set for each test
//worker's internal onmessage echoes the data back to this thread through postMessage
worker = new Worker("./echo.js");
worker = new Worker("./resources/echo-worker.js");
testCollection = [
function() {
var t = async_test("Primitive BigInt is cloned");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
//the worker is used for each test in sequence
//worker's callback will be set for each test
//worker's internal onmessage echoes the data back to this thread through postMessage
worker = new Worker("./echo.js");
worker = new Worker("./resources/echo-worker.js");
testCollection = [
function() {
var t = async_test("Primitive string is cloned");
Expand Down

0 comments on commit a3c2eb5

Please sign in to comment.