dataset-binding.window.js (1555B)
1 [9, "x"].forEach(function(key) { 2 test(function() { 3 var element = document.createElement("div"); 4 var dataset = element.dataset; 5 6 var value = "value for " + this.name; 7 8 assert_equals(dataset[key], undefined); 9 10 element.setAttribute("data-" + key, value); 11 assert_equals(element.getAttribute("data-" + key), value); 12 assert_equals(dataset[key], value); 13 14 var propdesc = Object.getOwnPropertyDescriptor(dataset, key); 15 assert_not_equals(propdesc, undefined); 16 assert_equals(propdesc.value, value); 17 assert_true(propdesc.writable); 18 assert_true(propdesc.enumerable); 19 assert_true(propdesc.configurable); 20 }, "Getting property descriptor for key " + key); 21 22 test(function() { 23 var element = document.createElement("div"); 24 var dataset = element.dataset; 25 26 var proto = "proto getter for " + this.name; 27 var calledSetter = []; 28 Object.defineProperty(DOMStringMap.prototype, key, { 29 "get": function() { return proto; }, 30 "set": this.unreached_func("Should not call [[Set]] on prototype"), 31 "configurable": true, 32 }); 33 this.add_cleanup(function() { 34 delete DOMStringMap.prototype[key]; 35 }); 36 37 var value = "value for " + this.name; 38 39 assert_equals(dataset[key], proto); 40 assert_equals(element.getAttribute("data-" + key), null); 41 assert_equals(dataset[key] = value, value); 42 assert_equals(dataset[key], value); 43 assert_equals(element.getAttribute("data-" + key), value); 44 }, "Setting property for key " + key + " with accessor property on prototype"); 45 });