ec424423a1d28988d2b949b51e9467f0cf702290
[WebKit-https.git] / LayoutTests / imported / w3c / web-platform-tests / domparsing / DOMParser-parseFromString-html.html
1 <!doctype html>
2 <title>DOMParser basic test of HTML parsing</title>
3 <script src="/resources/testharness.js"></script>
4 <script src="/resources/testharnessreport.js"></script>
5 <script>
6 // |expected| should be an object indicating the expected type of node.
7 function assert_node(actual, expected) {
8     assert_true(actual instanceof expected.type,
9                 'Node type mismatch: actual = ' + actual.nodeType + ', expected = ' + expected.nodeType);
10     if (typeof(expected.id) !== 'undefined')
11         assert_equals(actual.id, expected.id, expected.idMessage);
12     if (typeof(expected.nodeValue) !== 'undefined')
13         assert_equals(actual.nodeValue, expected.nodeValue, expected.nodeValueMessage);
14 }
15
16 var doc;
17 setup(function() {
18     var parser = new DOMParser();
19     var input = '<html id="root"><head></head><body></body></html>';
20     doc = parser.parseFromString(input, 'text/html');
21 });
22
23 test(function() {
24     var root = doc.documentElement;
25     assert_node(root, { type: HTMLHtmlElement, id: 'root',
26                         idMessage: 'documentElement id attribute should be root.' });
27 }, 'Parsing of id attribute');
28
29 test(function() {
30     assert_equals(doc.contentType, "text/html")
31 }, 'contentType');
32
33 test(function() {
34     assert_equals(doc.characterSet, "UTF-8")
35 }, 'characterSet');
36
37 test(function() {
38     assert_equals(doc.inputEncoding, "UTF-8")
39 }, 'inputEncoding');
40
41 test(function() {
42     assert_equals(doc.charset, "UTF-8")
43 }, 'charset');
44
45 test(function() {
46     var url = document.URL;
47     assert_equals(doc.documentURI, url,
48                   'The document must have a URL value equal to the URL of the active document.');
49     assert_equals(doc.URL, url,
50                   'The document must have a URL value equal to the URL of the active document.');
51 }, 'URL value');
52
53 test(function() {
54     assert_equals(doc.baseURI, document.URL);
55 }, 'baseURI value');
56
57 test(function() {
58     assert_equals(doc.location, null,
59                   'The document must have a location value of null.');
60 }, 'Location value');
61
62 test(function() {
63     var soup = "<!DOCTYPE foo></><foo></multiple></>";
64     var htmldoc = new DOMParser().parseFromString(soup, "text/html");
65     assert_equals(htmldoc.documentElement.localName, "html");
66     assert_equals(htmldoc.documentElement.namespaceURI, "http://www.w3.org/1999/xhtml");
67 }, "DOMParser parses HTML tag soup with no problems");
68
69 test(function() {
70     assert_throws(new TypeError(), function() {
71         new DOMParser().parseFromString("", "text/foo-this-is-invalid");
72     })
73 }, "DOMParser throws on an invalid enum value")
74 </script>