AllowJavascriptParent.sys.mjs (686B)
1 let loadPromises = new WeakMap(); 2 3 export class AllowJavascriptParent extends JSWindowActorParent { 4 async receiveMessage(msg) { 5 switch (msg.name) { 6 case "LoadFired": { 7 let bc = this.browsingContext; 8 let deferred = loadPromises.get(bc); 9 if (deferred) { 10 loadPromises.delete(bc); 11 deferred.resolve(this); 12 } 13 break; 14 } 15 } 16 } 17 18 static promiseLoad(bc) { 19 let deferred = loadPromises.get(bc); 20 if (!deferred) { 21 deferred = {}; 22 deferred.promise = new Promise(resolve => { 23 deferred.resolve = resolve; 24 }); 25 loadPromises.set(bc, deferred); 26 } 27 return deferred.promise; 28 } 29 }