230 lines
8.5 KiB
Plaintext
230 lines
8.5 KiB
Plaintext
Test WebKitMutationObserver.observe on attributes
|
|
|
|
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
|
|
|
|
|
|
Testing basic aspects of attribute observation.
|
|
...can attribute changes be observed at all
|
|
PASS mutations.length is 2
|
|
PASS mutations[0].type is "attributes"
|
|
PASS mutations[0].attributeName is "foo"
|
|
PASS mutations[0].attributeNamespace is null
|
|
PASS mutations[1].type is "attributes"
|
|
PASS mutations[1].attributeName is "bar"
|
|
PASS mutations[1].attributeNamespace is null
|
|
...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 "attributes"
|
|
PASS mutations[0].attributeName is "foo"
|
|
PASS mutations[0].attributeNamespace is null
|
|
PASS mutations[1].type is "attributes"
|
|
PASS mutations[1].attributeName is "bar"
|
|
PASS mutations[1].attributeNamespace is null
|
|
|
|
Testing that observing without specifying "attributes" does not result in hearing about attribute 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 "attributes"
|
|
PASS mutations[0].attributeName is "foo"
|
|
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 "attributes"
|
|
PASS mutations[0].attributeName is "foo"
|
|
PASS mutations2.length is 1
|
|
PASS mutations2[0].type is "attributes"
|
|
PASS mutations2[0].attributeName is "foo"
|
|
|
|
Testing that "attributeNamespace" value is delivered properly.
|
|
PASS mutations.length is 1
|
|
PASS mutations[0].type is "attributes"
|
|
PASS mutations[0].attributeName is "foo"
|
|
PASS mutations[0].attributeNamespace is "http://www.foo.com/bar"
|
|
|
|
Testing that modifications to node properties which delegate to attribute storage deliver mutations.
|
|
PASS mutations.length is 2
|
|
PASS mutations[0].type is "attributes"
|
|
PASS mutations[0].attributeName is "src"
|
|
PASS mutations[1].type is "attributes"
|
|
PASS mutations[1].attributeName is "href"
|
|
|
|
Testing mutation records are enqueued for attributes before DOMSubtreeModified is dispatched.
|
|
PASS mutations.length is 2
|
|
PASS mutations[0].type is "attributes"
|
|
PASS mutations[0].attributeName is "foo"
|
|
PASS mutations[1].type is "attributes"
|
|
PASS mutations[1].attributeName is "baz"
|
|
|
|
Testing basic oldValue delivery.
|
|
PASS mutations.length is 3
|
|
PASS mutations[0].type is "attributes"
|
|
PASS mutations[0].attributeName is "foo"
|
|
PASS mutations[0].oldValue is null
|
|
PASS mutations[1].type is "attributes"
|
|
PASS mutations[1].attributeName is "foo"
|
|
PASS mutations[1].oldValue is "bar"
|
|
PASS mutations[2].type is "attributes"
|
|
PASS mutations[2].attributeName is "bar"
|
|
PASS mutations[2].oldValue is "boo"
|
|
|
|
Testing that oldValue is delivered as requested (or not).
|
|
PASS mutationsWithOldValue.length is 1
|
|
PASS mutationsWithOldValue[0].type is "attributes"
|
|
PASS mutationsWithOldValue[0].attributeName is "foo"
|
|
PASS mutationsWithOldValue[0].oldValue is "bar"
|
|
PASS mutations.length is 1
|
|
PASS mutations[0].type is "attributes"
|
|
PASS mutations[0].attributeName is "foo"
|
|
PASS mutations[0].oldValue is null
|
|
|
|
An observer with multiple observations will get attributeOldValue if any entries request it.
|
|
PASS mutations.length is 1
|
|
PASS mutations[0].type is "attributes"
|
|
PASS mutations[0].attributeName is "foo"
|
|
PASS mutations[0].oldValue is "bar"
|
|
|
|
Testing setting an attribute via reflected IDL attribute.
|
|
PASS mutations.length is 3
|
|
PASS mutations[0].type is "attributes"
|
|
PASS mutations[0].attributeName is "id"
|
|
PASS mutations[0].oldValue is null
|
|
PASS mutations[1].type is "attributes"
|
|
PASS mutations[1].attributeName is "id"
|
|
PASS mutations[1].oldValue is "foo"
|
|
PASS mutations[2].type is "attributes"
|
|
PASS mutations[2].attributeName is "id"
|
|
PASS mutations[2].oldValue is "bar"
|
|
|
|
Testing that attributeFilter works as expected and observes case with HTML elements.
|
|
...only foo and bar should be received.
|
|
PASS mutations.length is 2
|
|
PASS mutations[0].type is "attributes"
|
|
PASS mutations[0].attributeName is "foo"
|
|
PASS mutations[0].attributeNamespace is null
|
|
PASS mutations[1].type is "attributes"
|
|
PASS mutations[1].attributeName is "bar"
|
|
PASS mutations[1].attributeNamespace is null
|
|
|
|
Testing the behavior of attributeFilter when the same observer observes at multiple nodes in a subtree with different filter options.
|
|
...only foo, bar & bat should be received.
|
|
PASS mutations.length is 3
|
|
PASS mutations[0].type is "attributes"
|
|
PASS mutations[0].attributeName is "foo"
|
|
PASS mutations[0].attributeNamespace is null
|
|
PASS mutations[1].type is "attributes"
|
|
PASS mutations[1].attributeName is "bar"
|
|
PASS mutations[1].attributeNamespace is null
|
|
PASS mutations[2].type is "attributes"
|
|
PASS mutations[2].attributeName is "bat"
|
|
PASS mutations[2].attributeNamespace is null
|
|
...bar, bat & baz should all be received.
|
|
PASS mutations.length is 3
|
|
PASS mutations[0].type is "attributes"
|
|
PASS mutations[0].attributeName is "bar"
|
|
PASS mutations[0].attributeNamespace is null
|
|
PASS mutations[1].type is "attributes"
|
|
PASS mutations[1].attributeName is "bat"
|
|
PASS mutations[1].attributeNamespace is null
|
|
PASS mutations[2].type is "attributes"
|
|
PASS mutations[2].attributeName is "baz"
|
|
PASS mutations[2].attributeNamespace is null
|
|
|
|
Testing that setting an attributeFilter filters out namespaced attributes.
|
|
...pathLength should not be received.
|
|
PASS mutations is null
|
|
|
|
Testing that attributeFilter respects case with non-HTML elements.
|
|
...only ID, id, booM should be received.
|
|
PASS mutations.length is 3
|
|
PASS mutations[0].type is "attributes"
|
|
PASS mutations[0].attributeName is "ID"
|
|
PASS mutations[0].attributeNamespace is null
|
|
PASS mutations[1].type is "attributes"
|
|
PASS mutations[1].attributeName is "id"
|
|
PASS mutations[1].attributeNamespace is null
|
|
PASS mutations[2].type is "attributes"
|
|
PASS mutations[2].attributeName is "booM"
|
|
PASS mutations[2].attributeNamespace is null
|
|
|
|
Testing that modifying an elements style property dispatches Mutation Records.
|
|
PASS mutations.length is 3
|
|
PASS mutations[0].type is "attributes"
|
|
PASS mutations[0].attributeName is "style"
|
|
PASS mutations[0].oldValue is null
|
|
PASS mutations[1].type is "attributes"
|
|
PASS mutations[1].attributeName is "style"
|
|
PASS mutations[1].oldValue is null
|
|
PASS mutations[2].type is "attributes"
|
|
PASS mutations[2].attributeName is "style"
|
|
PASS mutations[2].oldValue is null
|
|
...mutation record created.
|
|
PASS mutations is null
|
|
|
|
Testing that modifying an elements style property dispatches Mutation Records with correct oldValues.
|
|
PASS mutations.length is 3
|
|
PASS mutations[0].type is "attributes"
|
|
PASS mutations[0].attributeName is "style"
|
|
PASS mutations[0].oldValue is "color: yellow; width: 100px;"
|
|
PASS mutations[1].type is "attributes"
|
|
PASS mutations[1].attributeName is "style"
|
|
PASS mutations[1].oldValue is "color: red; width: 100px;"
|
|
PASS mutations[2].type is "attributes"
|
|
PASS mutations[2].attributeName is "style"
|
|
PASS mutations[2].oldValue is "color: red; width: 200px;"
|
|
...mutation record created.
|
|
PASS mutations is null
|
|
|
|
Testing that a no-op style property mutation does not create Mutation Records.
|
|
PASS mutations is null
|
|
|
|
Test that mutating an attribute through an attr node delivers mutation records
|
|
PASS mutations.length is 1
|
|
PASS mutations[0].target is div
|
|
PASS mutations[0].type is "attributes"
|
|
PASS mutations[0].attributeName is "data-test"
|
|
PASS mutations[0].oldValue is "foo"
|
|
|
|
Test that mutating via setAttributeNode delivers mutation records
|
|
PASS mutations.length is 3
|
|
PASS mutations[0].target is div
|
|
PASS mutations[0].type is "attributes"
|
|
PASS mutations[0].attributeName is "data-test"
|
|
PASS mutations[0].oldValue is "foo"
|
|
PASS mutations[1].target is div
|
|
PASS mutations[1].type is "attributes"
|
|
PASS mutations[1].attributeName is "data-other"
|
|
PASS mutations[1].oldValue is null
|
|
PASS mutations[2].target is div
|
|
PASS mutations[2].type is "attributes"
|
|
PASS mutations[2].attributeName is "id"
|
|
PASS mutations[2].oldValue is "myId"
|
|
|
|
Test that setAttribute on an attribute with an existing Attr delivers mutation records
|
|
PASS mutations.length is 1
|
|
PASS mutations[0].target is div
|
|
PASS mutations[0].type is "attributes"
|
|
PASS mutations[0].attributeName is "data-test"
|
|
PASS mutations[0].oldValue is "foo"
|
|
|
|
Test that setNamedItem and removeNamedItem deliver mutation records
|
|
PASS mutations.length is 2
|
|
PASS mutations[0].target is div
|
|
PASS mutations[0].type is "attributes"
|
|
PASS mutations[0].attributeName is "data-test"
|
|
PASS mutations[0].oldValue is "foo"
|
|
PASS mutations[1].target is div
|
|
PASS mutations[1].type is "attributes"
|
|
PASS mutations[1].attributeName is "data-test"
|
|
PASS mutations[1].oldValue is "bar"
|
|
|
|
PASS successfullyParsed is true
|
|
|
|
TEST COMPLETE
|
|
|