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() |