Only send annotations to matching frame
When the sidebar is connected to multiple guest frames it will send all incoming annotations to all frames. The result is typically that the annotation will anchor in one frame and orphan in the others. Depending on what order this happens in, the annotation will non-deterministically show up as an Annotation or Orphan in the sidebar. In order to determine which frames an annotation should be sent to in all cases, we'd either need the backend to return information about which search URIs an annotation matches or make a separate search request for each frame and record the associated frame with the results. This will require some significant refactoring of the annotation search service. As an interim step, make `FrameSyncService` send annotations only to a single frame based on matching URL, with a fallback to sending to the main frame if there is no exact match. This will work as expected for most pages, and is at least deterministic when it does fail. When we have a solution for being able to match annotations to frames more generally, we can adapt this code to use it. This is a partial solution to https://github.com/hypothesis/client/issues/3992.
Showing
Please register or sign in to comment