Skip to content

Commit

Permalink
fix(ext/node): count MessagePort message listeners in hasMessageEvent…
Browse files Browse the repository at this point in the history
…Listener (#23209)
  • Loading branch information
satyarohith committed Apr 4, 2024
1 parent de3f0b9 commit e01bc09
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
18 changes: 18 additions & 0 deletions ext/web/13_message_port.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ const {
Symbol,
SymbolFor,
SymbolIterator,
SafeArrayIterator,
TypeError,
} = primordials;
const {
Expand All @@ -40,6 +41,8 @@ import {
import { isDetachedBuffer } from "./06_streams.js";
import { DOMException } from "./01_dom_exception.js";

let messageEventListenerCount = 0;

class MessageChannel {
/** @type {MessagePort} */
#port1;
Expand Down Expand Up @@ -222,6 +225,20 @@ class MessagePort extends EventTarget {
}
}

removeEventListener(...args) {
if (args[0] == "message") {
messageEventListenerCount--;
}
super.removeEventListener(...new SafeArrayIterator(args));
}

addEventListener(...args) {
if (args[0] == "message") {
messageEventListenerCount++;
}
super.addEventListener(...new SafeArrayIterator(args));
}

[SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) {
return inspect(
createFilteredInspectProxy({
Expand Down Expand Up @@ -406,6 +423,7 @@ function structuredClone(value, options) {
export {
deserializeJsMessageData,
MessageChannel,
messageEventListenerCount,
MessagePort,
MessagePortIdSymbol,
MessagePortPrototype,
Expand Down
3 changes: 2 additions & 1 deletion runtime/js/99_main.js
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,8 @@ let isClosing = false;
let globalDispatchEvent;

function hasMessageEventListener() {
return event.listenerCount(globalThis, "message") > 0;
return event.listenerCount(globalThis, "message") > 0 ||
messagePort.messageEventListenerCount > 0;
}

async function pollForMessages() {
Expand Down

0 comments on commit e01bc09

Please sign in to comment.