Update web-platform-tests to revision 6fbd872e9ac5fe60e32946bc9b318be6eeada123

This commit is contained in:
WPT Sync Bot 2019-12-14 08:23:07 +00:00
parent 3f663d7ab2
commit 0dae9ef764
80 changed files with 3433 additions and 6503 deletions

View file

@ -0,0 +1,59 @@
async_test(t => {
const frame = document.body.appendChild(document.createElement("iframe"));
frame.src = "support/document-with-embedded-svg.html";
const elements = {
"embed": ["getSVGDocument"],
"frame": ["contentDocument"],
"iframe": ["getSVGDocument", "contentDocument"],
"object": ["getSVGDocument", "contentDocument"]
};
function element_to_document(element, api) {
return api === "getSVGDocument" ? element[api]() : element[api];
}
function assert_apis(instance, assertNull = false) {
const name = instance.localName;
let priorPossibleDocument = null;
elements[name].forEach(api => {
const assertReason = `${name}.${api}`;
const possibleDocument = element_to_document(instance, api);
if (assertNull) {
assert_equals(possibleDocument, null, assertReason);
return;
} else {
assert_not_equals(possibleDocument, null, assertReason);
// This needs standardizing still
// assert_class_string(possibleDocument, "XMLDocument");
}
// Ensure getSVGDocument() and contentDocument if both available return the same
if (priorPossibleDocument === null) {
priorPossibleDocument = possibleDocument;
} else {
assert_equals(priorPossibleDocument, possibleDocument);
}
});
}
frame.onload = t.step_func_done(() => {
const instances = Object.keys(elements).map(element => frame.contentDocument.querySelector(element));
// Everything is same origin and same origin-domain, no sweat
instances.forEach(instance => assert_apis(instance));
// Make the SVG cross origin-domain (its container and the current settings object are not
// affected)
instances.forEach(instance => {
const svgDocument = element_to_document(instance, elements[instance.localName][0]);
svgDocument.domain = svgDocument.domain;
});
instances.forEach(instance => assert_apis(instance, true));
const svgContainer = frame.contentDocument;
// Make the current settings object same origin-domain with the SVG and cross origin-domain with
// SVG's container (SVG's container is not affected)
document.domain = document.domain;
assert_equals(frame.contentDocument, null);
instances.forEach(instance => assert_apis(instance, true));
// Make everything same origin-domain once more
svgContainer.domain = svgContainer.domain;
instances.forEach(instance => assert_apis(instance));
});
document.body.appendChild(frame);
}, "Test embed/frame/iframe/object nested document APIs for same origin-domain and cross origin-domain embedder document");

View file

@ -0,0 +1,37 @@
async_test(t => {
const frame = document.body.appendChild(document.createElement("iframe"));
frame.src = "support/document-with-embedded-svg.html";
const elements = {
"embed": ["getSVGDocument"],
"frame": ["contentDocument"],
"iframe": ["getSVGDocument", "contentDocument"],
"object": ["getSVGDocument", "contentDocument"]
};
function assert_apis(instance) {
const name = instance.localName;
let priorPossibleDocument = null;
elements[name].forEach(api => {
const possibleDocument = api == "getSVGDocument" ? instance[api]() : instance[api];
assert_not_equals(possibleDocument, null, `${name}.${api}`);
// This needs standardizing still
// assert_class_string(possibleDocument, "XMLDocument");
// Ensure getSVGDocument() and contentDocument if both available return the same
if (priorPossibleDocument === null) {
priorPossibleDocument = possibleDocument;
} else {
assert_equals(priorPossibleDocument, possibleDocument);
}
});
}
frame.onload = t.step_func_done(() => {
const instances = Object.keys(elements).map(element => frame.contentDocument.querySelector(element));
// Everything is same origin and same origin-domain, no sweat
instances.forEach(instance => assert_apis(instance));
// Make the current settings object cross origin-domain (SVG and its container are not affected)
document.domain = document.domain;
assert_equals(frame.contentDocument, null);
instances.forEach(instance => assert_apis(instance));
});
document.body.appendChild(frame);
}, "Test embed/frame/iframe/object nested document APIs for same origin-domain and cross origin-domain current settings object");

View file

@ -0,0 +1,9 @@
<!doctype html>
<body>
<script>
["embed", "frame", "iframe", "object"].forEach(name => {
const frame = document.body.appendChild(document.createElement(name));
const attr = name !== "object" ? "src" : "data";
frame[attr] = "svg.svg";
});
</script>

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg"><rect height="100" width="100"/></svg>

After

Width:  |  Height:  |  Size: 79 B

View file

