diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /testing/web-platform/tests/html/rendering/unmapped-attributes.html | |
parent | Initial commit. (diff) | |
download | thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/html/rendering/unmapped-attributes.html')
-rw-r--r-- | testing/web-platform/tests/html/rendering/unmapped-attributes.html | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/rendering/unmapped-attributes.html b/testing/web-platform/tests/html/rendering/unmapped-attributes.html new file mode 100644 index 0000000000..5824f836f0 --- /dev/null +++ b/testing/web-platform/tests/html/rendering/unmapped-attributes.html @@ -0,0 +1,95 @@ +<!doctype html> +<meta charset=utf-8> +<title>Test handling of attributes that should not be mapped into style, but + incorrectly were in some browsers</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<body> +<div id="container" style="display: none"></div> +<iframe></iframe> +<script> + /* + * We wand to test both quirks and standards mode. We can use the fact that + * our document is in standards mode and the about:blank iframe we have is in + * quirks mode. + */ +test(() => { + assert_equals(document.compatMode, "CSS1Compat") +}, "We should be in standards mode"); +const container = document.getElementById("container"); + +const frameDoc = document.querySelector("iframe").contentDocument; +test(() => { + assert_equals(frameDoc.compatMode, "BackCompat") +}, "Subframe should be in quirks mode"); +const frameContainer = frameDoc.createElement("div"); +frameContainer.style.display = "none"; +frameDoc.body.appendChild(frameContainer); + +function newElem(name) { + return (parent) => + parent.appendChild(parent.ownerDocument.createElement(name)); +} + + /* + * Array of tests. Each test consists of the following information: + * + * 1) An element creation function, which takes a parent element as an + * argument. + * 2) The name of the attribute to set + * 3) The name of the CSS property to get. + */ +const tests = [ + [ newElem("table"), "hspace", "marginLeft" ], + [ newElem("table"), "hspace", "marginRight" ], + [ newElem("table"), "vspace", "marginTop" ], + [ newElem("table"), "vspace", "marginBottom" ], + [ newElem("embed"), "border", "borderTopWidth" ], + [ newElem("embed"), "border", "borderRightWidth" ], + [ newElem("embed"), "border", "borderBottomWidth" ], + [ newElem("embed"), "border", "borderLeftWidth" ], + [ newElem("iframe"), "border", "borderTopWidth" ], + [ newElem("iframe"), "border", "borderRightWidth" ], + [ newElem("iframe"), "border", "borderBottomWidth" ], + [ newElem("iframe"), "border", "borderLeftWidth" ], + [ newElem("iframe"), "hspace", "marginLeft" ], + [ newElem("iframe"), "hspace", "marginRight" ], + [ newElem("iframe"), "vspace", "marginTop" ], + [ newElem("iframe"), "vspace", "marginBottom" ], + [ newElem("marquee"), "border", "borderTopWidth" ], + [ newElem("marquee"), "border", "borderRightWidth" ], + [ newElem("marquee"), "border", "borderBottomWidth" ], + [ newElem("marquee"), "border", "borderLeftWidth" ], + // Non-image input + [ newElem("input"), "border", "borderTopWidth" ], + [ newElem("input"), "border", "borderRightWidth" ], + [ newElem("input"), "border", "borderBottomWidth" ], + [ newElem("input"), "border", "borderLeftWidth" ], + [ newElem("input"), "width", "width" ], + [ newElem("input"), "height", "height" ], + [ newElem("input"), "hspace", "marginLeft" ], + [ newElem("input"), "hspace", "marginRight" ], + [ newElem("input"), "vspace", "marginTop" ], + [ newElem("input"), "vspace", "marginBottom" ], +]; + +function style(element) { + return element.ownerDocument.defaultView.getComputedStyle(element); +} + +for (let [ctor, attr, prop] of tests) { + for (let parent of [container, frameContainer]) { + let elem = ctor(parent); + test(function() { + let default_elem = ctor(parent); + this.add_cleanup(() => { + elem.remove(); + default_elem.remove(); + }); + elem.setAttribute(attr, "200"); + assert_equals(elem.getAttribute(attr), "200"); + assert_equals(style(elem)[prop], style(default_elem)[prop]); + }, `<${elem.localName} ${attr}> should not be mapped to style ${prop} in ${parent.ownerDocument.compatMode} mode`); + } +} +</script> |