mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Update web-platform-tests to revision 0d318188757a9c996e20b82db201fd04de5aa255
This commit is contained in:
parent
b2a5225831
commit
1a81b18b9f
12321 changed files with 544385 additions and 6 deletions
|
@ -0,0 +1,38 @@
|
|||
[
|
||||
{
|
||||
"id": "using-the-a-element-to-define-a-command",
|
||||
"original_id": "using-the-a-element-to-define-a-command"
|
||||
},
|
||||
{
|
||||
"id": "using-the-button-element-to-define-a-command",
|
||||
"original_id": "using-the-button-element-to-define-a-command"
|
||||
},
|
||||
{
|
||||
"id": "using-the-input-element-to-define-a-command",
|
||||
"original_id": "using-the-input-element-to-define-a-command"
|
||||
},
|
||||
{
|
||||
"id": "using-the-option-element-to-define-a-command",
|
||||
"original_id": "using-the-option-element-to-define-a-command"
|
||||
},
|
||||
{
|
||||
"id": "using-the-command-element-to-define-a-command",
|
||||
"original_id": "using-the-command-element-to-define-a-command"
|
||||
},
|
||||
{
|
||||
"id": "using-the-command-attribute-on-command-elements-to-define-a-command-indirectly",
|
||||
"original_id": "using-the-command-attribute-on-command-elements-to-define-a-command-indirectly"
|
||||
},
|
||||
{
|
||||
"id": "using-the-accesskey-attribute-on-a-label-element-to-define-a-command",
|
||||
"original_id": "using-the-accesskey-attribute-on-a-label-element-to-define-a-command"
|
||||
},
|
||||
{
|
||||
"id": "using-the-accesskey-attribute-on-a-legend-element-to-define-a-command",
|
||||
"original_id": "using-the-accesskey-attribute-on-a-legend-element-to-define-a-command"
|
||||
},
|
||||
{
|
||||
"id": "using-the-accesskey-attribute-to-define-a-command-on-other-elements",
|
||||
"original_id": "using-the-accesskey-attribute-to-define-a-command-on-other-elements"
|
||||
}
|
||||
]
|
|
@ -0,0 +1,47 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>HTML details element API</title>
|
||||
<style>#one, #two { visibility: hidden; }</style>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="log"></div>
|
||||
|
||||
<!-- Used in parsing tests -->
|
||||
<div id='one'><details></details><details></details></div>
|
||||
<div id='two'><p><details></details></div>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
function makeDetails () {
|
||||
return document.createElement('details');
|
||||
}
|
||||
|
||||
|
||||
// <details>
|
||||
test(function () {
|
||||
var times = document.getElementById('one').getElementsByTagName('details');
|
||||
assert_equals( times.length, 2 );
|
||||
}, 'HTML parsing should locate 2 details elements in this document');
|
||||
|
||||
test(function () {
|
||||
assert_equals( document.getElementById('two').getElementsByTagName('p')[0].innerHTML, '' );
|
||||
}, 'HTML parsing should close an unclosed <p> before <details>');
|
||||
|
||||
test(function () {
|
||||
assert_true( !!window.HTMLDetailsElement );
|
||||
}, 'HTMLDetailsElement should be exposed for prototyping');
|
||||
|
||||
test(function () {
|
||||
assert_true( makeDetails() instanceof window.HTMLDetailsElement);
|
||||
}, 'a dynamically created details element should be instanceof HTMLDetailsElement');
|
||||
|
||||
test(function () {
|
||||
assert_true( document.getElementById('one').getElementsByTagName('details')[0] instanceof window.HTMLDetailsElement);
|
||||
}, 'a details element from the parser should be instanceof HTMLDetailsElement');
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,93 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<title>The details element</title>
|
||||
<link rel="author" title="Denis Ah-Kang" href="mailto:denis@w3.org">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/#the-details-element">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
||||
<details id=details1>
|
||||
<summary>Lorem ipsum</summary>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
|
||||
</details>
|
||||
<details id=details2 open>
|
||||
<summary>Lorem ipsum</summary>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
|
||||
</details>
|
||||
<details id=details3 style="display:none;">
|
||||
<summary>Lorem ipsum</summary>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
|
||||
</details>
|
||||
<details id=details4>
|
||||
</details>
|
||||
<details id=details6>
|
||||
<summary>Lorem ipsum</summary>
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
|
||||
</details>
|
||||
<script>
|
||||
var t1 = async_test("Adding open to 'details' should fire a toggle event at the 'details' element"),
|
||||
t2 = async_test("Removing open from 'details' should fire a toggle event at the 'details' element"),
|
||||
t3 = async_test("Adding open to 'details' (display:none) should fire a toggle event at the 'details' element"),
|
||||
t4 = async_test("Adding open from 'details' (no children) should fire a toggle event at the 'details' element"),
|
||||
t6 = async_test("Calling open twice on 'details' fires only one toggle event"),
|
||||
details1 = document.getElementById('details1'),
|
||||
details2 = document.getElementById('details2'),
|
||||
details3 = document.getElementById('details3'),
|
||||
details4 = document.getElementById('details4'),
|
||||
details6 = document.getElementById('details6'),
|
||||
loop=false;
|
||||
|
||||
function testEvent(evt) {
|
||||
assert_true(evt.isTrusted, "event is trusted");
|
||||
assert_false(evt.bubbles, "event doesn't bubble");
|
||||
assert_false(evt.cancelable, "event is not cancelable");
|
||||
assert_equals(Object.getPrototypeOf(evt), Event.prototype, "Prototype of toggle event is Event.prototype");
|
||||
}
|
||||
|
||||
details1.ontoggle = t1.step_func_done(function(evt) {
|
||||
assert_true(details1.open);
|
||||
testEvent(evt)
|
||||
});
|
||||
details1.open = true; // opens details1
|
||||
|
||||
details2.ontoggle = t2.step_func_done(function(evt) {
|
||||
assert_false(details2.open);
|
||||
testEvent(evt);
|
||||
});
|
||||
details2.open = false; // closes details2
|
||||
|
||||
details3.ontoggle = t3.step_func_done(function(evt) {
|
||||
assert_true(details3.open);
|
||||
testEvent(evt);
|
||||
});
|
||||
details3.open = true; // opens details3
|
||||
|
||||
details4.ontoggle = t4.step_func_done(function(evt) {
|
||||
assert_true(details4.open);
|
||||
testEvent(evt);
|
||||
});
|
||||
details4.open = true; // opens details4
|
||||
|
||||
async_test(function(t) {
|
||||
var details5 = document.createElement("details");
|
||||
details5.ontoggle = t.step_func_done(function(evt) {
|
||||
assert_true(details5.open);
|
||||
testEvent(evt);
|
||||
})
|
||||
details5.open = true;
|
||||
}, "Adding open to 'details' (not in the document) should fire a toggle event at the 'details' element");
|
||||
|
||||
details6.open = true;
|
||||
details6.open = false;
|
||||
details6.ontoggle = t6.step_func(function() {
|
||||
if (loop) {
|
||||
assert_unreached("toggle event fired twice");
|
||||
} else {
|
||||
loop = true;
|
||||
}
|
||||
});
|
||||
setTimeout(t6.step_func(function() {
|
||||
assert_true(loop);
|
||||
t6.done();
|
||||
}), 0);
|
||||
</script>
|
|
@ -0,0 +1,6 @@
|
|||
[
|
||||
{
|
||||
"id": "anchor-points",
|
||||
"original_id": "anchor-points"
|
||||
}
|
||||
]
|
|
@ -0,0 +1,78 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<title>dialog element: close()</title>
|
||||
<link rel="author" title="Denis Ah-Kang" href="mailto:denis@w3.org">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/#the-dialog-element">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
||||
<dialog id="d1">
|
||||
<p>foobar</p>
|
||||
<button>OK</button>
|
||||
</dialog>
|
||||
<dialog id="d2" open>
|
||||
<p>foobar</p>
|
||||
<button>OK</button>
|
||||
</dialog>
|
||||
<dialog id="d3" open>
|
||||
<p>foobar</p>
|
||||
<button>OK</button>
|
||||
</dialog>
|
||||
<dialog id="d4" open>
|
||||
<p>foobar</p>
|
||||
<button>OK</button>
|
||||
</dialog>
|
||||
<dialog id="d5" open>
|
||||
<p>foobar</p>
|
||||
<button>OK</button>
|
||||
</dialog>
|
||||
<script>
|
||||
var d1 = document.getElementById('d1'),
|
||||
d2 = document.getElementById('d2'),
|
||||
d3 = document.getElementById('d3'),
|
||||
d4 = document.getElementById('d4'),
|
||||
d5 = document.getElementById('d5'),
|
||||
t = async_test("close() fires a close event"),
|
||||
was_queued = false;
|
||||
|
||||
test(function(){
|
||||
assert_throws("INVALID_STATE_ERR", function() {
|
||||
d1.close();
|
||||
});
|
||||
}, "close() on a <dialog> that doesn't have an open attribute throws an InvalidStateError exception");
|
||||
|
||||
test(function(){
|
||||
assert_true(d2.open);
|
||||
assert_equals(d2.returnValue, "");
|
||||
d2.close("closedialog");
|
||||
assert_false(d2.hasAttribute("open"));
|
||||
assert_equals(d2.returnValue, "closedialog");
|
||||
}, "close() removes the open attribute and set the returnValue to the first argument");
|
||||
|
||||
test(function(){
|
||||
assert_true(d3.open);
|
||||
assert_equals(d3.returnValue, "");
|
||||
d3.returnValue = "foobar";
|
||||
d3.close();
|
||||
assert_false(d3.hasAttribute("open"));
|
||||
assert_equals(d3.returnValue, "foobar");
|
||||
}, "close() without argument removes the open attribute and there's no returnValue");
|
||||
|
||||
d4.onclose = t.step_func_done(function(e) {
|
||||
assert_true(was_queued, "close event should be queued");
|
||||
assert_true(e.isTrusted, "close event is trusted");
|
||||
assert_false(e.bubbles, "close event doesn't bubble");
|
||||
assert_false(e.cancelable, "close event is not cancelable");
|
||||
});
|
||||
|
||||
t.step(function() {
|
||||
d4.close();
|
||||
was_queued = true;
|
||||
})
|
||||
|
||||
test(function(){
|
||||
Object.defineProperty(HTMLDialogElement.prototype, 'returnValue', { set: function(v) { assert_unreached('JS-defined setter returnValue on the prototype was invoked'); }, configurable:true });
|
||||
Object.defineProperty(d5, 'returnValue', { set: function(v) { assert_unreached('JS-defined setter returnValue on the instance was invoked'); }, configurable:true });
|
||||
d5.close('foo');
|
||||
}, "close() should set the returnValue IDL attribute but not the JS property");
|
||||
</script>
|
|
@ -0,0 +1,125 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<title>dialog element: showModal()</title>
|
||||
<link rel="author" title="Denis Ah-Kang" href="mailto:denis@w3.org">
|
||||
<link rel=help href="https://html.spec.whatwg.org/multipage/#the-dialog-element">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
||||
<button id="b0">OK</button>
|
||||
<dialog id="d1">
|
||||
<p>foobar</p>
|
||||
<button id="b1">OK</button>
|
||||
</dialog>
|
||||
<dialog id="d2" open>
|
||||
<p>foobar</p>
|
||||
<button>OK</button>
|
||||
</dialog>
|
||||
<dialog id="d3">
|
||||
<p>foobar</p>
|
||||
<button id="b3">OK</button>
|
||||
</dialog>
|
||||
<dialog id="d4">
|
||||
<p>foobar</p>
|
||||
<button id="b4">OK</button>
|
||||
</dialog>
|
||||
<dialog id="d5">
|
||||
<p>foobar</p>
|
||||
<button id="b5">OK</button>
|
||||
</dialog>
|
||||
<dialog id="d6"></dialog>
|
||||
<dialog id="d7">
|
||||
<input id="i71" value="foobar">
|
||||
<input id="i72" value="foobar">
|
||||
<button id="b7">OK</button>
|
||||
</dialog>
|
||||
<dialog id="d8">
|
||||
<input id="i81" value="foobar">
|
||||
<input id="i82" value="foobar" autofocus>
|
||||
<button id="b8">OK</button>
|
||||
</dialog>
|
||||
<script>
|
||||
var d1 = document.getElementById('d1'),
|
||||
d2 = document.getElementById('d2'),
|
||||
d3 = document.getElementById('d3'),
|
||||
d4 = document.getElementById('d4'),
|
||||
d5 = document.getElementById('d5'),
|
||||
d6 = document.getElementById('d6'),
|
||||
d7 = document.getElementById('d7'),
|
||||
d8 = document.getElementById('d8'),
|
||||
b0 = document.getElementById('b0'),
|
||||
b1 = document.getElementById('b1'),
|
||||
b3 = document.getElementById('b3'),
|
||||
b4 = document.getElementById('b4'),
|
||||
b5 = document.getElementById('b5');
|
||||
|
||||
test(function(){
|
||||
assert_false(d1.open);
|
||||
assert_false(b0.commandDisabled);
|
||||
d1.showModal();
|
||||
this.add_cleanup(function() { d1.close(); });
|
||||
assert_true(d1.open);
|
||||
assert_true(b0.commandDisabled);
|
||||
assert_equals(document.activeElement, b1);
|
||||
});
|
||||
|
||||
test(function(){
|
||||
assert_throws("INVALID_STATE_ERR", function() {
|
||||
d2.showModal();
|
||||
this.add_cleanup(function() { d2.close(); });
|
||||
});
|
||||
}, "showModal() on a <dialog> that already has an open attribute throws an InvalidStateError exception");
|
||||
|
||||
test(function(){
|
||||
var d = document.createElement("dialog");
|
||||
assert_throws("INVALID_STATE_ERR", function() {
|
||||
d.showModal();
|
||||
this.add_cleanup(function() { d.close(); });
|
||||
});
|
||||
}, "showModal() on a <dialog> not in a Document throws an InvalidStateError exception");
|
||||
|
||||
test(function(){
|
||||
assert_false(d3.open);
|
||||
assert_false(b3.commandDisabled);
|
||||
assert_false(d4.open);
|
||||
assert_false(b4.commandDisabled);
|
||||
assert_false(d5.open);
|
||||
assert_false(b5.commandDisabled);
|
||||
d3.showModal();
|
||||
this.add_cleanup(function() { d3.close(); });
|
||||
d4.showModal();
|
||||
this.add_cleanup(function() { d4.close(); });
|
||||
d5.showModal();
|
||||
this.add_cleanup(function() { d5.close(); });
|
||||
assert_true(d3.open);
|
||||
assert_true(b3.commandDisabled);
|
||||
assert_true(d4.open);
|
||||
assert_true(b4.commandDisabled);
|
||||
assert_true(d5.open);
|
||||
assert_false(b5.commandDisabled);
|
||||
}, "when opening multiple dialogs, only the newest one is non-inert");
|
||||
|
||||
test(function(){
|
||||
assert_false(d6.open);
|
||||
d6.showModal();
|
||||
this.add_cleanup(function() { d6.close(); });
|
||||
assert_true(d6.open);
|
||||
assert_equals(document.activeElement, d6);
|
||||
}, "opening dialog without focusable children");
|
||||
|
||||
test(function(){
|
||||
assert_false(d7.open);
|
||||
d7.showModal();
|
||||
this.add_cleanup(function() { d7.close(); });
|
||||
assert_true(d7.open);
|
||||
assert_equals(document.activeElement, document.getElementById("i71"));
|
||||
}, "opening dialog with multiple focusable children");
|
||||
|
||||
test(function(){
|
||||
assert_false(d8.open);
|
||||
d8.showModal();
|
||||
this.add_cleanup(function() { d8.close(); });
|
||||
assert_true(d8.open);
|
||||
assert_equals(document.activeElement, document.getElementById("i82"));
|
||||
}, "opening dialog with multiple focusable children, one having the autofocus attribute");
|
||||
</script>
|
|
@ -0,0 +1,18 @@
|
|||
[
|
||||
{
|
||||
"id": "menus-intro",
|
||||
"original_id": "menus-intro"
|
||||
},
|
||||
{
|
||||
"id": "building-menus-and-toolbars",
|
||||
"original_id": "building-menus-and-toolbars"
|
||||
},
|
||||
{
|
||||
"id": "context-menus",
|
||||
"original_id": "context-menus"
|
||||
},
|
||||
{
|
||||
"id": "toolbars",
|
||||
"original_id": "toolbars"
|
||||
}
|
||||
]
|
Loading…
Add table
Add a link
Reference in a new issue