• Robert Knight's avatar
    Add built-in "connect" and "close" events to PortRPC · 5ab98a3b
    Robert Knight authored
    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.
    5ab98a3b
Name
Last commit
Last update
.github Loading commit data...
bin Loading commit data...
dev-server Loading commit data...
docs Loading commit data...
embedding-examples Loading commit data...
images Loading commit data...
requirements Loading commit data...
scripts Loading commit data...
src Loading commit data...
.babelrc Loading commit data...
.dockerignore Loading commit data...
.eslintignore Loading commit data...
.eslintrc Loading commit data...
.gitignore Loading commit data...
.npmignore Loading commit data...
.npmrc Loading commit data...
.prettierignore Loading commit data...
.python-version Loading commit data...
CODE_OF_CONDUCT Loading commit data...
Dockerfile Loading commit data...
Jenkinsfile Loading commit data...
LICENSE Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
codecov.yml Loading commit data...
gulpfile.mjs Loading commit data...
package.json Loading commit data...
pyproject.toml Loading commit data...
requirements-dev.in Loading commit data...
rollup-boot.config.mjs Loading commit data...
rollup-tests.config.mjs Loading commit data...
rollup.config.mjs Loading commit data...
tailwind.config.mjs Loading commit data...
tox.ini Loading commit data...
tsconfig.json Loading commit data...
yarn.lock Loading commit data...