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 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 prerender_contents_factory_(PrerenderContents::CreateFactory()), | 187 prerender_contents_factory_(PrerenderContents::CreateFactory()), |
188 last_prerender_start_time_(GetCurrentTimeTicks() - | 188 last_prerender_start_time_(GetCurrentTimeTicks() - |
189 base::TimeDelta::FromMilliseconds(kMinTimeBetweenPrerendersMs)), | 189 base::TimeDelta::FromMilliseconds(kMinTimeBetweenPrerendersMs)), |
190 prerender_history_(new PrerenderHistory(kHistoryLength)), | 190 prerender_history_(new PrerenderHistory(kHistoryLength)), |
191 histograms_(new PrerenderHistograms()), | 191 histograms_(new PrerenderHistograms()), |
192 profile_network_bytes_(0), | 192 profile_network_bytes_(0), |
193 last_recorded_profile_network_bytes_(0) { | 193 last_recorded_profile_network_bytes_(0) { |
194 // There are some assumptions that the PrerenderManager is on the UI thread. | 194 // There are some assumptions that the PrerenderManager is on the UI thread. |
195 // Any other checks simply make sure that the PrerenderManager is accessed on | 195 // Any other checks simply make sure that the PrerenderManager is accessed on |
196 // the same thread that it was created on. | 196 // the same thread that it was created on. |
197 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 197 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
198 | 198 |
199 // Certain experiments override our default config_ values. | 199 // Certain experiments override our default config_ values. |
200 switch (PrerenderManager::GetMode()) { | 200 switch (PrerenderManager::GetMode()) { |
201 case PrerenderManager::PRERENDER_MODE_EXPERIMENT_MULTI_PRERENDER_GROUP: | 201 case PrerenderManager::PRERENDER_MODE_EXPERIMENT_MULTI_PRERENDER_GROUP: |
202 config_.max_link_concurrency = 4; | 202 config_.max_link_concurrency = 4; |
203 config_.max_link_concurrency_per_launcher = 2; | 203 config_.max_link_concurrency_per_launcher = 2; |
204 break; | 204 break; |
205 case PrerenderManager::PRERENDER_MODE_EXPERIMENT_15MIN_TTL_GROUP: | 205 case PrerenderManager::PRERENDER_MODE_EXPERIMENT_15MIN_TTL_GROUP: |
206 config_.time_to_live = base::TimeDelta::FromMinutes(15); | 206 config_.time_to_live = base::TimeDelta::FromMinutes(15); |
207 break; | 207 break; |
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
548 } | 548 } |
549 | 549 |
550 // Destroy the old WebContents relatively promptly to reduce resource usage. | 550 // Destroy the old WebContents relatively promptly to reduce resource usage. |
551 PostCleanupTask(); | 551 PostCleanupTask(); |
552 } | 552 } |
553 | 553 |
554 void PrerenderManager::RecordPageLoadTimeNotSwappedIn( | 554 void PrerenderManager::RecordPageLoadTimeNotSwappedIn( |
555 Origin origin, | 555 Origin origin, |
556 base::TimeDelta page_load_time, | 556 base::TimeDelta page_load_time, |
557 const GURL& url) { | 557 const GURL& url) { |
558 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 558 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
559 histograms_->RecordPageLoadTimeNotSwappedIn(origin, page_load_time, url); | 559 histograms_->RecordPageLoadTimeNotSwappedIn(origin, page_load_time, url); |
560 } | 560 } |
561 | 561 |
562 void PrerenderManager::RecordPerceivedPageLoadTime( | 562 void PrerenderManager::RecordPerceivedPageLoadTime( |
563 Origin origin, | 563 Origin origin, |
564 NavigationType navigation_type, | 564 NavigationType navigation_type, |
565 base::TimeDelta perceived_page_load_time, | 565 base::TimeDelta perceived_page_load_time, |
566 double fraction_plt_elapsed_at_swap_in, | 566 double fraction_plt_elapsed_at_swap_in, |
567 const GURL& url) { | 567 const GURL& url) { |
568 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 568 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
569 if (!IsEnabled()) | 569 if (!IsEnabled()) |
570 return; | 570 return; |
571 | 571 |
572 histograms_->RecordPerceivedPageLoadTime( | 572 histograms_->RecordPerceivedPageLoadTime( |
573 origin, perceived_page_load_time, navigation_type, url); | 573 origin, perceived_page_load_time, navigation_type, url); |
574 | 574 |
575 if (navigation_type == NAVIGATION_TYPE_PRERENDERED) { | 575 if (navigation_type == NAVIGATION_TYPE_PRERENDERED) { |
576 histograms_->RecordPercentLoadDoneAtSwapin( | 576 histograms_->RecordPercentLoadDoneAtSwapin( |
577 origin, fraction_plt_elapsed_at_swap_in); | 577 origin, fraction_plt_elapsed_at_swap_in); |
578 } | 578 } |
(...skipping 679 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1258 } | 1258 } |
1259 | 1259 |
1260 void PrerenderManager::AddProfileNetworkBytesIfEnabled(int64 bytes) { | 1260 void PrerenderManager::AddProfileNetworkBytesIfEnabled(int64 bytes) { |
1261 DCHECK_GE(bytes, 0); | 1261 DCHECK_GE(bytes, 0); |
1262 if (IsEnabled() && ActuallyPrerendering()) | 1262 if (IsEnabled() && ActuallyPrerendering()) |
1263 profile_network_bytes_ += bytes; | 1263 profile_network_bytes_ += bytes; |
1264 } | 1264 } |
1265 | 1265 |
1266 void PrerenderManager::AddPrerenderProcessHost( | 1266 void PrerenderManager::AddPrerenderProcessHost( |
1267 content::RenderProcessHost* process_host) { | 1267 content::RenderProcessHost* process_host) { |
1268 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1268 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
1269 DCHECK(prerender_process_hosts_.find(process_host) == | 1269 DCHECK(prerender_process_hosts_.find(process_host) == |
1270 prerender_process_hosts_.end()); | 1270 prerender_process_hosts_.end()); |
1271 prerender_process_hosts_.insert(process_host); | 1271 prerender_process_hosts_.insert(process_host); |
1272 process_host->AddObserver(this); | 1272 process_host->AddObserver(this); |
1273 } | 1273 } |
1274 | 1274 |
1275 bool PrerenderManager::MayReuseProcessHost( | 1275 bool PrerenderManager::MayReuseProcessHost( |
1276 content::RenderProcessHost* process_host) { | 1276 content::RenderProcessHost* process_host) { |
1277 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1277 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
1278 // Isolate prerender processes to make the resource monitoring check more | 1278 // Isolate prerender processes to make the resource monitoring check more |
1279 // accurate. | 1279 // accurate. |
1280 return (prerender_process_hosts_.find(process_host) == | 1280 return (prerender_process_hosts_.find(process_host) == |
1281 prerender_process_hosts_.end()); | 1281 prerender_process_hosts_.end()); |
1282 } | 1282 } |
1283 | 1283 |
1284 void PrerenderManager::RenderProcessHostDestroyed( | 1284 void PrerenderManager::RenderProcessHostDestroyed( |
1285 content::RenderProcessHost* host) { | 1285 content::RenderProcessHost* host) { |
1286 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1286 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
1287 size_t erased = prerender_process_hosts_.erase(host); | 1287 size_t erased = prerender_process_hosts_.erase(host); |
1288 DCHECK_EQ(1u, erased); | 1288 DCHECK_EQ(1u, erased); |
1289 } | 1289 } |
1290 | 1290 |
1291 } // namespace prerender | 1291 } // namespace prerender |
OLD | NEW |