event-handler-attributes-windowless-body.html (2527B)
1 <!doctype html> 2 <meta charset="utf-8"> 3 <title></title> 4 <body></body> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 <script src="/resources/WebIDLParser.js"></script> 8 <script src="resources/event-handler-body.js"></script> 9 <script> 10 setup({ explicit_done: true }); 11 const elements = ['body', 'frameset']; 12 handlersListPromise.then(({ shadowedHandlers, notShadowedHandlers }) => { 13 elements.forEach(function (elementName) { 14 shadowedHandlers.forEach(function (eventName) { 15 var handlerName = "on" + eventName; 16 17 test(function() { 18 var windowHandler = function () { return "Handler attached to the window"; }; 19 window[handlerName] = windowHandler; 20 21 var d = (new DOMParser).parseFromString('', 'text/html'); 22 var b = d.createElement(elementName); 23 24 assert_equals(b[handlerName], null); 25 26 window[handlerName] = null; 27 }, "Return null when getting the " + eventName + " event handler of a windowless " + elementName); 28 29 test(function() { 30 var windowHandler = function () { return "Handler attached to the window"; }; 31 window[handlerName] = windowHandler; 32 33 var d = (new DOMParser).parseFromString('', 'text/html'); 34 var b = d.createElement(elementName); 35 b[handlerName] = function() { return "Handler attached to windowless element"; }; 36 37 assert_equals(window[handlerName], windowHandler); 38 assert_equals(b[handlerName], null); 39 40 // Clean up window event handler 41 window[handlerName] = null; 42 }, "Ignore setting of " + eventName + " window event handlers on windowless " + elementName); 43 }); 44 45 notShadowedHandlers.forEach(function (eventName) { 46 var handlerName = "on" + eventName; 47 48 test(function() { 49 var windowHandler = function () { return "Handler attached to the window"; }; 50 window[handlerName] = windowHandler; 51 52 var d = (new DOMParser).parseFromString('', 'text/html'); 53 var b = d.createElement(elementName); 54 55 assert_equals(b[handlerName], null); 56 57 var elementHandler = function () { return "Handler attached to the element"; }; 58 b[handlerName] = elementHandler; 59 60 assert_equals(window[handlerName], windowHandler); 61 assert_equals(b[handlerName], elementHandler); 62 63 // Clean up window event handler 64 window[handlerName] = null; 65 }, eventName + " is unaffected on a windowless " + elementName); 66 }); 67 }); 68 69 done(); 70 }); 71 </script>