Update web-platform-tests to revision 14cfa4d648cc1c853b4153268df672d21425f8c1

This commit is contained in:
Josh Matthews 2017-10-30 09:31:22 -04:00
parent 1b73cf3352
commit 75736751d9
1213 changed files with 19434 additions and 12344 deletions

View file

@ -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;

View file

@ -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) {

View file

@ -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);

View file

@ -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();
}

View file

@ -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>

View file

@ -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.");
}

View file

@ -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.");
}
});