| Index: LayoutTests/imported/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-close.html
|
| diff --git a/LayoutTests/imported/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-close.html b/LayoutTests/imported/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-close.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8ffc01c75895ef46bdb8f10aac2f318b76b6336a
|
| --- /dev/null
|
| +++ b/LayoutTests/imported/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-close.html
|
| @@ -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>
|
|
|