• Fabrice de Gans-Riberi's avatar
    [fuchsia] Properly track RenderFrameHosts on cross-process navigations. · 8b1da07a
    Fabrice de Gans-Riberi authored
    Fix an issue triggered on cross-process navigations that would result
    in UrlRequestRewriteRulesManager incorrectly keeping track of live
    RenderFrameHosts for a given Frame. This happens because cross-process
    navigations trigger a RenderFrameCreated even for a FrameTreeNode ID
    before the RenderFrameDeleted event for the older RenderFrameHost. The
    sequence goes like this:
    * Frame creation
      * Tracking RFH IDs: []
    * RenderFrameCreated(0x1810) with FrameTreeNode ID 2.
      * Tracking RFH IDs: [2]
    * RenderFrameCreated(0xa410) with FrameTreeNode ID 2.
      * Tracking RFH IDs: [2]
    * RenderFrameDeleted(0x1810) with FrameTreeNode ID 2.
      * Tracking RFH IDs: []
    * RenderFrameDeleted(0xa410) with FrameTreeNode ID 2.
      * At this point, the DCHECK is triggered because there is no RFH
        with ID 2 being tracked.
    
    The map now keeps track of the currently active RenderFrameHost for a
    given FrameTreeNode ID so we can now know when it is safe to ignore a
    "second" RenderFrameDeleted event for the same FrameTreeNode ID.
    
    Bug: 1014281
    Test: Load gmail.com -> Refresh -> No DCHECK triggered.
    Change-Id: I82ce437c8c45984c695658d0e2d7deea45aad63e
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1864023
    Commit-Queue: Fabrice de Gans-Riberi <fdegans@chromium.org>
    Reviewed-by: default avatarWez <wez@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#707493}
    8b1da07a
url_request_rewrite_rules_manager.cc 7.58 KB