inline-event-handler-ordering.html (2103B)
1 <!doctype html> 2 <meta charset="utf-8"> 3 <title>Inline event handlers retain their ordering even when invalid</title> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <body> 7 <script> 8 setup({ allow_uncaught_exception: true }); 9 var events = []; 10 11 test(function() { 12 events = []; 13 var e = document.createElement("div"); 14 document.body.appendChild(e); 15 e.addEventListener("click", function() { events.push("ONE") }); 16 e.setAttribute("onclick", "window.open("); 17 e.addEventListener("click", function() { events.push("THREE") }); 18 // Try to compile the event handler. 19 e.onclick; 20 e.setAttribute("onclick", "events.push('TWO')"); 21 e.dispatchEvent(new Event("click")); 22 var expected_events = ["ONE", "TWO", "THREE"]; 23 assert_array_equals(events, expected_events); 24 }, "Inline event handlers retain their ordering when invalid and force-compiled"); 25 26 test(function() { 27 events = []; 28 var e = document.createElement("div"); 29 document.body.appendChild(e); 30 e.addEventListener("click", function() { events.push("ONE") }); 31 e.setAttribute("onclick", "window.open("); 32 e.addEventListener("click", function() { events.push("THREE") }); 33 e.dispatchEvent(new Event("click")); 34 e.setAttribute("onclick", "events.push('TWO')"); 35 e.dispatchEvent(new Event("click")); 36 var expected_events = ["ONE", "THREE", "ONE", "TWO", "THREE"]; 37 assert_array_equals(events, expected_events); 38 }, "Inline event handlers retain their ordering when invalid and force-compiled via dispatch"); 39 40 test(function() { 41 events = []; 42 var e = document.createElement("div"); 43 document.body.appendChild(e); 44 e.addEventListener("click", function() { events.push("ONE") }); 45 e.setAttribute("onclick", "window.open("); 46 e.addEventListener("click", function() { events.push("THREE") }); 47 e.setAttribute("onclick", "events.push('TWO')"); 48 e.dispatchEvent(new Event("click")); 49 var expected_events = ["ONE", "TWO", "THREE"]; 50 assert_array_equals(events, expected_events); 51 }, "Inline event handlers retain their ordering when invalid and lazy-compiled"); 52 </script> 53 </body>