DescriptionDo not recursively delete prerenders from within deleting prerenders.
If a prerender is destroyed, and that reveals another runnable prerender, then we end up calling PrerenderManager::AddPrerender(), which calls to_delete_prerenders_.clear(), which deletes the prerender contents, setting the stage for problems when we continue executing PrerenderContents::Destroy().
There's two ways to fix this, but only one that works; my first thought was to make the stop notification the last thing in Destroy, but that's no good, since there could be multiple observers (and there's usually two, could be three or more...), and so we're safer that way, but it's not perfect.
The better option is to just rely on periodic cleanups to clear the pending delete list. The list was cleared in the old PrerenderManager::AddPrerender code because we used to do eviction there, so it was important to be clean. But that's less important now.
R=mmenke@chromium.org
BUG=167877
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=174813
Patch Set 1 #
Total comments: 4
Patch Set 2 : remediate #Patch Set 3 : EXPECT -> ASSERT #
Messages
Total messages: 7 (0 generated)
|