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 |