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

<section style="display: none">

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

</section>

<script>

  var n00 = document.getElementById('n00');

  var unused = async_test("unreachabled test");

  var observer;
  unused.step(function () {
    observer = new MutationObserver(unused.unreached_func("the observer callback should not fire"));
    observer.observe(n00, { "subtree": true,
                          "childList": true,
                          "attributes": true,
                          "characterData": true,
                          "attributeOldValue": true,
                          "characterDataOldValue": true});
    n00.id = "foo";
    n00.id = "bar";
    n00.className = "bar";
    n00.textContent = "old data";
    n00.firstChild.data = "new data";
  });

  test(function() {
    checkRecords(n00, observer.takeRecords(), [{type: "attributes", attributeName: "id", oldValue: "n00"},
                           {type: "attributes", attributeName: "id", oldValue: "foo"},
                           {type: "attributes", attributeName: "class"},
                           {type: "childList", addedNodes: [n00.firstChild]},
                           {type: "characterData", oldValue: "old data", target: n00.firstChild}]);
  }, "All records present");

  test(function() {
    checkRecords(n00, observer.takeRecords(), []);
  }, "No more records present");
</script>
<script>
  unused.done();

</script>
