| Index: chrome/browser/prerender/prerender_contents.cc
|
| ===================================================================
|
| --- chrome/browser/prerender/prerender_contents.cc (revision 239602)
|
| +++ chrome/browser/prerender/prerender_contents.cc (working copy)
|
| @@ -26,6 +26,7 @@
|
| #include "chrome/common/url_constants.h"
|
| #include "content/public/browser/browser_child_process_host.h"
|
| #include "content/public/browser/notification_service.h"
|
| +#include "content/public/browser/render_frame_host.h"
|
| #include "content/public/browser/render_process_host.h"
|
| #include "content/public/browser/render_view_host.h"
|
| #include "content/public/browser/resource_request_details.h"
|
| @@ -327,6 +328,14 @@
|
| prerender_contents_.get()->GetController().LoadURLWithParams(load_url_params);
|
| }
|
|
|
| +void PrerenderContents::PrerenderingDone() {
|
| + for (std::set<content::RenderFrameHost*>::iterator i =
|
| + render_frame_hosts_.begin(); i != render_frame_hosts_.end(); ++i) {
|
| + (*i)->Send(new PrerenderMsg_SetIsPrerendering((*i)->GetRoutingID(), false));
|
| + }
|
| + render_frame_hosts_.clear();
|
| +}
|
| +
|
| bool PrerenderContents::GetChildId(int* child_id) const {
|
| CHECK(child_id);
|
| DCHECK_GE(child_id_, -1);
|
| @@ -401,16 +410,6 @@
|
| content::Details<RenderViewHost> new_render_view_host(details);
|
| OnRenderViewHostCreated(new_render_view_host.ptr());
|
|
|
| - // When a new RenderView is created for a prerendering WebContents,
|
| - // tell the new RenderView it's being used for prerendering before any
|
| - // navigations occur. Note that this is always triggered before the
|
| - // first navigation, so there's no need to send the message just after
|
| - // the WebContents is created.
|
| - new_render_view_host->Send(
|
| - new PrerenderMsg_SetIsPrerendering(
|
| - new_render_view_host->GetRoutingID(),
|
| - true));
|
| -
|
| // Make sure the size of the RenderViewHost has been passed to the new
|
| // RenderView. Otherwise, the size may not be sent until the
|
| // RenderViewReady event makes it from the render process to the UI
|
| @@ -548,6 +547,22 @@
|
| Destroy(FINAL_STATUS_RENDERER_CRASHED);
|
| }
|
|
|
| +void PrerenderContents::RenderFrameCreated(
|
| + content::RenderFrameHost* render_frame_host) {
|
| + render_frame_hosts_.insert(render_frame_host);
|
| + // When a new RenderFrame is created for a prerendering WebContents, tell the
|
| + // new RenderFrame it's being used for prerendering before any navigations
|
| + // occur. Note that this is always triggered before the first navigation, so
|
| + // there's no need to send the message just after the WebContents is created.
|
| + render_frame_host->Send(new PrerenderMsg_SetIsPrerendering(
|
| + render_frame_host->GetRoutingID(), true));
|
| +}
|
| +
|
| +void PrerenderContents::RenderFrameDeleted(
|
| + content::RenderFrameHost* render_frame_host) {
|
| + render_frame_hosts_.erase(render_frame_host);
|
| +}
|
| +
|
| void PrerenderContents::DidStopLoading(
|
| content::RenderViewHost* render_view_host) {
|
| has_stopped_loading_ = true;
|
|
|