gecko-dev/testing/web-platform/tests/domparsing/DOMParser-parseFromString-html.html
Kent Tamura 6cb6af1dd3 Bug 1529242 [wpt PR 15471] - domparsing: HTML Parser: Remove conditional parsing of <noembed> content, a=testonly
Automatic update from web-platform-tests
domparsing: HTML Parser: Remove conditional parsing of <noembed> content

The HTML Parser had raw text handling for <noembed> content only if plugins
were runnable. However, the HTML specification doesn't ask such behavior,
and it didn't match to our HTML serializer.  We should always handle it as
raw text.

Bug: 933211
Change-Id: Iade5197a14aeffb6b540c8e9f1ed1880c651955b
Reviewed-on: https://chromium-review.googlesource.com/c/1477556
Auto-Submit: Kent Tamura <tkent@chromium.org>
Commit-Queue: Kouhei Ueno <kouhei@chromium.org>
Reviewed-by: Kouhei Ueno <kouhei@chromium.org>
Cr-Commit-Position: refs/heads/master@{#633571}

--

wpt-commits: a8348f28a0ca463f412ce4beec0b07d6e39c1fd3
wpt-pr: 15471
2019-03-16 12:13:06 +00:00

79 lines
2.8 KiB
HTML

<!doctype html>
<title>DOMParser basic test of HTML parsing</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
// |expected| should be an object indicating the expected type of node.
function assert_node(actual, expected) {
assert_true(actual instanceof expected.type,
'Node type mismatch: actual = ' + actual.nodeType + ', expected = ' + expected.nodeType);
if (typeof(expected.id) !== 'undefined')
assert_equals(actual.id, expected.id, expected.idMessage);
if (typeof(expected.nodeValue) !== 'undefined')
assert_equals(actual.nodeValue, expected.nodeValue, expected.nodeValueMessage);
}
var doc;
setup(function() {
var parser = new DOMParser();
var input = '<html id="root"><head></head><body></body></html>';
doc = parser.parseFromString(input, 'text/html');
});
test(function() {
var root = doc.documentElement;
assert_node(root, { type: HTMLHtmlElement, id: 'root',
idMessage: 'documentElement id attribute should be root.' });
}, 'Parsing of id attribute');
test(function() {
assert_equals(doc.contentType, "text/html")
}, 'contentType');
test(function() {
assert_equals(doc.characterSet, "UTF-8")
}, 'characterSet');
test(function() {
assert_equals(doc.inputEncoding, "UTF-8")
}, 'inputEncoding');
test(function() {
assert_equals(doc.charset, "UTF-8")
}, 'charset');
test(function() {
var url = document.URL;
assert_equals(doc.documentURI, url,
'The document must have a URL value equal to the URL of the active document.');
assert_equals(doc.URL, url,
'The document must have a URL value equal to the URL of the active document.');
}, 'URL value');
test(function() {
assert_equals(doc.baseURI, document.URL);
}, 'baseURI value');
test(function() {
assert_equals(doc.location, null,
'The document must have a location value of null.');
}, 'Location value');
test(function() {
var soup = "<!DOCTYPE foo></><foo></multiple></>";
var htmldoc = new DOMParser().parseFromString(soup, "text/html");
assert_equals(htmldoc.documentElement.localName, "html");
assert_equals(htmldoc.documentElement.namespaceURI, "http://www.w3.org/1999/xhtml");
}, "DOMParser parses HTML tag soup with no problems");
test(function() {
const doc = new DOMParser().parseFromString('<noembed>&lt;a&gt;</noembed>', 'text/html');
assert_equals(doc.querySelector('noembed').textContent, '&lt;a&gt;');
}, 'DOMParser should handle the content of <noembed> as raw text');
test(function() {
assert_throws(new TypeError(), function() {
new DOMParser().parseFromString("", "text/foo-this-is-invalid");
})
}, "DOMParser throws on an invalid enum value")
</script>