| <!doctype html> |
| <meta charset={{GET[encoding]}}> <!-- ends up as <meta charset> by default which is windows-1252 --> |
| <meta name=variant content="?encoding=windows-1252"> |
| <meta name=variant content="?encoding=x-cp1251"> |
| <meta name=variant content="?encoding=utf8"> |
| <script src=/resources/testharness.js></script> |
| <script src=/resources/testharnessreport.js></script> |
| <link rel=help href=https://html.spec.whatwg.org/multipage/rendering.html#the-page> |
| <link rel=help href=https://html.spec.whatwg.org/multipage/rendering.html#tables-2> |
| <link rel=help href=https://html.spec.whatwg.org/multipage/#reflecting-content-attributes-in-idl-attributes> |
| <div id=log></div> |
| <script> |
| function expected(encoding) { |
| return "?" + { |
| "UTF-8": "%C3%BF", |
| "windows-1251": "%26%23255%3B", |
| "windows-1252": "%FF" |
| }[encoding]; |
| } |
| |
| function assert_ends_with(input, endsWith) { |
| assert_true(input.endsWith(endsWith), input + " did not end with " + endsWith); |
| } |
| |
| "body table thead tbody tfoot tr td th".split(" ").forEach(localName => { |
| test(t => { |
| const elm = document.createElement(localName); |
| document.body.appendChild(elm); |
| t.add_cleanup(() => { document.body.removeChild(elm); }); |
| elm.setAttribute("background", "?\u00FF"); |
| assert_ends_with(getComputedStyle(elm).backgroundImage, expected(document.characterSet) + "\")"); |
| }, "getComputedStyle <" + localName + " background>"); |
| }); |
| |
| function test_url_reflecting(localName, attr, idlAttr) { |
| idlAttr = idlAttr || attr; |
| test(() => { |
| let input = "?\u00FF"; |
| const elm = document.createElement(localName); |
| assert_true(idlAttr in elm, idlAttr + " is not supported"); |
| elm.setAttribute(attr, input); |
| assert_ends_with(elm[idlAttr], expected(document.characterSet)); |
| }, "Getting <" + localName + ">." + idlAttr); |
| } |
| |
| ("iframe src, a href, area href, base href, link href, img src, embed src, object data, " + |
| "track src, video src, audio src, input src, form action, input formaction formAction, " + |
| "button formaction formAction, script src").split(", ").forEach(str => { |
| const arr = str.split(" "); |
| test_url_reflecting(arr[0], arr[1], arr[2]); |
| }); |
| |
| function test_string_reflecting(localName, attr) { |
| test(() => { |
| let input = "?\u00FF ?\u00FF"; |
| const elm = document.createElement(localName); |
| assert_true(attr in elm, attr + " is not supported"); |
| elm.setAttribute(attr, input); |
| assert_equals(elm[attr], input); |
| }, "Getting <" + localName + ">." + attr); |
| } |
| |
| "a ping, area ping".split(", ").forEach(str => { |
| const arr = str.split(" "); |
| test_string_reflecting(arr[0], arr[1]); |
| }); |
| </script> |