#import <DOM/MutationRecord.idl>
#import <DOM/Node.idl>

[Exposed=Window]
interface MutationObserver {

    constructor(MutationCallback callback);

    undefined observe(Node target, optional MutationObserverInit options = {});
    undefined disconnect();
    sequence<MutationRecord> takeRecords();

};

callback MutationCallback = undefined (sequence<MutationRecord> mutations, MutationObserver observer);

dictionary MutationObserverInit {

    boolean childList = false;
    boolean attributes;
    boolean characterData;
    boolean subtree = false;
    boolean attributeOldValue;
    boolean characterDataOldValue;
    sequence<DOMString> attributeFilter;

};
