[fuchsia] Properly track RenderFrameHosts on cross-process navigations.
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:Wez <wez@chromium.org> Cr-Commit-Position: refs/heads/master@{#707493}
Showing
Please register or sign in to comment