| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/prerender/prerender_manager.h" | 5 #include "chrome/browser/prerender/prerender_manager.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <functional> | 8 #include <functional> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 373 PrerenderHandle* PrerenderManager::AddPrerenderFromOmnibox( | 373 PrerenderHandle* PrerenderManager::AddPrerenderFromOmnibox( |
| 374 const GURL& url, | 374 const GURL& url, |
| 375 SessionStorageNamespace* session_storage_namespace, | 375 SessionStorageNamespace* session_storage_namespace, |
| 376 const gfx::Size& size) { | 376 const gfx::Size& size) { |
| 377 if (!IsOmniboxEnabled(profile_)) | 377 if (!IsOmniboxEnabled(profile_)) |
| 378 return NULL; | 378 return NULL; |
| 379 return AddPrerender(ORIGIN_OMNIBOX, -1, url, content::Referrer(), size, | 379 return AddPrerender(ORIGIN_OMNIBOX, -1, url, content::Referrer(), size, |
| 380 session_storage_namespace); | 380 session_storage_namespace); |
| 381 } | 381 } |
| 382 | 382 |
| 383 PrerenderHandle* PrerenderManager::AddPrerenderFromLocalPredictor( |
| 384 const GURL& url, |
| 385 SessionStorageNamespace* session_storage_namespace, |
| 386 const gfx::Size& size) { |
| 387 return AddPrerender(ORIGIN_LOCAL_PREDICTOR, -1, url, content::Referrer(), |
| 388 size, session_storage_namespace); |
| 389 } |
| 390 |
| 383 void PrerenderManager::DestroyPrerenderForRenderView( | 391 void PrerenderManager::DestroyPrerenderForRenderView( |
| 384 int process_id, int view_id, FinalStatus final_status) { | 392 int process_id, int view_id, FinalStatus final_status) { |
| 385 DCHECK(CalledOnValidThread()); | 393 DCHECK(CalledOnValidThread()); |
| 386 if (PrerenderData* prerender_data = | 394 if (PrerenderData* prerender_data = |
| 387 FindPrerenderDataForChildAndRoute(process_id, view_id)) { | 395 FindPrerenderDataForChildAndRoute(process_id, view_id)) { |
| 388 prerender_data->contents()->Destroy(final_status); | 396 prerender_data->contents()->Destroy(final_status); |
| 389 } | 397 } |
| 390 } | 398 } |
| 391 | 399 |
| 392 void PrerenderManager::CancelAllPrerenders() { | 400 void PrerenderManager::CancelAllPrerenders() { |
| (...skipping 725 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1118 // by a navigation and is unlikely to be the same site. | 1126 // by a navigation and is unlikely to be the same site. |
| 1119 RecordFinalStatus(origin, experiment, FINAL_STATUS_RATE_LIMIT_EXCEEDED); | 1127 RecordFinalStatus(origin, experiment, FINAL_STATUS_RATE_LIMIT_EXCEEDED); |
| 1120 return NULL; | 1128 return NULL; |
| 1121 } | 1129 } |
| 1122 | 1130 |
| 1123 PrerenderContents* prerender_contents = CreatePrerenderContents( | 1131 PrerenderContents* prerender_contents = CreatePrerenderContents( |
| 1124 url, referrer, origin, experiment); | 1132 url, referrer, origin, experiment); |
| 1125 DCHECK(prerender_contents); | 1133 DCHECK(prerender_contents); |
| 1126 active_prerenders_.push_back( | 1134 active_prerenders_.push_back( |
| 1127 new PrerenderData(this, prerender_contents, | 1135 new PrerenderData(this, prerender_contents, |
| 1128 GetExpiryTimeForNewPrerender())); | 1136 GetExpiryTimeForNewPrerender(origin))); |
| 1129 if (!prerender_contents->Init()) { | 1137 if (!prerender_contents->Init()) { |
| 1130 DCHECK(active_prerenders_.end() == | 1138 DCHECK(active_prerenders_.end() == |
| 1131 FindIteratorForPrerenderContents(prerender_contents)); | 1139 FindIteratorForPrerenderContents(prerender_contents)); |
| 1132 return NULL; | 1140 return NULL; |
| 1133 } | 1141 } |
| 1134 | 1142 |
| 1135 histograms_->RecordPrerenderStarted(origin); | 1143 histograms_->RecordPrerenderStarted(origin); |
| 1136 DCHECK(!prerender_contents->prerendering_has_started()); | 1144 DCHECK(!prerender_contents->prerendering_has_started()); |
| 1137 | 1145 |
| 1138 PrerenderHandle* prerender_handle = | 1146 PrerenderHandle* prerender_handle = |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1195 to_delete_prerenders_.clear(); | 1203 to_delete_prerenders_.clear(); |
| 1196 } | 1204 } |
| 1197 | 1205 |
| 1198 void PrerenderManager::PostCleanupTask() { | 1206 void PrerenderManager::PostCleanupTask() { |
| 1199 DCHECK(CalledOnValidThread()); | 1207 DCHECK(CalledOnValidThread()); |
| 1200 MessageLoop::current()->PostTask( | 1208 MessageLoop::current()->PostTask( |
| 1201 FROM_HERE, | 1209 FROM_HERE, |
| 1202 base::Bind(&PrerenderManager::PeriodicCleanup, AsWeakPtr())); | 1210 base::Bind(&PrerenderManager::PeriodicCleanup, AsWeakPtr())); |
| 1203 } | 1211 } |
| 1204 | 1212 |
| 1205 base::TimeTicks PrerenderManager::GetExpiryTimeForNewPrerender() const { | 1213 base::TimeTicks PrerenderManager::GetExpiryTimeForNewPrerender( |
| 1206 return GetCurrentTimeTicks() + config_.time_to_live; | 1214 Origin origin) const { |
| 1215 base::TimeDelta ttl = config_.time_to_live; |
| 1216 if (origin == ORIGIN_LOCAL_PREDICTOR) |
| 1217 ttl = base::TimeDelta::FromSeconds(180); |
| 1218 return GetCurrentTimeTicks() + ttl; |
| 1207 } | 1219 } |
| 1208 | 1220 |
| 1209 base::TimeTicks PrerenderManager::GetExpiryTimeForNavigatedAwayPrerender() | 1221 base::TimeTicks PrerenderManager::GetExpiryTimeForNavigatedAwayPrerender() |
| 1210 const { | 1222 const { |
| 1211 return GetCurrentTimeTicks() + config_.abandon_time_to_live; | 1223 return GetCurrentTimeTicks() + config_.abandon_time_to_live; |
| 1212 } | 1224 } |
| 1213 | 1225 |
| 1214 void PrerenderManager::DeleteOldEntries() { | 1226 void PrerenderManager::DeleteOldEntries() { |
| 1215 DCHECK(CalledOnValidThread()); | 1227 DCHECK(CalledOnValidThread()); |
| 1216 while (!active_prerenders_.empty()) { | 1228 while (!active_prerenders_.empty()) { |
| (...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1525 logged_in_state_->erase(domain_key); | 1537 logged_in_state_->erase(domain_key); |
| 1526 } | 1538 } |
| 1527 | 1539 |
| 1528 void PrerenderManager::LoggedInPredictorDataReceived( | 1540 void PrerenderManager::LoggedInPredictorDataReceived( |
| 1529 scoped_ptr<LoggedInStateMap> new_map) { | 1541 scoped_ptr<LoggedInStateMap> new_map) { |
| 1530 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1542 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 1531 logged_in_state_.swap(new_map); | 1543 logged_in_state_.swap(new_map); |
| 1532 } | 1544 } |
| 1533 | 1545 |
| 1534 } // namespace prerender | 1546 } // namespace prerender |
| OLD | NEW |