# AbortController and AbortSignal
abort/event.any.html,PASS

# MutationObserver tests

# Disabled, until test driver executes fully without Javascript errors
nodes/MutationObserver-attributes.html,FAIL
# These fail because Cobalt doesn't support setAttributeNS.
# nodes/MutationObserver-attributes.html,FAIL,attributes Element.setAttributeNS: creation mutation
# nodes/MutationObserver-attributes.html,FAIL,attributes Element.setAttributeNS: prefixed attribute creation mutation
# nodes/MutationObserver-attributes.html,FAIL,attributes Element.setAttributeNS: removal mutation
# Sets Element.localName, which isn't implemented in Cobalt.
# nodes/MutationObserver-attributes.html,FAIL,attributes Element.attributes.value: update mutation
# Input element is not supported in Cobalt
# nodes/MutationObserver-attributes.html,FAIL,attributes HTMLInputElement.type: type update mutation

nodes/MutationObserver-attributes.html,PASS,attributes Element.classList.toggle: token removal mutation
nodes/MutationObserver-attributes.html,PASS,attributes Element.classList.toggle: token addition mutation
nodes/MutationObserver-attributes.html,PASS,attributes Element.classList.toggle: forced token removal mutation
nodes/MutationObserver-attributes.html,PASS,attributes Element.classList.toggle: forced missing token removal no mutation
nodes/MutationObserver-attributes.html,PASS,attributes Element.classList.toggle: forced existing token addition no mutation
nodes/MutationObserver-attributes.html,PASS,attributes Element.classList.toggle: forced token addition mutation

# Most of these tests use operations such as insertData, replaceData, etc.,
# which Cobalt doesn't support.
nodes/MutationObserver-characterData.html,FAIL
nodes/MutationObserver-characterData.html,PASS,characterData Text.data: simple mutation without oldValue
nodes/MutationObserver-characterData.html,PASS,characterData Text.data: simple mutation
nodes/MutationObserver-characterData.html,PASS,characterData/characterDataOldValue alone Text.data: simple mutation

# Disabled, until test driver executes fully without Javascript errors
nodes/MutationObserver-childList.html,DISABLE
# Cobalt doesn't implement Node.normalize.
# nodes/MutationObserver-childList.html,FAIL,childList Node.normalize mutation
# nodes/MutationObserver-childList.html,FAIL,childList Node.normalize mutations

nodes/MutationObserver-disconnect.html,PASS

nodes/MutationObserver-document.html,PASS
# These fail because Cobalt doesn't support Event Loop, and MutationObserver spec relies on the concept of
# queuing a microtask to ensure that queued events get dispatched at the correct time.
nodes/MutationObserver-document.html,FAIL,parser insertion mutations
nodes/MutationObserver-document.html,FAIL,parser script insertion mutation
nodes/MutationObserver-document.html,FAIL,removal of parent during parsing

# Tests that use innerHtml and outerHtml. Gives libxml errors.
nodes/MutationObserver-inner-outer.html,FAIL

nodes/MutationObserver-takeRecords.html,PASS


# Events tests
events/EventTarget-constructible.any.html,FAIL
events/EventTarget-constructible.any.html,PASS,A constructed EventTarget can be used as expected
