CONSOLE WARNING: Listener added for a synchronous 'DOMSubtreeModified' DOM Mutation Event. This event type is deprecated (https://w3c.github.io/uievents/#legacy-event-types) and work is underway to remove it from this browser. Usage of this event listener will cause performance issues today, and represents a risk of future incompatibility. Consider using MutationObserver instead. Test WebKitMutationObserver.observe on CharacterData nodes On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". Testing basic aspects of characterData observation. ...can characterData changes be observed at all PASS mutations.length is 1 PASS mutations[0].type is "characterData" PASS mutations[0].target is charDataNode ...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 "characterData" PASS mutations[0].target is charDataNode PASS mutations[1].type is "characterData" PASS mutations[1].target is charDataNode Testing that observing without specifying "characterData" does not result in hearing about characterData changes. 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 "characterData" PASS mutations[0].target is charDataNode PASS mutations2.length is 1 PASS mutations2[0].type is "characterData" PASS mutations2[0].target is charDataNode Testing mutation records are enqueued for characterData before DOMSubtreeModified is dispatched. PASS mutations.length is 2 PASS mutations[0].type is "characterData" PASS mutations[1].type is "attributes" Testing that oldValue is returned when requested. PASS mutations.length is 2 PASS mutations[0].type is "characterData" PASS mutations[0].target is charDataNode PASS mutations[0].oldValue is "foo" PASS mutations[1].type is "characterData" PASS mutations[1].target is charDataNode PASS mutations[1].oldValue is "bar" Testing that oldValue is delivered as requested (or not). PASS mutationsWithOldValue.length is 1 PASS mutationsWithOldValue[0].type is "characterData" PASS mutationsWithOldValue[0].oldValue is "foo" PASS mutations.length is 1 PASS mutations[0].type is "characterData" PASS mutations[0].oldValue is null An observer with multiple observations will get characterDataOldValue if any entries request it. PASS mutations.length is 1 PASS mutations[0].type is "characterData" PASS mutations[0].oldValue is "foo" PASS successfullyParsed is true TEST COMPLETE