Index: chrome/renderer/chrome_render_frame_observer.cc |
diff --git a/chrome/renderer/chrome_render_frame_observer.cc b/chrome/renderer/chrome_render_frame_observer.cc |
index 8f6594890a42e857d6e12308ea138abeae9eaa95..09375b3190bce359bb2f0c7ade76ea48117aa652 100644 |
--- a/chrome/renderer/chrome_render_frame_observer.cc |
+++ b/chrome/renderer/chrome_render_frame_observer.cc |
@@ -26,7 +26,13 @@ bool ChromeRenderFrameObserver::OnMessageReceived(const IPC::Message& message) { |
void ChromeRenderFrameObserver::OnSetIsPrerendering(bool is_prerendering) { |
if (is_prerendering) { |
- DCHECK(!prerender::PrerenderHelper::Get(render_frame())); |
+ // If the PrerenderHelper for this frame already exists, don't create it. It |
+ // can already be created for subframes during handling of |
+ // RenderFrameCreated, if the parent frame was prerendering at time of |
+ // subframe creation. |
+ if (prerender::PrerenderHelper::Get(render_frame())) |
+ return; |
+ |
// The PrerenderHelper will destroy itself either after recording histograms |
// or on destruction of the RenderView. |
new prerender::PrerenderHelper(render_frame()); |