• Nick Stenning's avatar
    Ensure that frame-rpc event listeners are correctly torn down · 6ca273c1
    Nick Stenning authored
    When the client is destroyed, it's important that we correctly tear down
    the frame-rpc event listeners (bound to the document's `onmessage`
    event).
    
    These event listeners are responsible for relaying messages from the
    frame-rpc mechanism to various parts of the code on either side of the
    frame boundary, including the `AnnotationSync` component. If the
    frame-rpc channels aren't correctly torn down, they will hold a
    reference to the `Bridge` object, which in turn holds a reference to the
    `AnnotationSync` object, and thus old copies of `AnnotationSync` which
    should have been garbage-collected will continue to receive events from
    the brand new Hypothesis client.
    
    The most visible result of this problem was that repeated activation and
    deactivation of the client would result in increasing numbers of
    highlights being drawn on annotated text, as reported in
    hypothesis/h#3096.
    
    Fixes hypothesis/h#3096.
    6ca273c1
cross-frame-test.coffee 3.35 KB