mirror of
https://github.com/servo/servo.git
synced 2025-08-08 15:05:35 +01:00
Update web-platform-tests to revision 6fbd872e9ac5fe60e32946bc9b318be6eeada123
This commit is contained in:
parent
3f663d7ab2
commit
0dae9ef764
80 changed files with 3433 additions and 6503 deletions
|
@ -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");
|
|
@ -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");
|
|
@ -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>
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"><rect height="100" width="100"/></svg>
|
After Width: | Height: | Size: 79 B |
|
@ -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>
|
|
@ -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>
|
|
@ -0,0 +1 @@
|
|||
@import "basic.css"
|
|
@ -0,0 +1,3 @@
|
|||
#test {
|
||||
background-color:red;
|
||||
}
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -0,0 +1,3 @@
|
|||
#test {{
|
||||
background-color:red;
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
#test {
|
||||
content: "…";
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
import("./basic.css")
|
||||
.then(() => postMessage("LOADED"))
|
||||
.catch(e => postMessage("NOT LOADED"));
|
|
@ -0,0 +1,2 @@
|
|||
import "./basic.css";
|
||||
postMessage("Unexpectedly loaded");
|
|
@ -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>
|
Loading…
Add table
Add a link
Reference in a new issue