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

Unified Diff: chrome/renderer/prerender/prerender_dispatcher.cc

Issue 15027009: Broadcast prerender URLs to all render processes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More unit tests Created 7 years, 7 months 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/renderer/prerender/prerender_dispatcher.cc
diff --git a/chrome/renderer/prerender/prerender_dispatcher.cc b/chrome/renderer/prerender/prerender_dispatcher.cc
index 7739fb5ec3d483418e6c2b417e49723935afc9bc..c5d5c851e809eb8e9f30c8a2dfe01d5432a5de7e 100644
--- a/chrome/renderer/prerender/prerender_dispatcher.cc
+++ b/chrome/renderer/prerender/prerender_dispatcher.cc
@@ -43,7 +43,6 @@ void PrerenderDispatcher::OnPrerenderStart(int prerender_id) {
return;
prerender.didStartPrerender();
- OnPrerenderAddAlias(prerender_id, prerender.url());
}
void PrerenderDispatcher::OnPrerenderStopLoading(int prerender_id) {
@@ -58,11 +57,18 @@ void PrerenderDispatcher::OnPrerenderStopLoading(int prerender_id) {
prerender.didSendLoadForPrerender();
}
-void PrerenderDispatcher::OnPrerenderAddAlias(int prerender_id,
- const GURL& url) {
- DCHECK_NE(0u, prerenders_.count(prerender_id));
- running_prerender_urls_.insert(
- std::multimap<GURL, int>::value_type(url, prerender_id));
+void PrerenderDispatcher::OnPrerenderAddAlias(const GURL& alias) {
gavinp 2013/05/13 16:30:27 Initially I wanted to ask for: DCHECK_LT(0, prere
cbentzel 2013/05/13 22:33:05 Yes, that's why it doesn't work.
+ running_prerender_urls_.insert(alias);
+}
+
+void PrerenderDispatcher::OnPrerenderRemoveAliases(
+ const std::vector<GURL>& aliases) {
+ for (size_t i = 0; i < aliases.size(); ++i) {
+ std::multiset<GURL>::iterator it = running_prerender_urls_.find(aliases[i]);
+ if (it != running_prerender_urls_.end()) {
+ running_prerender_urls_.erase(it);
+ }
+ }
}
void PrerenderDispatcher::OnPrerenderStop(int prerender_id) {
@@ -78,17 +84,6 @@ void PrerenderDispatcher::OnPrerenderStop(int prerender_id) {
// This may not be that big of a deal in practice, since the newly created tab
// is unlikely to go to the prerendered page.
prerenders_.erase(prerender_id);
-
- std::multimap<GURL, int>::iterator it = running_prerender_urls_.begin();
- while (it != running_prerender_urls_.end()) {
- std::multimap<GURL, int>::iterator next = it;
- ++next;
-
- if (it->second == prerender_id)
- running_prerender_urls_.erase(it);
-
- it = next;
- }
}
bool PrerenderDispatcher::OnControlMessageReceived(
@@ -99,6 +94,8 @@ bool PrerenderDispatcher::OnControlMessageReceived(
IPC_MESSAGE_HANDLER(PrerenderMsg_OnPrerenderStopLoading,
OnPrerenderStopLoading)
IPC_MESSAGE_HANDLER(PrerenderMsg_OnPrerenderAddAlias, OnPrerenderAddAlias)
+ IPC_MESSAGE_HANDLER(PrerenderMsg_OnPrerenderRemoveAliases,
+ OnPrerenderRemoveAliases)
IPC_MESSAGE_HANDLER(PrerenderMsg_OnPrerenderStop, OnPrerenderStop)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
« no previous file with comments | « chrome/renderer/prerender/prerender_dispatcher.h ('k') | chrome/renderer/prerender/prerender_dispatcher_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698