1. 02 Feb, 2022 3 commits
    • Robert Knight's avatar
    • Robert Knight's avatar
    • Robert Knight's avatar
      Revise how guest notifies host and sidebar when it is unloaded · 4b021476
      Robert Knight authored
      Change how the guest notifies other frames, specifically the sidebar and host,
      when it is unloaded. The host and sidebar now receive a `frameDestroyed` message
      from the corresponding guest port, which allows them to easily close the right
      port and remove it from the list of active guest ports.
      
      Due to a Safari bug (see code comments) we can't send the `frameDestroyed`
      messages from the guest frame while it is being unloaded. However it is possible
      to first transfer the port to the host frame and then have the host frame send
      the message on the same port. I also tried sending the message from the guest
      frame, and then transferring the port to the host frame but that didn't work.
      This workaround has the advantage that it is transparent to the receiver of the
      `frameDestroyed` message.
      
      This change is also a step towards possibly not relying on user-provided guest
      frame identifiers in the sidebar, which only become available once the
      `documentInfoChanged` call has been received. Instead the sidebar could
      use its own internal IDs for guest frames, avoiding the possibility for
      conflicts.
      
      Changes in detail:
      
       - Add `disconnect` method to PortRPC
      
       - When guest is unloaded, transfer ports to the host frame in a
         `hypothesisGuestUnloaded` message, and make the host frame dispatch
         `frameDestroyed` calls on these ports.
      
       - Handle `frameDestroyed` in sidebar by closing port, removing it from
         the active guest list and removing the associated frame from the
         store
      
       - Handle `frameDestroyed` in host frame by closing port and removing it
         from the active guest list
      4b021476
  2. 01 Feb, 2022 15 commits
  3. 31 Jan, 2022 19 commits
  4. 28 Jan, 2022 1 commit
  5. 27 Jan, 2022 1 commit
  6. 26 Jan, 2022 1 commit