shim necessary for browsers supporting old mutation events but not new mutation observers bzr revid: xmo@openerp.com-20130828084945-yfqrs0v9v8iecwjm
106 lines
2.6 KiB
JavaScript
106 lines
2.6 KiB
JavaScript
/*
|
|
* Copyright 2012 The Polymer Authors. All rights reserved.
|
|
* Use of this source code is governed by a BSD-style
|
|
* license that can be found in the LICENSE file.
|
|
*/
|
|
|
|
suite('JsMutationObserver characterData', function() {
|
|
|
|
var testDiv;
|
|
|
|
setup(function() {
|
|
testDiv = document.body.appendChild(document.createElement('div'));
|
|
});
|
|
|
|
teardown(function() {
|
|
document.body.removeChild(testDiv);
|
|
});
|
|
|
|
test('characterData', function() {
|
|
var text = document.createTextNode('abc');
|
|
var observer = new JsMutationObserver(function() {});
|
|
observer.observe(text, {
|
|
characterData: true
|
|
});
|
|
text.data = 'def';
|
|
text.data = 'ghi';
|
|
|
|
var records = observer.takeRecords();
|
|
assert.strictEqual(records.length, 2);
|
|
|
|
expectRecord(records[0], {
|
|
type: 'characterData',
|
|
target: text
|
|
});
|
|
expectRecord(records[1], {
|
|
type: 'characterData',
|
|
target: text
|
|
});
|
|
});
|
|
|
|
test('characterData with old value', function() {
|
|
var text = testDiv.appendChild(document.createTextNode('abc'));
|
|
var observer = new JsMutationObserver(function() {});
|
|
observer.observe(text, {
|
|
characterData: true,
|
|
characterDataOldValue: true
|
|
});
|
|
text.data = 'def';
|
|
text.data = 'ghi';
|
|
|
|
var records = observer.takeRecords();
|
|
assert.strictEqual(records.length, 2);
|
|
|
|
expectRecord(records[0], {
|
|
type: 'characterData',
|
|
target: text,
|
|
oldValue: 'abc'
|
|
});
|
|
expectRecord(records[1], {
|
|
type: 'characterData',
|
|
target: text,
|
|
oldValue: 'def'
|
|
});
|
|
});
|
|
|
|
test('characterData change in subtree should not generate a record',
|
|
function() {
|
|
var div = document.createElement('div');
|
|
var text = div.appendChild(document.createTextNode('abc'));
|
|
var observer = new JsMutationObserver(function() {});
|
|
observer.observe(div, {
|
|
characterData: true
|
|
});
|
|
text.data = 'def';
|
|
text.data = 'ghi';
|
|
|
|
var records = observer.takeRecords();
|
|
assert.strictEqual(records.length, 0);
|
|
});
|
|
|
|
test('characterData change in subtree',
|
|
function() {
|
|
var div = document.createElement('div');
|
|
var text = div.appendChild(document.createTextNode('abc'));
|
|
var observer = new JsMutationObserver(function() {});
|
|
observer.observe(div, {
|
|
characterData: true,
|
|
subtree: true
|
|
});
|
|
text.data = 'def';
|
|
text.data = 'ghi';
|
|
|
|
var records = observer.takeRecords();
|
|
assert.strictEqual(records.length, 2);
|
|
|
|
expectRecord(records[0], {
|
|
type: 'characterData',
|
|
target: text
|
|
});
|
|
expectRecord(records[1], {
|
|
type: 'characterData',
|
|
target: text
|
|
});
|
|
});
|
|
|
|
}); |