mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Update web-platform-tests to revision 38bd28fe2368c650cf6e57be205cf3118dbd4997
This commit is contained in:
parent
a28e15e4ea
commit
85fe63f512
165 changed files with 2144 additions and 2644 deletions
|
@ -0,0 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<script>
|
||||
window.badNewTarget = function() {};
|
||||
badNewTarget.prototype = 8;
|
||||
|
||||
window.DOMParserSubclass = class extends DOMParser {}
|
||||
window.ForeignDOMParserSubclass = class extends parent.DOMParser {}
|
||||
</script>
|
|
@ -0,0 +1,96 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<title>Realm for constructed objects</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id=log></div>
|
||||
<script>
|
||||
function object_realm(dp) {
|
||||
// Note that browsers use the URL of the relevant global object's associated
|
||||
// Document.
|
||||
// https://github.com/w3c/DOM-Parsing/issues/46
|
||||
var url = DOMParser.prototype.parseFromString.call(dp, "x", "text/html").documentURI;
|
||||
var file = url.slice(url.lastIndexOf("/") + 1);
|
||||
switch (file) {
|
||||
case "constructors.html":
|
||||
return "parent window";
|
||||
case "constructors-support.html":
|
||||
return "child window";
|
||||
default:
|
||||
return "???";
|
||||
}
|
||||
}
|
||||
|
||||
async_test(function() {
|
||||
var iframe = document.createElement("iframe");
|
||||
iframe.onload = this.step_func_done(function() {
|
||||
var child = iframe.contentWindow;
|
||||
test(function() {
|
||||
var dp = new DOMParser();
|
||||
assert_equals(Object.getPrototypeOf(dp), DOMParser.prototype);
|
||||
assert_equals(object_realm(dp), "parent window");
|
||||
}, "Normal constructor in parent window");
|
||||
|
||||
test(function() {
|
||||
var dp = new child.DOMParser();
|
||||
assert_equals(Object.getPrototypeOf(dp), child.DOMParser.prototype);
|
||||
assert_equals(object_realm(dp), "child window");
|
||||
}, "Normal constructor in child window");
|
||||
|
||||
test(function() {
|
||||
var dp = Reflect.construct(child.DOMParser, [], DOMParser);
|
||||
assert_equals(Object.getPrototypeOf(dp), DOMParser.prototype);
|
||||
assert_equals(object_realm(dp), "child window");
|
||||
}, "Constructor in child window with normal NewTarget from parent window");
|
||||
|
||||
test(function() {
|
||||
var dp = Reflect.construct(DOMParser, [], child.DOMParser);
|
||||
assert_equals(Object.getPrototypeOf(dp), child.DOMParser.prototype);
|
||||
assert_equals(object_realm(dp), "parent window");
|
||||
}, "Constructor in parent window with normal NewTarget from child window");
|
||||
|
||||
test(function() {
|
||||
class DOMParserSubclass extends DOMParser {}
|
||||
var dp = new DOMParserSubclass();
|
||||
assert_equals(Object.getPrototypeOf(dp), DOMParserSubclass.prototype);
|
||||
assert_equals(object_realm(dp), "parent window");
|
||||
}, "Subclass constructor in parent window");
|
||||
|
||||
test(function() {
|
||||
var dp = new child.DOMParserSubclass();
|
||||
assert_equals(Object.getPrototypeOf(dp), child.DOMParserSubclass.prototype);
|
||||
assert_equals(object_realm(dp), "child window");
|
||||
}, "Subclass constructor in child window");
|
||||
|
||||
test(function() {
|
||||
class ForeignDOMParserSubclass extends child.DOMParser {}
|
||||
var dp = new ForeignDOMParserSubclass();
|
||||
assert_equals(Object.getPrototypeOf(dp), ForeignDOMParserSubclass.prototype);
|
||||
assert_equals(object_realm(dp), "child window");
|
||||
}, "Subclass constructor in parent window with parent class in child window");
|
||||
|
||||
test(function() {
|
||||
var dp = new child.ForeignDOMParserSubclass();
|
||||
assert_equals(Object.getPrototypeOf(dp), child.ForeignDOMParserSubclass.prototype);
|
||||
assert_equals(object_realm(dp), "parent window");
|
||||
}, "Subclass constructor in child window with parent class in parent window");
|
||||
|
||||
test(function() {
|
||||
var badNewTarget = function() {};
|
||||
badNewTarget.prototype = 7;
|
||||
|
||||
var dp = Reflect.construct(child.DOMParser, [], badNewTarget);
|
||||
assert_equals(Object.getPrototypeOf(dp), DOMParser.prototype);
|
||||
assert_equals(object_realm(dp), "child window");
|
||||
}, "Constructor in child window with bad NewTarget from parent window");
|
||||
|
||||
test(function() {
|
||||
var dp = Reflect.construct(DOMParser, [], child.badNewTarget);
|
||||
assert_equals(Object.getPrototypeOf(dp), child.DOMParser.prototype);
|
||||
assert_equals(object_realm(dp), "parent window");
|
||||
}, "Constructor in parent window with bad NewTarget from child window");
|
||||
});
|
||||
iframe.src = "constructors-support.html";
|
||||
document.body.appendChild(iframe);
|
||||
});
|
||||
</script>
|
Loading…
Add table
Add a link
Reference in a new issue