chromium/third_party/blink/web_tests/fast/dom/MutationObserver/filesystem-callback-delivery.html

<!DOCTYPE html>
<script src="../../../resources/js-test.js"></script>
<script>
window.jsTestIsAsync = true;
var mutations;

function testFilesystem() {
    var div;
    var fileEntry;
    var observer;

    function start() {
        mutations = null;
        div = document.createElement('div');
        observer = new MutationObserver(function(m) {
            mutations = m;
        });

        observer.observe(div, { attributes: true, characterData: true });

        webkitRequestFileSystem(TEMPORARY, 5*1024*1024, function(fs) {
            fs.root.getFile('foo.txt', {create: true, excluse: true}, function(entry) {
                fileEntry = entry;
                fileEntry.getParent(mutateAfterGetParent);
            });
        });
    }

    function mutateAfterGetParent() {
        div.setAttribute('foo', 'bar');
        fileEntry.remove(mutateAfterRemove);
    }

    function mutateAfterRemove() {
        shouldBe('mutations.length', '1');
        shouldBe('mutations[0].type', '"attributes"');
        shouldBe('mutations[0].attributeName', '"foo"');

        mutations = null;
        div.setAttribute('baz', 'bat');
        setTimeout(finish, 0);
    }

    function finish() {
        shouldBe('mutations.length', '1');
        shouldBe('mutations[0].type', '"attributes"');
        shouldBe('mutations[0].attributeName', '"baz"');

        observer.disconnect();
        debug('');
        finishJSTest();
    }

    start();
}

description('Test that Mutation Records are delivered following FileSystem callbacks.');

testFilesystem();
</script>