| <!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><a></noembed>', 'text/html'); | 
 |  assert_equals(doc.querySelector('noembed').textContent, '<a>'); | 
 | }, '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> |