tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>