Index: chrome/browser/prerender/prerender_contents.cc |
diff --git a/chrome/browser/prerender/prerender_contents.cc b/chrome/browser/prerender/prerender_contents.cc |
index 540e25dc82199502c9a3c250040c913a34edc452..73e089394aa2718380080238070c68a9ca2fac7f 100644 |
--- a/chrome/browser/prerender/prerender_contents.cc |
+++ b/chrome/browser/prerender/prerender_contents.cc |
@@ -8,7 +8,6 @@ |
#include <functional> |
#include <utility> |
-#include "base/process_util.h" |
#include "base/utf_string_conversions.h" |
#include "chrome/browser/history/history_tab_helper.h" |
#include "chrome/browser/history/history_types.h" |
@@ -43,33 +42,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( |
@@ -167,6 +139,11 @@ class PrerenderContents::TabContentsDelegateImpl |
PrerenderContents* prerender_contents_; |
}; |
+void PrerenderContents::Observer::OnPrerenderAddAlias( |
+ PrerenderContents* contents, |
+ const GURL& alias_url) { |
+} |
+ |
PrerenderContents::Observer::Observer() { |
} |
@@ -278,9 +255,6 @@ void PrerenderContents::StartPrerendering( |
session_storage_namespace_id_ = session_storage_namespace->id(); |
size_ = size; |
- InformRenderProcessAboutPrerender(prerender_url_, true, |
- creator_child_id_); |
- |
DCHECK(load_start_time_.is_null()); |
load_start_time_ = base::TimeTicks::Now(); |
@@ -387,14 +361,6 @@ PrerenderContents::~PrerenderContents() { |
prerender_manager_->RecordFinalStatusWithMatchCompleteStatus( |
origin_, experiment_id_, match_complete_status_, final_status_); |
- if (child_id_ != -1 && route_id_ != -1) { |
- for (std::vector<GURL>::const_iterator it = alias_urls_.begin(); |
- it != alias_urls_.end(); |
- ++it) { |
- InformRenderProcessAboutPrerender(*it, false, creator_child_id_); |
- } |
- } |
- |
// If we still have a WebContents, clean up anything we need to and then |
// destroy it. |
if (prerender_contents_.get()) |
@@ -406,6 +372,10 @@ void PrerenderContents::AddObserver(Observer* observer) { |
observer_list_.AddObserver(observer); |
} |
+void PrerenderContents::RemoveObserver(Observer* observer) { |
+ observer_list_.RemoveObserver(observer); |
+} |
+ |
void PrerenderContents::Observe(int type, |
const content::NotificationSource& source, |
const content::NotificationDetails& details) { |
@@ -501,6 +471,11 @@ void PrerenderContents::NotifyPrerenderStop() { |
observer_list_.Clear(); |
} |
+void PrerenderContents::NotifyPrerenderAddAlias(const GURL& alias_url) { |
+ FOR_EACH_OBSERVER(Observer, observer_list_, OnPrerenderAddAlias(this, |
+ alias_url)); |
+} |
+ |
void PrerenderContents::OnUpdateFaviconURL( |
int32 page_id, |
const std::vector<FaviconURL>& urls) { |
@@ -535,7 +510,7 @@ bool PrerenderContents::AddAliasURL(const GURL& url) { |
} |
alias_urls_.push_back(url); |
- InformRenderProcessAboutPrerender(url, true, creator_child_id_); |
+ NotifyPrerenderAddAlias(url); |
return true; |
} |