@ -0,0 +1,37 @@
<!doctype html>
<head>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
setup({allow_uncaught_exception: true});
async_test(function (test) {
const worker = new Worker("./resources/worker.js", {
type: "module"
});
worker.onmessage = test.unreached_func("A CSS Module within a web worker should not load.");
worker.onerror = test.step_func_done();
}, "A static import CSS Module within a web worker should not load.");
async_test(function (test) {
const worker = new Worker("./resources/worker-dynamic-import.js", {
type: "module"
});
worker.onmessage = test.step_func_done(e => {
assert_equals(e.data, "NOT LOADED");
});
}, "A dynamic import CSS Module within a web worker should not load.");
async_test(function (test) {
const worker = new Worker("./resources/basic.css", {
type: "module"
});
worker.onerror = test.step_func_done();
}, "A CSS Module within a web worker should not load.");
</script>
</body>

View file

@ -0,0 +1,44 @@
<!doctype html>
<head>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
async_test(function (test) {
const iframe = document.createElement("iframe");
iframe.src = "resources/css-module-basic-iframe.html";
iframe.onload = test.step_func_done(function () {
assert_equals(getComputedStyle(iframe.contentDocument.querySelector('#test'))
.backgroundColor, "rgb(255, 0, 0)",
"CSS module import should succeed");
});
document.body.appendChild(iframe);
}, "A CSS Module should load");
async_test(function (test) {
const iframe = document.createElement("iframe");
iframe.src = "resources/css-module-at-import-iframe.html";
iframe.onload = test.step_func_done(function () {
assert_equals(iframe.contentDocument.load_error, "NotAllowedError");
assert_not_equals(getComputedStyle(iframe.contentDocument.querySelector('#test'))
.backgroundColor, "rgb(255, 0, 0)",
"CSS module @import should not succeed");
});
document.body.appendChild(iframe);
}, "An @import CSS Module should not load");
async_test(function (test) {
const iframe = document.createElement("iframe");
iframe.src = "resources/malformed-iframe.html";
iframe.onload = test.step_func_done(function () {
assert_not_equals(getComputedStyle(iframe.contentDocument.querySelector('#test'))
.backgroundColor, "rgb(255, 0, 0)",
"Malformed CSS should not load");
});
document.body.appendChild(iframe);
}, "Malformed CSS should not load");
</script>
</body>

View file

@ -0,0 +1,3 @@
#test {
background-color:red;
}

View file

@ -0,0 +1,18 @@
<!DOCTYPE html>
<body>
<script>
window.onerror = function (errorMsg, url, lineNumber, column, errorObj)
{
document.load_error = errorObj.name;
return true;
};
</script>
<script type="module">
import v from "./bad-import.css";
document.adoptedStyleSheets = [v];
</script>
<div id="test">
I am a test div.
</div>
</body>

View file

@ -0,0 +1,18 @@
<!DOCTYPE html>
<body>
<script>
window.onerror = function (errorMsg, url, lineNumber, column, errorObj)
{
document.load_error = errorObj.name;
return true;
};
</script>
<script type="module">
import v from "./basic.css";
document.adoptedStyleSheets = [v];
</script>
<div id="test">
I am a test div.
</div>
</body>

View file

@ -0,0 +1,11 @@
<!DOCTYPE html>
<body>
<script type="module">
import v from "./malformed.css";
document.adoptedStyleSheets = [v];
</script>
<div id="test">
I am a test div.
</div>
</body>

View file

@ -0,0 +1,3 @@
#test {{
background-color:red;
}

View file

@ -0,0 +1,3 @@
import("./basic.css")
.then(() => postMessage("LOADED"))
.catch(e => postMessage("NOT LOADED"));

View file

@ -0,0 +1,2 @@
import "./basic.css";
postMessage("Unexpectedly loaded");

View file

@ -0,0 +1,34 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS modules: UTF-8 decoding</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
function check(t, v) {
t.step(() => {
assert_equals(typeof v, "object");
assert_equals(v.rules[0].style.content, "\"…\"");
t.done();
});
}
const t1 = async_test("utf-8");
const t2 = async_test("shift-jis");
const t3 = async_test("windows-1252");
const t4 = async_test("utf-7");
</script>
<script type="module" onerror="t1.step(() => assert_unreached(event))">
import v from "../serve-with-content-type.py?fn=css-module/resources/utf8.css&ct=text/css%3Bcharset=utf-8";
check(t1, v);
</script>
<script type="module" onerror="t2.step(() => assert_unreached(event))">
import v from "../serve-with-content-type.py?fn=css-module/resources/utf8.css&ct=text/css%3Bcharset=shift-jis";
check(t2, v);
</script>
<script type="module" onerror="t3.step(() => assert_unreached(event))">
import v from "../serve-with-content-type.py?fn=css-module/resources/utf8.css&ct=text/css%3Bcharset=windows-1252";
check(t3, v);
</script>
<script type="module" onerror="t4.step(() => assert_unreached(event))">
import v from "../serve-with-content-type.py?fn=css-module/resources/utf8.css&ct=text/css%3Bcharset=utf-7";
check(t4, v);
</script>