Remove Element#attributes.
We now implement getAttributes() such that it returns a new set of Attr isntances on every call as well. R=abarth@chromium.org Review URL: https://codereview.chromium.org/697773002
This commit is contained in:
@@ -1,10 +1,8 @@
|
||||
Running 6 tests
|
||||
Running 4 tests
|
||||
ok 1 Attribute collection should get by index
|
||||
ok 2 Attribute collection should get by name
|
||||
ok 3 Attribute collection should get all at once
|
||||
ok 4 Attribute collection should set by name
|
||||
ok 5 Attribute collection should be case sensitive
|
||||
ok 6 Attribute collection should live update
|
||||
6 tests
|
||||
6 pass
|
||||
ok 2 Attribute collection should set by name
|
||||
ok 3 Attribute collection should be case sensitive
|
||||
ok 4 Attribute collection should not live update
|
||||
4 tests
|
||||
4 pass
|
||||
0 fail
|
||||
|
||||
@@ -9,22 +9,6 @@ describe("Attribute collection", function() {
|
||||
});
|
||||
|
||||
it("should get by index", function() {
|
||||
div.setAttribute("attr0", "value0");
|
||||
div.setAttribute("attr1", "value1");
|
||||
assert.equal(div.attributes.length, 2);
|
||||
assert.equal(div.attributes[0].name, "attr0");
|
||||
assert.equal(div.attributes[0].value, "value0");
|
||||
assert.equal(div.attributes[1].name, "attr1");
|
||||
assert.equal(div.attributes[1].value, "value1");
|
||||
});
|
||||
it("should get by name", function() {
|
||||
div.setAttribute("attr0", "value0");
|
||||
div.setAttribute("attr1", "value1");
|
||||
assert.equal(div.attributes.length, 2);
|
||||
assert.equal(div.attributes.attr0.value, "value0");
|
||||
assert.equal(div.attributes.attr1.value, "value1");
|
||||
});
|
||||
it("should get all at once", function() {
|
||||
div.setAttribute("attr0", "value0");
|
||||
div.setAttribute("attr1", "value1");
|
||||
var attrs = div.getAttributes();
|
||||
@@ -36,30 +20,42 @@ describe("Attribute collection", function() {
|
||||
});
|
||||
it("should set by name", function() {
|
||||
div.setAttribute("attrName", "value0");
|
||||
div.attributes.attrName.value = "new value";
|
||||
assert.equal(div.getAttribute("attrName"), "value0");
|
||||
assert.equal(div.getAttributes()[0].name, "attrName");
|
||||
assert.equal(div.getAttributes()[0].value, "value0");
|
||||
div.setAttribute("attrName", "new value");
|
||||
assert.equal(div.getAttribute("attrName"), "new value");
|
||||
assert.equal(div.attributes.attrName.value, "new value");
|
||||
assert.equal(div.getAttributes()[0].name, "attrName");
|
||||
assert.equal(div.getAttributes()[0].value, "new value");
|
||||
});
|
||||
it("should be case sensitive", function() {
|
||||
div.setAttribute("attrName", "value0");
|
||||
assert.isUndefined(div.attributes.attrname);
|
||||
assert.ok(div.attributes.attrName);
|
||||
assert.equal(div.attributes.attrName.value, "value0");
|
||||
assert.isNull(div.getAttribute("attrname"));
|
||||
assert.equal(div.getAttribute("attrName"), "value0");
|
||||
});
|
||||
it("should live update", function() {
|
||||
div.setAttribute("attr0", "");
|
||||
div.setAttribute("attr1", "");
|
||||
div.setAttribute("attr2", "");
|
||||
assert.equal(div.attributes.length, 3);
|
||||
it("should not live update", function() {
|
||||
div.setAttribute("attr0", "0");
|
||||
div.setAttribute("attr1", "1");
|
||||
div.setAttribute("attr2", "2");
|
||||
var oldAttributes = div.getAttributes();
|
||||
assert.equal(oldAttributes.length, 3);
|
||||
div.removeAttribute("attr1");
|
||||
assert.equal(div.attributes.length, 2);
|
||||
assert.equal(div.attributes[0].name, "attr0");
|
||||
assert.equal(div.attributes[1].name, "attr2");
|
||||
div.setAttribute("attr3", "");
|
||||
assert.equal(oldAttributes.length, 3);
|
||||
div.setAttribute("attr0", "value0");
|
||||
div.setAttribute("attr2", "value2");
|
||||
assert.equal(div.attributes.length, 3);
|
||||
assert.equal(div.attributes[2].name, "attr3");
|
||||
assert.equal(div.attributes.attr2.value, "value2");
|
||||
var newAttributes = div.getAttributes();
|
||||
assert.equal(newAttributes.length, 2);
|
||||
assert.equal(newAttributes[0].name, "attr0");
|
||||
assert.equal(newAttributes[0].value, "value0");
|
||||
assert.equal(newAttributes[1].name, "attr2");
|
||||
assert.equal(newAttributes[1].value, "value2");
|
||||
assert.notEqual(newAttributes, oldAttributes);
|
||||
assert.equal(oldAttributes[0].name, "attr0");
|
||||
assert.equal(oldAttributes[0].value, "0");
|
||||
assert.equal(oldAttributes[1].name, "attr1");
|
||||
assert.equal(oldAttributes[1].value, "1");
|
||||
assert.equal(oldAttributes[2].name, "attr2");
|
||||
assert.equal(oldAttributes[2].value, "2");
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Running 15 tests
|
||||
Running 14 tests
|
||||
ok 1 MutationObserver.observe on attributes should handle basic aspects of attribute observation
|
||||
ok 2 MutationObserver.observe on attributes should not notify of attribute changes without asking
|
||||
ok 3 MutationObserver.observe on attributes re-observing the same node with the same observer has the effect of resetting the options
|
||||
@@ -13,7 +13,6 @@ ok 11 MutationObserver.observe on attributes should respect different attributeF
|
||||
ok 12 MutationObserver.observe on attributes should create records for the style property
|
||||
ok 13 MutationObserver.observe on attributes should have oldValue for style property mutations
|
||||
ok 14 MutationObserver.observe on attributes should not create records for noop style property mutation
|
||||
ok 15 MutationObserver.observe on attributes should create records when mutating through the attribute collection
|
||||
15 tests
|
||||
15 pass
|
||||
14 tests
|
||||
14 pass
|
||||
0 fail
|
||||
|
||||
@@ -563,38 +563,6 @@ describe('MutationObserver.observe on attributes', function() {
|
||||
|
||||
start();
|
||||
});
|
||||
|
||||
it('should create records when mutating through the attribute collection', function(done) {
|
||||
var observer;
|
||||
var mutations;
|
||||
var div;
|
||||
|
||||
function start() {
|
||||
observer = new MutationObserver(function(records) {
|
||||
mutations = records;
|
||||
});
|
||||
|
||||
div = document.createElement('div');
|
||||
div.setAttribute('data-test', 'foo');
|
||||
observer.observe(div, { attributes: true, attributeOldValue: true });
|
||||
div.attributes['data-test'].value = 'bar';
|
||||
|
||||
setTimeout(finish, 0);
|
||||
}
|
||||
|
||||
function finish() {
|
||||
assert.equal(mutations.length, 1);
|
||||
assert.equal(mutations[0].target, div);
|
||||
assert.equal(mutations[0].type, "attributes");
|
||||
assert.equal(mutations[0].attributeName, "data-test");
|
||||
assert.equal(mutations[0].oldValue, "foo");
|
||||
|
||||
observer.disconnect();
|
||||
done();
|
||||
}
|
||||
|
||||
start();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user