| Index: chrome/browser/prerender/prerender_contents.cc
|
| diff --git a/chrome/browser/prerender/prerender_contents.cc b/chrome/browser/prerender/prerender_contents.cc
|
| index 54ae9d016d323cdea5852991d649319fc19d92bc..7562414f8f54c32b44410f2889810addf290931a 100644
|
| --- a/chrome/browser/prerender/prerender_contents.cc
|
| +++ b/chrome/browser/prerender/prerender_contents.cc
|
| @@ -36,6 +36,7 @@
|
|
|
| using content::DownloadItem;
|
| using content::OpenURLParams;
|
| +using content::RenderProcessHost;
|
| using content::RenderViewHost;
|
| using content::ResourceRedirectDetails;
|
| using content::SessionStorageNamespace;
|
| @@ -43,33 +44,6 @@ using content::WebContents;
|
|
|
| namespace prerender {
|
|
|
| -namespace {
|
| -
|
| -// Tells the render process at |child_id| whether |url| is a new prerendered
|
| -// page, or whether |url| is being removed as a prerendered page. Currently
|
| -// this will only inform the render process that created the prerendered page
|
| -// with <link rel="prerender"> tags about it. This means that if the user
|
| -// clicks on a link for a prerendered URL in a different page, the prerender
|
| -// will not be swapped in.
|
| -void InformRenderProcessAboutPrerender(const GURL& url,
|
| - bool is_add,
|
| - int child_id) {
|
| - if (child_id < 0)
|
| - return;
|
| - content::RenderProcessHost* render_process_host =
|
| - content::RenderProcessHost::FromID(child_id);
|
| - if (!render_process_host)
|
| - return;
|
| - IPC::Message* message = NULL;
|
| - if (is_add)
|
| - message = new PrerenderMsg_AddPrerenderURL(url);
|
| - else
|
| - message = new PrerenderMsg_RemovePrerenderURL(url);
|
| - render_process_host->Send(message);
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| class PrerenderContentsFactoryImpl : public PrerenderContents::Factory {
|
| public:
|
| virtual PrerenderContents* CreatePrerenderContents(
|
| @@ -294,6 +268,7 @@ PrerenderContents::Factory* PrerenderContents::CreateFactory() {
|
|
|
| void PrerenderContents::StartPrerendering(
|
| int creator_child_id,
|
| + int prerender_id,
|
| const gfx::Size& size,
|
| SessionStorageNamespace* session_storage_namespace,
|
| bool is_control_group) {
|
| @@ -306,11 +281,12 @@ void PrerenderContents::StartPrerendering(
|
| DCHECK_EQ(1U, alias_urls_.size());
|
|
|
| creator_child_id_ = creator_child_id;
|
| + prerender_id_ = prerender_id;
|
| session_storage_namespace_id_ = session_storage_namespace->id();
|
| size_ = size;
|
|
|
| - InformRenderProcessAboutPrerender(prerender_url_, true,
|
| - creator_child_id_);
|
| + if (RenderProcessHost* host = RenderProcessHost::FromID(creator_child_id_))
|
| + host->Send(new PrerenderMsg_StartedPrerender(prerender_id_));
|
|
|
| DCHECK(load_start_time_.is_null());
|
| load_start_time_ = base::TimeTicks::Now();
|
| @@ -409,24 +385,18 @@ void PrerenderContents::set_final_status(FinalStatus final_status) {
|
| }
|
|
|
| PrerenderContents::~PrerenderContents() {
|
| - DCHECK(final_status_ != FINAL_STATUS_MAX);
|
| - DCHECK(prerendering_has_been_cancelled_ ||
|
| - final_status_ == FINAL_STATUS_USED);
|
| - DCHECK(origin_ != ORIGIN_MAX);
|
| + DCHECK_NE(FINAL_STATUS_MAX, final_status_);
|
| + DCHECK(
|
| + prerendering_has_been_cancelled_ || final_status_ == FINAL_STATUS_USED);
|
| + DCHECK_NE(ORIGIN_MAX, origin_);
|
|
|
| prerender_manager_->RecordFinalStatusWithMatchCompleteStatus(
|
| - origin_,
|
| - experiment_id_,
|
| - match_complete_status_,
|
| - final_status_);
|
| + origin_, experiment_id_, match_complete_status_, final_status_);
|
|
|
| if (child_id_ != -1 && route_id_ != -1) {
|
| prerender_tracker_->OnPrerenderingFinished(child_id_, route_id_);
|
| - for (std::vector<GURL>::const_iterator it = alias_urls_.begin();
|
| - it != alias_urls_.end();
|
| - ++it) {
|
| - InformRenderProcessAboutPrerender(*it, false, creator_child_id_);
|
| - }
|
| + if (RenderProcessHost* host = RenderProcessHost::FromID(creator_child_id_))
|
| + host->Send(new PrerenderMsg_StoppedPrerender(prerender_id_));
|
| }
|
|
|
| // If we still have a WebContents, clean up anything we need to and then
|
| @@ -549,7 +519,8 @@ bool PrerenderContents::AddAliasURL(const GURL& url) {
|
| }
|
|
|
| alias_urls_.push_back(url);
|
| - InformRenderProcessAboutPrerender(url, true, creator_child_id_);
|
| + if (RenderProcessHost* host = RenderProcessHost::FromID(creator_child_id_))
|
| + host->Send(new PrerenderMsg_AddAliasToPrerender(prerender_id_, url));
|
| return true;
|
| }
|
|
|
|
|