<!DOCTYPE html>
<link rel="help" href="https://html.spec.whatwg.org/multipage/parsing.html#tree-construction:html-integration-point">
<body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

<math><annotation-xml id="point-1" encoding="text/html"><xmp>&lt;/xmp&gt;&lt;img></xmp></annotation-xml></math>
<math><annotation-xml id="point-2" encoding="application/xhtml+xml"><style>&lt;/style&gt;&lt;img></style></annotation-xml></math>
<svg><foreignObject id="point-3"><iframe>&lt;/iframe&gt;&lt;img></iframe></foreignObject></svg>
<svg><desc id="point-4"><noembed>&lt;/noembed&gt;&lt;img></noembed></desc></svg>
<svg><title id="point-5"><noframes>&lt;/noframes&gt;&lt;img></noframes></title></svg>

<script>
function generate_test(id) {
  return () => {
    let point = document.querySelector('#' + id);
    assert_not_equals(point.namespaceURI, 'http://www.w3.org/1999/xhtml');
    let rawTextElement = point.firstChild;
    assert_equals(rawTextElement.namespaceURI, 'http://www.w3.org/1999/xhtml');
    assert_equals(rawTextElement.textContent.substr(0, 4), '&lt;',
                  'Entity references should not be decoded.');
  };
}

test(generate_test('point-1'), 'MathML annotation-xml with encoding=text/html should be an HTML integration point');
test(generate_test('point-2'), 'MathML annotation-xml with encoding=application/xhtml+xml should be an HTML integration point');
test(generate_test('point-3'), 'SVG foreignObject should be an HTML integration point');
test(generate_test('point-4'), 'SVG desc should be an HTML integration point');
test(generate_test('point-5'), 'SVG title should be an HTML integration point');
</script>
</body>
