<!DOCTYPE html>
<title>Foreign contexts with HTML tag children</title>
<link rel="author" title="Mason Freed" href="mailto:masonfreed@chromium.org">
<link rel="help" href="https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inbody">
<link rel="help" href="https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

<script>
test(function() {
  const contexts = ["svg", "math"];
  const elements = ["/p", "/br", "b", "big", "blockquote", "br", "center", "code", "dd", "div", "dl", "dt", "em", "embed", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "img", "li", "listing", "menu", "meta", "nobr", "ol", "p", "pre", "ruby", "s", "small", "span", "strong", "strike", "sub", "sup", "table", "tt", "u", "ul", "var"];
  contexts.forEach(c => {
  	elements.forEach(e => {
  	  const wrapper = document.createElement('div');
  	  const html = `<${c}><${e}></${c}`
  	  wrapper.innerHTML = html;
  	  assert_false(wrapper.innerHTML == html, "The inner HTML should get mutated");

  	  const tagname = e[0]=='/' ? e.substr(1) : e;
  	  const element = wrapper.getElementsByTagName(tagname)[0];
  	  assert_true(element !== undefined,`Unable to locate the ${e} node in ${c}`)
  	  const parent = element.parentNode
  	  assert_true(element.parentNode === wrapper,`The ${e} tag did not exit the ${c}`)
  	});
  });
}, "HTML namespace nodes should exit foreign contexts");

</script>
