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>