• 
      

    Fix a focus recursion crash with multiple modalboxes on screen.

    Review Request #13856 — Created May 14, 2024 and submitted — Latest diff uploaded

    Information

    Djblets
    release-5.x

    Reviewers

    Back in 2020, I did some work to add accessibility to modalBox, which
    involved also ensuring that keyboard input remained restricted to the
    box.

    This ended up causing crashes when there were multiple boxes on the
    screen. Any focus within the latest modalbox would cause a previous
    modalbox to steal focus, which would cause the latest to steal focus
    back, and so on until the browser crashed the attempt.

    This was only noticeable if you had the JavaScript console open, but is
    clearly not ideal.

    This change updates the behavior to only attempt to steal for the latest
    modalbox. Focus management is now performed in a central function, which
    only exists once and only while there's a modalbox on screen. An array
    of modalboxes is used to track the stack of modalboxes.

    Tested the Discard Review modalbox within the Review Dialog modalbox on
    both Chrome and Firefox. Verified that focus behavior continued to work,
    and that the modalboxes no longer triggered recursion errors during
    focus changes or dialog closes.

    Commits

    Files