diff options
author | Satya Rohith <me@satyarohith.com> | 2024-04-04 20:38:51 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-04 17:08:51 +0200 |
commit | e01bc09573ccfee7f862c9ba2fdd7e829353b14e (patch) | |
tree | 0104972e76ed12be13a097c2009c1e0cbba4e405 /ext/web/13_message_port.js | |
parent | de3f0b93f50d8a0164a89ffdb7b8595950aab9ce (diff) |
fix(ext/node): count MessagePort message listeners in hasMessageEventListener (#23209)
Diffstat (limited to 'ext/web/13_message_port.js')
-rw-r--r-- | ext/web/13_message_port.js | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/ext/web/13_message_port.js b/ext/web/13_message_port.js index 83470c895..24982a982 100644 --- a/ext/web/13_message_port.js +++ b/ext/web/13_message_port.js @@ -22,6 +22,7 @@ const { Symbol, SymbolFor, SymbolIterator, + SafeArrayIterator, TypeError, } = primordials; const { @@ -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; @@ -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({ @@ -406,6 +423,7 @@ function structuredClone(value, options) { export { deserializeJsMessageData, MessageChannel, + messageEventListenerCount, MessagePort, MessagePortIdSymbol, MessagePortPrototype, |