<!DOCTYPE HTML>
<meta charset=utf-8>
<title>MutationObservers: innerHTML, outerHTML mutations</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="mutationobservers.js"></script>
<h1>MutationObservers: innerHTML, outerHTML mutations</h1>
<div id="log"></div>

<section style="display: none">

<p id='n00'>old text</p>

<p id='n01'>old text</p>

<div id='n02'><p>old text</p></div>
</section>

<script>
  var n00;
  var n00oldText;
  var n01;
  var n01oldText;
  var n02;

  setup(function() {
    n00 = document.getElementById('n00');
    n00oldText = n00.firstChild;
    n01 = document.getElementById('n01');
    n01oldText = n01.firstChild;
    n02 = document.getElementById('n02');
  })

  runMutationTest(n00,
                  {childList:true,attributes:true},
                  [{type: "childList",
                    removedNodes: [n00oldText],
                    addedNodes: function() {
                      return [document.getElementById("n00").firstChild];
                    }},
                    {type: "attributes", attributeName: "class"}],
                  function() { n00.innerHTML = "new text"; n00.className = "c01"},
                  "innerHTML mutation");

  runMutationTest(n01,
                  {childList:true},
                  [{type: "childList",
                    removedNodes: [n01oldText],
                    addedNodes: function() {
                      return [document.getElementById("n01").firstChild,
                              document.getElementById("n01").lastChild];
                    }}],
                  function() { n01.innerHTML = "<span>new</span><span>text</span>"; },
                  "innerHTML with 2 children mutation");

  runMutationTest(n02,
                  {childList:true},
                  [{type: "childList",
                    removedNodes: [n02.firstChild],
                    addedNodes: function() {
                      return [n02.firstChild];
                    }}],
                  function() { n02.firstChild.outerHTML = "<p>next text</p>"; },
                  "outerHTML mutation");
</script>
