Bug 228271

Summary: WKUserContentController.removeAllScriptMessageHandlers() doesn't release the message handlers
Product: WebKit Reporter: zero.griffin
Component: WebKit2Assignee: Alex Christensen <achristensen>
Severity: Normal CC: achristensen, beidson, cdumez, ggaren, kkinnunen, peter, sihui_liu, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: Safari 14   
Hardware: All   
OS: macOS 11   
Description Flags
Patch none

Description zero.griffin 2021-07-25 03:04:13 PDT
Trying to remove all message handlers from a WKUserContentController using removeAllScriptMessageHandlers() doesn't seem to be working.

There is not an API to view all message handlers from a WKUserContentController, but I have noticed that trying to remove all of them using removeAllScriptMessageHandlers() doesn't release those handlers, as by adding them, the WKUserContentController seems to retain them.

This I can reproduce 100% of the time. And in comparison, using removeScriptMessageHandler(forName:) seems to be working fine, and the message handlers gets released.

Having a removeAllScriptMessageHandlers() is specially helpful when, like in my case, you have many different message handlers, with different names.

If necessary I can provide with a small working prototype to test it.

Comment 1 Alex Christensen 2021-07-26 15:55:51 PDT
Created attachment 434252 [details]
Comment 2 EWS 2021-07-26 16:58:33 PDT
Committed r280325 (239972@main): <https://commits.webkit.org/239972@main>

All reviewed patches have been landed. Closing bug and clearing flags on attachment 434252 [details].
Comment 3 Radar WebKit Bug Importer 2021-07-26 16:59:16 PDT
Comment 4 Alex Christensen 2021-10-20 08:06:08 PDT
*** Bug 231659 has been marked as a duplicate of this bug. ***