mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +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 |
Loading…
Add table
Add a link
Reference in a new issue