Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(995)

Unified Diff: chrome/browser/prerender/prerender_contents.cc

Issue 11316311: Make PrerenderHandle an observer of PrerenderContents. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase trunk & add upstream remediation Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/prerender/prerender_contents.cc
diff --git a/chrome/browser/prerender/prerender_contents.cc b/chrome/browser/prerender/prerender_contents.cc
index ad8c50f5b5721713f4460bc4c1e3cb2638614ac7..9351b2a4316c4ef7b43b65b7cf91271c843c799d 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() {
}
@@ -277,9 +254,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();
@@ -386,14 +360,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())
@@ -405,6 +371,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) {
@@ -500,6 +470,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::DidUpdateFaviconURL(
int32 page_id,
const std::vector<content::FaviconURL>& urls) {
@@ -534,7 +509,7 @@ bool PrerenderContents::AddAliasURL(const GURL& url) {
}
alias_urls_.push_back(url);
- InformRenderProcessAboutPrerender(url, true, creator_child_id_);
+ NotifyPrerenderAddAlias(url);
return true;
}

Powered by Google App Engine
This is Rietveld 408576698