Chromium Code Reviews| 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 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 231 : url(url), | 231 : url(url), |
| 232 time(time) { | 232 time(time) { |
| 233 } | 233 } |
| 234 | 234 |
| 235 GURL url; | 235 GURL url; |
| 236 base::TimeTicks time; | 236 base::TimeTicks time; |
| 237 }; | 237 }; |
| 238 | 238 |
| 239 PrerenderManager::PrerenderManager(Profile* profile, | 239 PrerenderManager::PrerenderManager(Profile* profile, |
| 240 PrerenderTracker* prerender_tracker) | 240 PrerenderTracker* prerender_tracker) |
| 241 : enabled_(true), | 241 : profile_(profile), |
| 242 profile_(profile), | |
| 243 prerender_tracker_(prerender_tracker), | 242 prerender_tracker_(prerender_tracker), |
| 244 prerender_contents_factory_(PrerenderContents::CreateFactory()), | 243 prerender_contents_factory_(PrerenderContents::CreateFactory()), |
| 245 last_prerender_start_time_(GetCurrentTimeTicks() - | 244 last_prerender_start_time_(GetCurrentTimeTicks() - |
| 246 base::TimeDelta::FromMilliseconds(kMinTimeBetweenPrerendersMs)), | 245 base::TimeDelta::FromMilliseconds(kMinTimeBetweenPrerendersMs)), |
| 247 prerender_history_(new PrerenderHistory(kHistoryLength)), | 246 prerender_history_(new PrerenderHistory(kHistoryLength)), |
| 248 histograms_(new PrerenderHistograms()), | 247 histograms_(new PrerenderHistograms()), |
| 249 profile_network_bytes_(0), | 248 profile_network_bytes_(0), |
| 250 last_recorded_profile_network_bytes_(0), | 249 last_recorded_profile_network_bytes_(0), |
| 251 cookie_store_loaded_(false) { | 250 cookie_store_loaded_(false) { |
| 252 // There are some assumptions that the PrerenderManager is on the UI thread. | 251 // There are some assumptions that the PrerenderManager is on the UI thread. |
| (...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 734 | 733 |
| 735 if (navigation_type == NAVIGATION_TYPE_PRERENDERED) { | 734 if (navigation_type == NAVIGATION_TYPE_PRERENDERED) { |
| 736 histograms_->RecordPercentLoadDoneAtSwapin( | 735 histograms_->RecordPercentLoadDoneAtSwapin( |
| 737 origin, fraction_plt_elapsed_at_swap_in); | 736 origin, fraction_plt_elapsed_at_swap_in); |
| 738 } | 737 } |
| 739 if (local_predictor_) { | 738 if (local_predictor_) { |
| 740 local_predictor_->OnPLTEventForURL(url, perceived_page_load_time); | 739 local_predictor_->OnPLTEventForURL(url, perceived_page_load_time); |
| 741 } | 740 } |
| 742 } | 741 } |
| 743 | 742 |
| 744 void PrerenderManager::set_enabled(bool enabled) { | |
| 745 DCHECK(CalledOnValidThread()); | |
| 746 enabled_ = enabled; | |
| 747 } | |
| 748 | |
| 749 // static | 743 // static |
| 750 PrerenderManager::PrerenderManagerMode PrerenderManager::GetMode() { | 744 PrerenderManager::PrerenderManagerMode PrerenderManager::GetMode() { |
| 751 return mode_; | 745 return mode_; |
| 752 } | 746 } |
| 753 | 747 |
| 754 // static | 748 // static |
| 755 void PrerenderManager::SetMode(PrerenderManagerMode mode) { | 749 void PrerenderManager::SetMode(PrerenderManagerMode mode) { |
| 756 mode_ = mode; | 750 mode_ = mode; |
| 757 } | 751 } |
| 758 | 752 |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 926 // static | 920 // static |
| 927 bool PrerenderManager::DoesSubresourceURLHaveValidScheme(const GURL& url) { | 921 bool PrerenderManager::DoesSubresourceURLHaveValidScheme(const GURL& url) { |
| 928 return DoesURLHaveValidScheme(url) || url == GURL(url::kAboutBlankURL); | 922 return DoesURLHaveValidScheme(url) || url == GURL(url::kAboutBlankURL); |
| 929 } | 923 } |
| 930 | 924 |
| 931 base::DictionaryValue* PrerenderManager::GetAsValue() const { | 925 base::DictionaryValue* PrerenderManager::GetAsValue() const { |
| 932 DCHECK(CalledOnValidThread()); | 926 DCHECK(CalledOnValidThread()); |
| 933 base::DictionaryValue* dict_value = new base::DictionaryValue(); | 927 base::DictionaryValue* dict_value = new base::DictionaryValue(); |
| 934 dict_value->Set("history", prerender_history_->GetEntriesAsValue()); | 928 dict_value->Set("history", prerender_history_->GetEntriesAsValue()); |
| 935 dict_value->Set("active", GetActivePrerendersAsValue()); | 929 dict_value->Set("active", GetActivePrerendersAsValue()); |
| 936 dict_value->SetBoolean("enabled", enabled_); | |
| 937 dict_value->SetBoolean("omnibox_enabled", IsOmniboxEnabled(profile_)); | 930 dict_value->SetBoolean("omnibox_enabled", IsOmniboxEnabled(profile_)); |
|
mmenke
2014/09/03 14:30:55
Should keep the value you removed here, and just s
Bence
2014/09/03 17:05:18
Done.
| |
| 938 // If prerender is disabled via a flag this method is not even called. | 931 // If prerender is disabled via a flag this method is not even called. |
| 939 std::string enabled_note; | 932 std::string enabled_note; |
| 940 if (IsControlGroup(kNoExperiment)) | 933 if (IsControlGroup(kNoExperiment)) |
| 941 enabled_note += "(Control group: Not actually prerendering) "; | 934 enabled_note += "(Control group: Not actually prerendering) "; |
| 942 if (IsNoUseGroup()) | 935 if (IsNoUseGroup()) |
| 943 enabled_note += "(No-use group: Not swapping in prerendered pages) "; | 936 enabled_note += "(No-use group: Not swapping in prerendered pages) "; |
| 944 if (GetMode() == PRERENDER_MODE_EXPERIMENT_15MIN_TTL_GROUP) | 937 if (GetMode() == PRERENDER_MODE_EXPERIMENT_15MIN_TTL_GROUP) |
| 945 enabled_note += | 938 enabled_note += |
| 946 "(15 min TTL group: Extended prerender eviction to 15 mins) "; | 939 "(15 min TTL group: Extended prerender eviction to 15 mins) "; |
| 947 dict_value->SetString("enabled_note", enabled_note); | 940 dict_value->SetString("enabled_note", enabled_note); |
| (...skipping 906 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1854 profile_network_bytes_ - last_recorded_profile_network_bytes_; | 1847 profile_network_bytes_ - last_recorded_profile_network_bytes_; |
| 1855 last_recorded_profile_network_bytes_ = profile_network_bytes_; | 1848 last_recorded_profile_network_bytes_ = profile_network_bytes_; |
| 1856 DCHECK_GE(recent_profile_bytes, 0); | 1849 DCHECK_GE(recent_profile_bytes, 0); |
| 1857 histograms_->RecordNetworkBytes( | 1850 histograms_->RecordNetworkBytes( |
| 1858 origin, used, prerender_bytes, recent_profile_bytes); | 1851 origin, used, prerender_bytes, recent_profile_bytes); |
| 1859 } | 1852 } |
| 1860 | 1853 |
| 1861 bool PrerenderManager::IsEnabled() const { | 1854 bool PrerenderManager::IsEnabled() const { |
| 1862 DCHECK(CalledOnValidThread()); | 1855 DCHECK(CalledOnValidThread()); |
| 1863 | 1856 |
| 1864 if (!enabled_) | |
| 1865 return false; | |
| 1866 return chrome_browser_net::CanPrefetchAndPrerenderUI(profile_->GetPrefs()); | 1857 return chrome_browser_net::CanPrefetchAndPrerenderUI(profile_->GetPrefs()); |
| 1867 } | 1858 } |
| 1868 | 1859 |
| 1869 void PrerenderManager::AddProfileNetworkBytesIfEnabled(int64 bytes) { | 1860 void PrerenderManager::AddProfileNetworkBytesIfEnabled(int64 bytes) { |
| 1870 DCHECK_GE(bytes, 0); | 1861 DCHECK_GE(bytes, 0); |
| 1871 if (IsEnabled() && ActuallyPrerendering()) | 1862 if (IsEnabled() && ActuallyPrerendering()) |
| 1872 profile_network_bytes_ += bytes; | 1863 profile_network_bytes_ += bytes; |
| 1873 } | 1864 } |
| 1874 | 1865 |
| 1875 void PrerenderManager::OnCookieStoreLoaded() { | 1866 void PrerenderManager::OnCookieStoreLoaded() { |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 1902 content::RenderProcessHost* host) { | 1893 content::RenderProcessHost* host) { |
| 1903 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1894 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 1904 prerender_process_hosts_.erase(host); | 1895 prerender_process_hosts_.erase(host); |
| 1905 BrowserThread::PostTask( | 1896 BrowserThread::PostTask( |
| 1906 BrowserThread::IO, FROM_HERE, | 1897 BrowserThread::IO, FROM_HERE, |
| 1907 base::Bind(&PrerenderTracker::RemovePrerenderCookieStoreOnIOThread, | 1898 base::Bind(&PrerenderTracker::RemovePrerenderCookieStoreOnIOThread, |
| 1908 base::Unretained(prerender_tracker()), host->GetID(), false)); | 1899 base::Unretained(prerender_tracker()), host->GetID(), false)); |
| 1909 } | 1900 } |
| 1910 | 1901 |
| 1911 } // namespace prerender | 1902 } // namespace prerender |
| OLD | NEW |