Test WebKitMutationObserver.observe on attributes.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
Testing basic aspects of childList observation.
...can childList changes be observed at all
PASS mutations.length is 1
PASS mutations[0].type is "childList"
PASS mutations[0].addedNodes.length is 1
PASS mutations[0].addedNodes[0] is removedDiv1
...observer.disconnect() should prevent further delivery of mutations.
PASS mutations is null
...re-observing after disconnect works with the same observer.
PASS mutations.length is 2
PASS mutations[0].type is "childList"
PASS mutations[0].removedNodes.length is 1
PASS mutations[0].removedNodes[0] is removedDiv1
PASS mutations[1].type is "childList"
PASS mutations[1].removedNodes.length is 1
PASS mutations[1].removedNodes[0] is removedDiv2
Testing that observing without specifying "childList" does not result in hearing about childList changes.
PASS mutations is null
Testing that re-observing the same node with the same observer has the effect of resetting the options.
PASS calls is 1
PASS mutations.length is 1
PASS mutations[0].type is "childList"
PASS mutations is null
Testing that multiple observers can be registered to a given node and both receive mutations.
PASS mutations.length is 1
PASS mutations[0].type is "childList"
PASS mutations2.length is 1
PASS mutations2[0].type is "childList"
Testing that innerText and innerHTML always result in a single childList mutation.
...innerHTML
PASS mutations.length is 1
PASS mutations[0].type is "childList"
PASS mutations[0].addedNodes.length is 3
PASS mutations[0].addedNodes[0] is addedDiv1
PASS mutations[0].addedNodes[1] is addedDiv2
PASS mutations[0].addedNodes[2] is addedDiv3
PASS mutations[0].removedNodes.length is 2
PASS mutations[0].removedNodes[0] is removedDiv1
PASS mutations[0].removedNodes[1] is removedDiv2
...innerText
PASS mutations.length is 1
PASS mutations[0].type is "childList"
PASS mutations[0].addedNodes.length is 1
PASS mutations[0].removedNodes.length is 3
Testing that replaceChild results in minimal childList mutations.
...simple replace child
PASS mutations.length is 1
PASS mutations[0].type is "childList"
PASS mutations[0].addedNodes.length is 1
PASS mutations[0].addedNodes[0] is addedDiv1
PASS mutations[0].removedNodes.length is 1
PASS mutations[0].removedNodes[0] is removedDiv1
...replace with DocumentFragment
PASS mutations.length is 1
PASS mutations[0].type is "childList"
PASS mutations[0].addedNodes.length is 2
PASS mutations[0].addedNodes[0] is addedDiv1
PASS mutations[0].addedNodes[1] is addedDiv2
PASS mutations[0].removedNodes.length is 1
PASS mutations[0].removedNodes[0] is removedDiv1
Testing that insertBefore results in minimal childList mutations.
PASS mutations.length is 1
PASS mutations[0].type is "childList"
PASS mutations[0].addedNodes.length is 2
PASS mutations[0].addedNodes[0] is addedDiv1
PASS mutations[0].addedNodes[1] is addedDiv2
PASS mutations[0].removedNodes.length is 0
Testing that appendChild results in minimal childList mutations.
PASS mutations.length is 1
PASS mutations[0].type is "childList"
PASS mutations[0].addedNodes.length is 2
PASS mutations[0].addedNodes[0] is addedDiv1
PASS mutations[0].addedNodes[1] is addedDiv2
PASS mutations[0].removedNodes.length is 0
Setting an empty childlist to the empty string with innerHTML should not assert.
PASS mutations is null
PASS successfullyParsed is true
TEST COMPLETE