• Robert Knight's avatar
    Normalize multi-range selections to a single range in Firefox · 6eb68bb6
    Robert Knight authored
    There are situations where Firefox creates a selection with multiple
    ranges, even though the spec forbids this. In various places in our code
    we called `selection.getRangeAt(0)` assuming there would only be one
    range. In the case where FF had created multiple ranges, this led to
    only part of the user's selection being respected.
    
     - Modifying the `selectedRange` utility to combine multi-range
       selections into a single Range, so that the results in Firefox are
       the same as in other browsers.
    
     - Replacing various direct calls to `selection.getRangeAt(0)` with
       calls to `selectedRange` so that they take get this normalization
       applied.
    
       In the tests for `Guest`, this led to refactoring to make some tests
       less tied to implementation details.
    
    Fixes https://github.com/hypothesis/client/issues/5485
    6eb68bb6
selection-observer.ts 2.83 KB