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