Merge pull request #12999 from Snuffleupagus/LoopbackPort-rm-sync

[api-minor] Remove support for synchronous event dispatching in `LoopbackPort`
This commit is contained in:
Tim van der Meij 2021-02-17 20:39:54 +01:00 committed by GitHub
commit 77862bdb8e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1624,9 +1624,8 @@ class PDFPageProxy {
}
class LoopbackPort {
constructor(defer = true) {
constructor() {
this._listeners = [];
this._defer = defer;
this._deferred = Promise.resolve(undefined);
}
@ -1670,7 +1669,7 @@ class LoopbackPort {
continue;
}
if (typeof desc.value === "function") {
if (value.hasOwnProperty && value.hasOwnProperty(i)) {
if (value.hasOwnProperty?.(i)) {
throw new Error(
`LoopbackPort.postMessage - cannot clone: ${value[i]}`
);
@ -1682,19 +1681,13 @@ class LoopbackPort {
return result;
}
if (!this._defer) {
this._listeners.forEach(listener => {
listener.call(this, { data: obj });
});
return;
}
const cloned = new WeakMap();
const e = { data: cloneValue(obj) };
const event = { data: cloneValue(obj) };
this._deferred.then(() => {
this._listeners.forEach(listener => {
listener.call(this, e);
});
for (const listener of this._listeners) {
listener.call(this, event);
}
});
}