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> |