This is slightly complicated by the fact that the editor code wants to be able to set this from the content process, so we really need separate BrowsingContext and WindowContext flags, the latter of which can be set by the owning process. Differential Revision: https://phabricator.services.mozilla.com/D114899
32 lines
734 B
JavaScript
32 lines
734 B
JavaScript
"use strict";
|
|
var EXPORTED_SYMBOLS = ["AllowJavascriptParent"];
|
|
|
|
let loadPromises = new WeakMap();
|
|
|
|
class AllowJavascriptParent extends JSWindowActorParent {
|
|
async receiveMessage(msg) {
|
|
switch (msg.name) {
|
|
case "LoadFired":
|
|
let bc = this.browsingContext;
|
|
let deferred = loadPromises.get(bc);
|
|
if (deferred) {
|
|
loadPromises.delete(bc);
|
|
deferred.resolve(this);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
static promiseLoad(bc) {
|
|
let deferred = loadPromises.get(bc);
|
|
if (!deferred) {
|
|
deferred = {};
|
|
deferred.promise = new Promise(resolve => {
|
|
deferred.resolve = resolve;
|
|
});
|
|
loadPromises.set(bc, deferred);
|
|
}
|
|
return deferred.promise;
|
|
}
|
|
}
|