origin-from-extendablemessageevent.any.js (1017B)
1 // META: title=`Origin.from(ExtendableMessageEvent)` 2 // META: global=serviceworker 3 // META: script=/common/get-host-info.sub.js 4 5 function WorkerActivationPromise() { 6 return new Promise((resolve) => { 7 if (registration.active) { 8 resolve(); 9 return; 10 } 11 self.addEventListener('activate', () => { resolve(); }); 12 }); 13 } 14 15 test(t => { 16 const e = new ExtendableMessageEvent("message", { origin: get_host_info().ORIGIN }); 17 assert_throws_js(TypeError, _ => Origin.from(e)); 18 }, "Constructed `ExtendableMessageEvent` objects have no real origins."); 19 20 promise_test(async t => { 21 await WorkerActivationPromise(); 22 23 return new Promise(resolve => { 24 self.addEventListener("message", e => { 25 const origin = Origin.from(e); 26 assert_true(!!origin); 27 assert_false(origin.opaque); 28 assert_true(origin.isSameOrigin(Origin.from(self))); 29 resolve(); 30 }); 31 32 self.registration.active.postMessage({ type: "Hi" }); 33 }); 34 }, "Posted `ExtendableMessageEvent` objects have origins.");