tor-browser

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

messageevent-constructor.https.html (5150B)


      1 <!DOCTYPE html>
      2 <title>MessageEvent constructor</title>
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script>
      6 <script>
      7 test(function() {
      8    assert_throws_js(
      9        TypeError,
     10        () => MessageEvent(""),
     11        "Calling MessageEvent constructor without 'new' must throw"
     12    );
     13 }, "MessageEvent constructor called as normal function");
     14 
     15 test(function() {
     16  var ev = new MessageEvent("test")
     17  assert_equals(ev.type, "test", "type attribute")
     18  assert_equals(ev.target, null, "target attribute")
     19  assert_equals(ev.currentTarget, null, "currentTarget attribute")
     20  assert_equals(ev.eventPhase, Event.NONE, "eventPhase attribute")
     21  assert_equals(ev.bubbles, false, "bubbles attribute")
     22  assert_equals(ev.cancelable, false, "cancelable attribute")
     23  assert_equals(ev.defaultPrevented, false, "defaultPrevented attribute")
     24  assert_equals(ev.isTrusted, false, "isTrusted attribute")
     25  assert_true(ev.timeStamp > 0, "timeStamp attribute")
     26  assert_true("initMessageEvent" in ev, "initMessageEvent operation")
     27  assert_equals(ev.data, null, "data attribute")
     28  assert_equals(ev.origin, "", "origin attribute")
     29  assert_equals(ev.lastEventId, "", "lastEventId attribute")
     30  assert_equals(ev.source, null, "source attribute")
     31  assert_array_equals(ev.ports, [], "ports attribute")
     32 }, "Default event values")
     33 
     34 test(function() {
     35  var channel = new MessageChannel()
     36  var ev = new MessageEvent("test", { data: "testData", origin: "testOrigin", lastEventId: "testId", source: window, ports: [channel.port1] })
     37  assert_equals(ev.type, "test", "type attribute")
     38  assert_equals(ev.data, "testData", "data attribute")
     39  assert_equals(ev.origin, "testOrigin", "origin attribute")
     40  assert_equals(ev.lastEventId, "testId", "lastEventId attribute")
     41  assert_equals(ev.source, window, "source attribute")
     42  assert_array_equals(ev.ports, [channel.port1], "ports attribute")
     43 }, "MessageEventInit dictionary")
     44 
     45 test(function() {
     46  assert_throws_js(TypeError, function() {
     47    new MessageEvent("test", { ports: null })
     48  })
     49 }, "Passing null for ports member")
     50 
     51 test(function() {
     52  var ev = new MessageEvent("test", { ports: [] })
     53  assert_true(Array.isArray(ev.ports), "Array.isArray() should return true")
     54  assert_true(Object.isFrozen(ev.ports), "Object.isFrozen() should return true")
     55  assert_equals(ev.ports, ev.ports, "ev.ports should return the same object")
     56 
     57  const oldPorts = ev.ports;
     58  ev.initMessageEvent("test", false, false, null, "", "", null, ev.ports);
     59  assert_not_equals(oldPorts, ev.ports, "initMessageEvent() changes ev.ports");
     60 }, "ports attribute should be a FrozenArray")
     61 
     62 test(function() {
     63  var ev = document.createEvent("messageevent");
     64  var channel = new MessageChannel()
     65  ev.initMessageEvent("test", true, false, "testData", "testOrigin", "testId", window, [channel.port1])
     66  assert_equals(ev.type, "test", "type attribute")
     67  assert_equals(ev.bubbles, true, "bubbles attribute")
     68  assert_equals(ev.cancelable, false, "bubbles attribute")
     69  assert_equals(ev.data, "testData", "data attribute")
     70  assert_equals(ev.origin, "testOrigin", "origin attribute")
     71  assert_equals(ev.lastEventId, "testId", "lastEventId attribute")
     72  assert_equals(ev.source, window, "source attribute")
     73  assert_array_equals(ev.ports, [channel.port1], "ports attribute")
     74 }, "initMessageEvent operation")
     75 
     76 test(function() {
     77  var ev = document.createEvent("messageevent")
     78  assert_throws_js(TypeError, function() {
     79    ev.initMessageEvent("test", true, false, "testData", "testOrigin", "testId", window, null)
     80  })
     81 }, "Passing null for ports parameter to initMessageEvent")
     82 
     83 test(function() {
     84  var ev = document.createEvent("messageevent")
     85  assert_equals(MessageEvent.prototype.initMessageEvent.length, 1, "MessageEvent.prototype.initMessageEvent.length should be 1")
     86  ev.initMessageEvent("test")
     87  assert_equals(ev.type, "test", "type attribute")
     88  assert_equals(ev.bubbles, false, "bubbles attribute")
     89  assert_equals(ev.cancelable, false, "bubbles attribute")
     90  assert_equals(ev.data, null, "data attribute")
     91  assert_equals(ev.origin, "", "origin attribute")
     92  assert_equals(ev.lastEventId, "", "lastEventId attribute")
     93  assert_equals(ev.source, null, "source attribute")
     94  assert_array_equals(ev.ports, [], "ports attribute")
     95 }, "initMessageEvent operation default parameter values")
     96 
     97 promise_test(function(t) {
     98    var worker_url = "/service-workers/service-worker/resources/empty-worker.js";
     99    var scope = "/service-workers/service-worker/resources/";
    100    var registration;
    101 
    102    return service_worker_unregister_and_register(t, worker_url, scope)
    103      .then(function(r) {
    104          registration = r;
    105          return wait_for_state(t, r.installing, "activated");
    106        })
    107      .then(function() {
    108          var ev = new MessageEvent("test", { source: registration.active });
    109          assert_equals(ev.source, registration.active, "source attribute should return the ServiceWorker");
    110          service_worker_unregister(t, scope);
    111        });
    112  }, "Passing ServiceWorker for source member");
    113 
    114 </script>