| OLD | NEW |
| (Empty) | |
| 1 <!DOCTYPE html> |
| 2 <meta charset=utf-8> |
| 3 <title>The details element</title> |
| 4 <link rel="author" title="Denis Ah-Kang" href="mailto:denis@w3.org"> |
| 5 <link rel=help href="https://html.spec.whatwg.org/multipage/#the-details-element
"> |
| 6 <script src="../../../../../../resources/testharness.js"></script> |
| 7 <script src="../../../../../../resources/testharnessreport.js"></script> |
| 8 <div id="log"></div> |
| 9 <details id=details1> |
| 10 <summary>Lorem ipsum</summary> |
| 11 <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod te
mpor incididunt ut labore et dolore magna aliqua.</p> |
| 12 </details> |
| 13 <details id=details2 open> |
| 14 <summary>Lorem ipsum</summary> |
| 15 <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod te
mpor incididunt ut labore et dolore magna aliqua.</p> |
| 16 </details> |
| 17 <details id=details3 style="display:none;"> |
| 18 <summary>Lorem ipsum</summary> |
| 19 <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod te
mpor incididunt ut labore et dolore magna aliqua.</p> |
| 20 </details> |
| 21 <details id=details4> |
| 22 </details> |
| 23 <details id=details6> |
| 24 <summary>Lorem ipsum</summary> |
| 25 <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod te
mpor incididunt ut labore et dolore magna aliqua.</p> |
| 26 </details> |
| 27 <script> |
| 28 var t1 = async_test("Adding open to 'details' should fire a toggle event at th
e 'details' element"), |
| 29 t2 = async_test("Removing open from 'details' should fire a toggle event at th
e 'details' element"), |
| 30 t3 = async_test("Adding open to 'details' (display:none) should fire a toggle
event at the 'details' element"), |
| 31 t4 = async_test("Adding open from 'details' (no children) should fire a toggle
event at the 'details' element"), |
| 32 t6 = async_test("Calling open twice on 'details' fires only one toggle event")
, |
| 33 details1 = document.getElementById('details1'), |
| 34 details2 = document.getElementById('details2'), |
| 35 details3 = document.getElementById('details3'), |
| 36 details4 = document.getElementById('details4'), |
| 37 details6 = document.getElementById('details6'), |
| 38 loop=false; |
| 39 |
| 40 function testEvent(evt) { |
| 41 assert_true(evt.isTrusted, "event is trusted"); |
| 42 assert_false(evt.bubbles, "event doesn't bubble"); |
| 43 assert_false(evt.cancelable, "event is not cancelable"); |
| 44 assert_equals(Object.getPrototypeOf(evt), Event.prototype, "Prototype of tog
gle event is Event.prototype"); |
| 45 } |
| 46 |
| 47 details1.ontoggle = t1.step_func_done(function(evt) { |
| 48 assert_true(details1.open); |
| 49 testEvent(evt) |
| 50 }); |
| 51 details1.open = true; // opens details1 |
| 52 |
| 53 details2.ontoggle = t2.step_func_done(function(evt) { |
| 54 assert_false(details2.open); |
| 55 testEvent(evt); |
| 56 }); |
| 57 details2.open = false; // closes details2 |
| 58 |
| 59 details3.ontoggle = t3.step_func_done(function(evt) { |
| 60 assert_true(details3.open); |
| 61 testEvent(evt); |
| 62 }); |
| 63 details3.open = true; // opens details3 |
| 64 |
| 65 details4.ontoggle = t4.step_func_done(function(evt) { |
| 66 assert_true(details4.open); |
| 67 testEvent(evt); |
| 68 }); |
| 69 details4.open = true; // opens details4 |
| 70 |
| 71 async_test(function(t) { |
| 72 var details5 = document.createElement("details"); |
| 73 details5.ontoggle = t.step_func_done(function(evt) { |
| 74 assert_true(details5.open); |
| 75 testEvent(evt); |
| 76 }) |
| 77 details5.open = true; |
| 78 }, "Adding open to 'details' (not in the document) should fire a toggle event
at the 'details' element"); |
| 79 |
| 80 details6.open = true; |
| 81 details6.open = false; |
| 82 details6.ontoggle = t6.step_func(function() { |
| 83 if (loop) { |
| 84 assert_unreached("toggle event fired twice"); |
| 85 } else { |
| 86 loop = true; |
| 87 } |
| 88 }); |
| 89 setTimeout(t6.step_func(function() { |
| 90 assert_true(loop); |
| 91 t6.done(); |
| 92 }), 0); |
| 93 </script> |
| OLD | NEW |