Add built-in "connect" and "close" events to PortRPC
Add two built-in events to PortRPC which are dispatched when PortRPC connects to a port and when it is destroyed or the containing frame is unloaded. These events can be used in the counterpart PortRPC to confirm that the sender has successfully received and connected to the port, and to get notified when the port goes away. Sending the "close" event in the context of a window unloading in Safari <= 15 requires a workaround that involves registering a handler in the parent frame. This handler is currently installed only in the host frame. The new "close" event is used to replace the "frameDestroyed" message that was used by guests to notify the sidebar when it went away. This solves several problems: - It centralizes the workaround for https://bugs.webkit.org/show_bug.cgi?id=231167 in `post-rpc.js`, instead of having it spread between several modules. - It provides a way to tear down the guest-host connection when the guest goes away. - It provides a way to handle the case where a guest is unloaded before it has received and connected to the port, by having the host/sidebar frames expect the "connect" call within a timeout. This is not yet implemented.
Showing
Please register or sign in to comment