mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
54 lines
1.6 KiB
HTML
54 lines
1.6 KiB
HTML
<html>
|
|
<link rel="import" href="../resources/chai.html" />
|
|
<link rel="import" href="../resources/mocha.html" />
|
|
<script>
|
|
describe('MutationObserver.takeRecords', function() {
|
|
it('should allow taking records synchronously or getting a notification', function(done) {
|
|
var mutations;
|
|
var div;
|
|
var subDiv;
|
|
var observer;
|
|
|
|
// Testing takeRecords.
|
|
mutations = null;
|
|
div = document.createElement('div');
|
|
subDiv = div.appendChild(document.createElement('div'));
|
|
subDiv.textContent = 'hello, world';
|
|
observer = new MutationObserver(function(records) {
|
|
mutations = records;
|
|
});
|
|
|
|
observer.observe(div, {attributes: true, characterData: true, subtree: true});
|
|
subDiv.setAttribute('foo', 'bar');
|
|
subDiv.firstChild.textContent = 'goodbye!';
|
|
div.removeChild(subDiv);
|
|
|
|
mutations = observer.takeRecords();
|
|
|
|
// ...records are taken synchronously.
|
|
|
|
assert.equal(mutations.length, 2);
|
|
assert.equal(mutations[0].type, "attributes");
|
|
assert.equal(mutations[0].target, subDiv);
|
|
assert.equal(mutations[0].attributeName, "foo");
|
|
assert.equal(mutations[1].type, "characterData");
|
|
assert.equal(mutations[1].target, subDiv.firstChild);
|
|
|
|
subDiv.setAttribute('foo', 'baz');
|
|
|
|
setTimeout(function() {
|
|
// ...takeRecord took records, but did not clear transient observers.
|
|
|
|
assert.equal(mutations.length, 1);
|
|
assert.equal(mutations[0].type, "attributes");
|
|
assert.equal(mutations[0].target, subDiv);
|
|
assert.equal(mutations[0].attributeName, "foo");
|
|
observer.disconnect();
|
|
|
|
done();
|
|
}, 0);
|
|
});
|
|
});
|
|
</script>
|
|
</html>
|