mirror of
https://github.com/servo/servo.git
synced 2025-08-07 22:45:34 +01:00
Update web-platform-tests to revision 14cfa4d648cc1c853b4153268df672d21425f8c1
This commit is contained in:
parent
1b73cf3352
commit
75736751d9
1213 changed files with 19434 additions and 12344 deletions
|
@ -25,13 +25,19 @@
|
|||
assert_unreached("isSecureContext should be supported");
|
||||
});
|
||||
|
||||
var w2 = new Worker(https_dir + "support/dedicated-worker-script.js");
|
||||
w2.onmessage = t2.step_func_done(function(e) {
|
||||
assert_unreached("cross-origin workers should not be loaded");
|
||||
});
|
||||
w2.onerror = t2.step_func_done(function(e) {
|
||||
e.preventDefault();
|
||||
});
|
||||
try {
|
||||
var w2 = new Worker(https_dir + "support/dedicated-worker-script.js");
|
||||
w2.onmessage = t2.step_func_done(function(e) {
|
||||
assert_unreached("cross-origin workers should not be loaded");
|
||||
});
|
||||
w2.onerror = t2.step_func_done(function(e) {
|
||||
e.preventDefault();
|
||||
});
|
||||
} catch (e) {
|
||||
// Some browsers throw for cross-origin URLs. This violates the Worker spec,
|
||||
// but isn't actually relevant to what we're testing here.
|
||||
t2.done();
|
||||
}
|
||||
|
||||
var w3 = new Worker(http_dir + "support/parent-dedicated-worker-script.js");
|
||||
w3.onmessage = t3.step_func_done(function(e) {
|
||||
|
@ -41,13 +47,19 @@
|
|||
assert_unreached("isSecureContext should be supported");
|
||||
});
|
||||
|
||||
var w4 = new Worker(https_dir + "support/parent-dedicated-worker-script.js");
|
||||
w4.onmessage = t4.step_func_done(function(e) {
|
||||
assert_unreached("cross-origin workers should not be loaded");
|
||||
});
|
||||
w4.onerror = t4.step_func_done(function(e) {
|
||||
e.preventDefault();
|
||||
});
|
||||
try {
|
||||
var w4 = new Worker(https_dir + "support/parent-dedicated-worker-script.js");
|
||||
w4.onmessage = t4.step_func_done(function(e) {
|
||||
assert_unreached("cross-origin workers should not be loaded");
|
||||
});
|
||||
w4.onerror = t4.step_func_done(function(e) {
|
||||
e.preventDefault();
|
||||
});
|
||||
} catch (e) {
|
||||
// Some browsers throw for cross-origin URLs. This violates the Worker spec,
|
||||
// but isn't actually relevant to what we're testing here.
|
||||
t4.done();
|
||||
}
|
||||
|
||||
onmessage = function(e) {
|
||||
var data = e.data;
|
||||
|
|
|
@ -17,13 +17,19 @@
|
|||
var t5 = async_test("HTTP worker from HTTPS subframe");
|
||||
var t6 = async_test("HTTPS worker from HTTPS subframe");
|
||||
|
||||
var w1 = new Worker(http_dir + "support/dedicated-worker-script.js");
|
||||
w1.onmessage = t1.step_func_done(function(e) {
|
||||
assert_unreached("cross-origin workers should not be loaded");
|
||||
});
|
||||
w1.onerror = t1.step_func_done(function(e) {
|
||||
e.preventDefault();
|
||||
});
|
||||
try {
|
||||
var w1 = new Worker(http_dir + "support/dedicated-worker-script.js");
|
||||
w1.onmessage = t1.step_func_done(function(e) {
|
||||
assert_unreached("cross-origin workers should not be loaded");
|
||||
});
|
||||
w1.onerror = t1.step_func_done(function(e) {
|
||||
e.preventDefault();
|
||||
});
|
||||
} catch (e) {
|
||||
// Some browsers throw for cross-origin URLs. This violates the Worker spec,
|
||||
// but isn't actually relevant to what we're testing here.
|
||||
t1.done();
|
||||
}
|
||||
|
||||
var w2 = new Worker(https_dir + "support/dedicated-worker-script.js");
|
||||
w2.onmessage = t2.step_func_done(function(e) {
|
||||
|
@ -33,13 +39,19 @@
|
|||
assert_unreached("isSecureContext should be supported");
|
||||
});
|
||||
|
||||
var w3 = new Worker(http_dir + "support/parent-dedicated-worker-script.js");
|
||||
w3.onmessage = t3.step_func_done(function(e) {
|
||||
assert_unreached("cross-origin workers should not be loaded");
|
||||
});
|
||||
w3.onerror = t3.step_func_done(function(e) {
|
||||
e.preventDefault();
|
||||
});
|
||||
try {
|
||||
var w3 = new Worker(http_dir + "support/parent-dedicated-worker-script.js");
|
||||
w3.onmessage = t3.step_func_done(function(e) {
|
||||
assert_unreached("cross-origin workers should not be loaded");
|
||||
});
|
||||
w3.onerror = t3.step_func_done(function(e) {
|
||||
e.preventDefault();
|
||||
});
|
||||
} catch (e) {
|
||||
// Some browsers throw for cross-origin URLs. This violates the Worker spec,
|
||||
// but isn't actually relevant to what we're testing here.
|
||||
t3.done();
|
||||
}
|
||||
|
||||
var w4 = new Worker(https_dir + "support/parent-dedicated-worker-script.js");
|
||||
w4.onmessage = t4.step_func_done(function(e) {
|
||||
|
|
|
@ -52,7 +52,8 @@ const eLoadInEverything = eLoadInPopup | eLoadInUnsandboxedIframe | eLoad
|
|||
|
||||
// Flags indicating if a document type is expected to be a Secure Context:
|
||||
const eSecureNo = 1;
|
||||
const eSecureIfCreatorSecure = 2;
|
||||
const eSecureIfNewWindow = 2;
|
||||
const eSecureIfCreatorSecure = 3;
|
||||
|
||||
// Flags indicating how the result of a test is obtained:
|
||||
const eResultFromPostMessage = 1;
|
||||
|
@ -69,7 +70,7 @@ const loadTypes = [
|
|||
new LoadType("an https: URI",
|
||||
eLoadInEverything,
|
||||
https_dir + "postMessage-helper.https.html",
|
||||
eSecureIfCreatorSecure,
|
||||
eSecureIfNewWindow,
|
||||
eResultFromPostMessage),
|
||||
new LoadType("a blob: URI",
|
||||
eLoadInEverything,
|
||||
|
@ -80,7 +81,7 @@ const loadTypes = [
|
|||
// popup not relevant:
|
||||
eLoadInUnsandboxedIframe | eLoadInSandboxedIframe,
|
||||
"<script>(opener||parent).postMessage(isSecureContext, '*')</script>",
|
||||
eSecureIfCreatorSecure,
|
||||
eSecureIfNewWindow,
|
||||
eResultFromPostMessage),
|
||||
new LoadType("a javascript: URI",
|
||||
// can't load in sandbox:
|
||||
|
@ -179,31 +180,39 @@ LoadTarget.prototype.load_and_get_result_for = function(loadType) {
|
|||
" loading " + loadType.desc)
|
||||
if (loadType.resultFrom == eResultFromExaminationSync) {
|
||||
let domTarget = this.open(loadType);
|
||||
let result = domTarget instanceof Window ?
|
||||
let isFrame = domTarget instanceof HTMLIFrameElement;
|
||||
let result = !isFrame ?
|
||||
domTarget.isSecureContext : domTarget.contentWindow.isSecureContext;
|
||||
this.close(domTarget);
|
||||
return Promise.resolve(result);
|
||||
return Promise.resolve({ result: result, isFrame: isFrame});
|
||||
}
|
||||
let target = this;
|
||||
if (loadType.resultFrom == eResultFromExaminationOnLoad) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
function handleLoad(event) {
|
||||
let result = domTarget instanceof Window ?
|
||||
clearTimeout(timer);
|
||||
let isFrame = domTarget instanceof HTMLIFrameElement;
|
||||
let result = !isFrame ?
|
||||
domTarget.isSecureContext : domTarget.contentWindow.isSecureContext;
|
||||
domTarget.removeEventListener("load", handleLoad);
|
||||
target.close(domTarget);
|
||||
resolve(result);
|
||||
resolve({ result: result, isFrame: isFrame});
|
||||
}
|
||||
let domTarget = target.open(loadType);
|
||||
domTarget.addEventListener("load", handleLoad, false);
|
||||
|
||||
// Some browsers don't fire `load` events for `about:blank`. That's weird, but it also
|
||||
// isn't what we're testing here.
|
||||
let timer = setTimeout(handleLoad, 500);
|
||||
});
|
||||
}
|
||||
if (loadType.resultFrom == eResultFromPostMessage) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
function handleMessage(event) {
|
||||
let isFrame = domTarget instanceof HTMLIFrameElement;
|
||||
window.removeEventListener("message", handleMessage);
|
||||
target.close(domTarget);
|
||||
resolve(event.data);
|
||||
resolve({ result: event.data, isFrame: isFrame});
|
||||
}
|
||||
window.addEventListener("message", handleMessage, false);
|
||||
let domTarget = target.open(loadType);
|
||||
|
@ -232,13 +241,21 @@ function run_next_test() {
|
|||
function(value) {
|
||||
run_next_test_soon();
|
||||
loadTarget.currentTest.step(function() {
|
||||
// If the new context is always non-secure, the assertion is straightforward.
|
||||
if (loadType.expectedSecureFlag == eSecureNo) {
|
||||
assert_false(value, loadType.desc + " in " + loadTarget.desc + " should not create a Secure Context");
|
||||
} else if (loadType.expectedSecureFlag == eSecureIfCreatorSecure) {
|
||||
assert_false(value.result, loadType.desc + " in " + loadTarget.desc + " should not create a Secure Context");
|
||||
// If the new context is always secure if opened in a new window, and it's
|
||||
// been opened in a new window, the assertion is likewise straightforward.
|
||||
} else if (loadType.expectedSecureFlag == eSecureIfNewWindow && !value.isFrame) {
|
||||
assert_true(value.result, loadType.desc + " in " + loadTarget.desc + " should create a secure context regardless of its creator's state.");
|
||||
// Otherwise, we're either dealing with a context that's secure if and only
|
||||
// if its creator context (e.g. this window) is secure.
|
||||
} else if ((loadType.expectedSecureFlag == eSecureIfNewWindow && value.isFrame) ||
|
||||
(loadType.expectedSecureFlag == eSecureIfCreatorSecure)) {
|
||||
if (!window.isSecureContext) {
|
||||
assert_false(value, loadType.desc + " in " + loadTarget.desc + " should not create a Secure Context when its creator is not a Secure Context.");
|
||||
assert_false(value.result, loadType.desc + " in " + loadTarget.desc + " should not create a Secure Context when its creator is not a Secure Context.");
|
||||
} else {
|
||||
assert_true(value, loadType.desc + " in " + loadTarget.desc + " should create a Secure Context when its creator is a Secure Context");
|
||||
assert_true(value.result, loadType.desc + " in " + loadTarget.desc + " should create a Secure Context when its creator is a Secure Context");
|
||||
}
|
||||
} else {
|
||||
assert_unreached(loadType.desc + " - unknown expected secure flag: " + expectedSecureFlag);
|
||||
|
|
|
@ -46,15 +46,15 @@
|
|||
// one in the popup or in our subframe.
|
||||
if (data.fromPopup) {
|
||||
t3.step(function() {
|
||||
assert_false(data.exception);
|
||||
assert_true(data.error);
|
||||
assert_false(data.exception, "No exception should be present.");
|
||||
assert_true(data.error, "SharedWorker connection should error out.");
|
||||
});
|
||||
t3.done();
|
||||
} else {
|
||||
t1.step(function() {
|
||||
assert_false(data.exception);
|
||||
assert_false(data.error);
|
||||
assert_true(data.isSecureContext);
|
||||
assert_false(data.exception, "SharedWorker should not throw an exception.");
|
||||
assert_false(data.error, "SharedWorker connection should not generate an error.");
|
||||
assert_true(data.isSecureContext, "SharedWorker is a secure context");
|
||||
});
|
||||
t1.done();
|
||||
}
|
||||
|
@ -63,15 +63,15 @@
|
|||
// check whether it's the one in the popup or in our subframe.
|
||||
if (data.fromPopup) {
|
||||
t4.step(function() {
|
||||
assert_false(data.exception);
|
||||
assert_true(data.error);
|
||||
assert_false(data.exception, "No exception should be present.");
|
||||
assert_true(data.error, "SharedWorker connection should error out.");
|
||||
});
|
||||
t4.done();
|
||||
} else {
|
||||
t2.step(function() {
|
||||
assert_false(data.exception);
|
||||
assert_false(data.error);
|
||||
assert_true(data.isSecureContext);
|
||||
assert_false(data.exception, "SharedWorker should not throw an exception.");
|
||||
assert_false(data.error, "SharedWorker connection should not generate an error.");
|
||||
assert_true(data.isSecureContext, "SharedWorker is a secure context");
|
||||
});
|
||||
t2.done();
|
||||
}
|
||||
|
|
|
@ -1,21 +1,33 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="../server-locations.sub.js"></script>
|
||||
<script>
|
||||
var w1 = new Worker(http_dir + "support/dedicated-worker-script.js");
|
||||
w1.onmessage = function(e) {
|
||||
parent.postMessage({ type: "http", error: false,
|
||||
isSecureContext: e.data }, "*");
|
||||
};
|
||||
w1.onerror = function(e) {
|
||||
try {
|
||||
var w1 = new Worker(http_dir + "support/dedicated-worker-script.js");
|
||||
w1.onmessage = function(e) {
|
||||
parent.postMessage({ type: "http", error: false,
|
||||
isSecureContext: e.data }, "*");
|
||||
};
|
||||
w1.onerror = function(e) {
|
||||
parent.postMessage({ type: "http", error: true }, "*");
|
||||
};
|
||||
} catch (e) {
|
||||
// Some browsers throw for cross-origin URLs. This violates the Worker spec,
|
||||
// but isn't actually relevant to what we're testing here.
|
||||
parent.postMessage({ type: "http", error: true }, "*");
|
||||
};
|
||||
}
|
||||
|
||||
var w2 = new Worker(https_dir + "support/dedicated-worker-script.js");
|
||||
w2.onmessage = function(e) {
|
||||
parent.postMessage({ type: "https", error: false,
|
||||
isSecureContext: e.data }, "*");
|
||||
};
|
||||
w2.onerror = function(e) {
|
||||
try {
|
||||
var w2 = new Worker(https_dir + "support/dedicated-worker-script.js");
|
||||
w2.onmessage = function(e) {
|
||||
parent.postMessage({ type: "https", error: false,
|
||||
isSecureContext: e.data }, "*");
|
||||
};
|
||||
w2.onerror = function(e) {
|
||||
parent.postMessage({ type: "https", error: true }, "*");
|
||||
}
|
||||
} catch (e) {
|
||||
// Some browsers throw for cross-origin URLs. This violates the Worker spec,
|
||||
// but isn't actually relevant to what we're testing here.
|
||||
parent.postMessage({ type: "https", error: true }, "*");
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
var w = new Worker("dedicated-worker-script.js");
|
||||
w.onmessage = function (e) {
|
||||
postMessage(e.data);
|
||||
// If nested workers aren't supported, punt:
|
||||
if (typeof Worker != "undefined") {
|
||||
var w = new Worker("dedicated-worker-script.js");
|
||||
w.onmessage = function (e) {
|
||||
postMessage(e.data);
|
||||
}
|
||||
} else {
|
||||
postMessage("Nested workers not supported.");
|
||||
}
|
||||
|
|
|
@ -1,8 +1,13 @@
|
|||
addEventListener("connect", function (e) {
|
||||
var port = e.ports[0];
|
||||
port.start();
|
||||
var w = new Worker("dedicated-worker-script.js");
|
||||
w.onmessage = function (e) {
|
||||
port.postMessage(e.data);
|
||||
// If nested workers aren't supported, punt:
|
||||
if (typeof Worker != "undefined") {
|
||||
var w = new Worker("dedicated-worker-script.js");
|
||||
w.onmessage = function (e) {
|
||||
port.postMessage(e.data);
|
||||
}
|
||||
} else {
|
||||
port.postMessage("Nested workers not supported.");
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue