Bug 228271 - WKUserContentController.removeAllScriptMessageHandlers() doesn't release the message handlers
Summary: WKUserContentController.removeAllScriptMessageHandlers() doesn't release the ...
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit2 (show other bugs)
Version: Safari 14
Hardware: All macOS 11
: P2 Normal
Assignee: Alex Christensen
Keywords: InRadar
: 231659 (view as bug list)
Depends on:
Reported: 2021-07-25 03:04 PDT by zero.griffin
Modified: 2021-10-20 08:06 PDT (History)
8 users (show)

See Also:

Patch (4.16 KB, patch)
2021-07-26 15:55 PDT, Alex Christensen
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
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. ***