DescriptionFix the RenderFrameProxyHost mop-up logic in RenderFrameHostManager.
RenderFrameProxyHosts need to exist in a SiteInstance so long as
at least one active frame exists: when we're about to
trigger the (1 -> 0) transition in |active_frame_count|,
we need to destroy any lingering proxies.
Bug 444955 occurs because we don't check for the (1 -> 0) transition
when the last active frame happens to be a pending frame when it's
deleted.
Also fixed here is bug 473714, found by inspection,
where deletion of a not-live frame would incorrectly rambo
the RenderFrameProxyHosts that could potentially be needed by
another live RenderFrameHost. A new test demonstrates this
and verifies the fix.
TEST=content_unittests
BUG=444955, 473714
Committed: https://crrev.com/dfb21875dd6279d0a973eb24028205620d160cfe
Cr-Commit-Position: refs/heads/master@{#323921}
Patch Set 1 #Patch Set 2 : Fix second bug, clean up tests, everything passes locally #Patch Set 3 : Fix up crash logic, don't use forbidden C++11 features, add comments. #Patch Set 4 : Self-review cleanup. #
Total comments: 15
Patch Set 5 : Test rework, charlie's fixes #
Total comments: 1
Patch Set 6 : Charlie fixes. #
Total comments: 2
Patch Set 7 : EXPECT_ instead of ASSERT_ #
Messages
Total messages: 16 (6 generated)
|