Implement [Unscopable] (fixes #11583)

This commit is contained in:
Anthony Ramine 2016-06-05 03:42:33 +02:00
parent 0f1f99a4bf
commit 3529803975
8 changed files with 96 additions and 35 deletions

View file

@ -1,5 +0,0 @@
[remove-unscopable.html]
type: testharness
[remove() should be unscopable]
expected: FAIL

View file

@ -5,14 +5,28 @@
<script src=/resources/testharnessreport.js></script>
<div id="testDiv" onclick="result1 = remove; result2 = this.remove;"></div>
<script>
var remove = "Hello there";
var result1;
var result2;
test(function() {
assert_true(Element.prototype[Symbol.unscopables].remove);
var div = document.querySelector("#testDiv");
div.dispatchEvent(new Event("click"));
assert_equals(typeof result1, "string");
assert_equals(typeof result2, "function");
}, "remove() should be unscopable")
var unscopables = [
"before",
"after",
"replaceWith",
"remove",
"prepend",
"append"
];
for (var i in unscopables) {
var name = unscopables[i];
window[name] = "Hello there";
result1 = result2 = undefined;
test(function () {
assert_true(Element.prototype[Symbol.unscopables][name]);
var div = document.querySelector('#testDiv');
div.setAttribute(
"onclick", "result1 = " + name + "; result2 = this." + name + ";");
div.dispatchEvent(new Event("click"));
assert_equals(typeof result1, "string");
assert_equals(typeof result2, "function");
}, name + "() should be unscopable");
}
</script>