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_(profile && profile->GetPrefs() && | 241 : enabled_(true), |
242 profile->GetPrefs()->GetBoolean(prefs::kNetworkPredictionEnabled)), | |
243 profile_(profile), | 242 profile_(profile), |
244 prerender_tracker_(prerender_tracker), | 243 prerender_tracker_(prerender_tracker), |
245 prerender_contents_factory_(PrerenderContents::CreateFactory()), | 244 prerender_contents_factory_(PrerenderContents::CreateFactory()), |
246 last_prerender_start_time_(GetCurrentTimeTicks() - | 245 last_prerender_start_time_(GetCurrentTimeTicks() - |
247 base::TimeDelta::FromMilliseconds(kMinTimeBetweenPrerendersMs)), | 246 base::TimeDelta::FromMilliseconds(kMinTimeBetweenPrerendersMs)), |
248 prerender_history_(new PrerenderHistory(kHistoryLength)), | 247 prerender_history_(new PrerenderHistory(kHistoryLength)), |
249 histograms_(new PrerenderHistograms()), | 248 histograms_(new PrerenderHistograms()), |
250 profile_network_bytes_(0), | 249 profile_network_bytes_(0), |
251 last_recorded_profile_network_bytes_(0), | 250 last_recorded_profile_network_bytes_(0), |
252 cookie_store_loaded_(false) { | 251 cookie_store_loaded_(false) { |
(...skipping 1602 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1855 profile_network_bytes_ - last_recorded_profile_network_bytes_; | 1854 profile_network_bytes_ - last_recorded_profile_network_bytes_; |
1856 last_recorded_profile_network_bytes_ = profile_network_bytes_; | 1855 last_recorded_profile_network_bytes_ = profile_network_bytes_; |
1857 DCHECK_GE(recent_profile_bytes, 0); | 1856 DCHECK_GE(recent_profile_bytes, 0); |
1858 histograms_->RecordNetworkBytes( | 1857 histograms_->RecordNetworkBytes( |
1859 origin, used, prerender_bytes, recent_profile_bytes); | 1858 origin, used, prerender_bytes, recent_profile_bytes); |
1860 } | 1859 } |
1861 | 1860 |
1862 bool PrerenderManager::IsEnabled() const { | 1861 bool PrerenderManager::IsEnabled() const { |
1863 DCHECK(CalledOnValidThread()); | 1862 DCHECK(CalledOnValidThread()); |
1864 | 1863 |
1865 // TODO(bnc): remove conditional as per crbug.com/334602. | |
1866 if (profile_ && profile_->GetPrefs() && | |
1867 profile_->GetPrefs()->GetInteger(prefs::kNetworkPredictionOptions) != | |
1868 chrome_browser_net::NETWORK_PREDICTION_UNSET) { | |
1869 return chrome_browser_net::CanPrefetchAndPrerenderUI(profile_->GetPrefs()); | |
1870 } | |
1871 // TODO(bnc): remove rest of method as per crbug.com/334602. | |
1872 if (!enabled_) | 1864 if (!enabled_) |
1873 return false; | 1865 return false; |
1874 for (std::list<const PrerenderCondition*>::const_iterator it = | 1866 return chrome_browser_net::CanPrefetchAndPrerenderUI(profile_->GetPrefs()); |
1875 prerender_conditions_.begin(); | |
1876 it != prerender_conditions_.end(); | |
1877 ++it) { | |
1878 const PrerenderCondition* condition = *it; | |
1879 if (!condition->CanPrerender()) | |
1880 return false; | |
1881 } | |
1882 return true; | |
1883 } | 1867 } |
1884 | 1868 |
1885 void PrerenderManager::AddProfileNetworkBytesIfEnabled(int64 bytes) { | 1869 void PrerenderManager::AddProfileNetworkBytesIfEnabled(int64 bytes) { |
1886 DCHECK_GE(bytes, 0); | 1870 DCHECK_GE(bytes, 0); |
1887 if (IsEnabled() && ActuallyPrerendering()) | 1871 if (IsEnabled() && ActuallyPrerendering()) |
1888 profile_network_bytes_ += bytes; | 1872 profile_network_bytes_ += bytes; |
1889 } | 1873 } |
1890 | 1874 |
1891 void PrerenderManager::OnCookieStoreLoaded() { | 1875 void PrerenderManager::OnCookieStoreLoaded() { |
1892 cookie_store_loaded_ = true; | 1876 cookie_store_loaded_ = true; |
(...skipping 25 matching lines...) Expand all Loading... |
1918 content::RenderProcessHost* host) { | 1902 content::RenderProcessHost* host) { |
1919 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1903 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
1920 prerender_process_hosts_.erase(host); | 1904 prerender_process_hosts_.erase(host); |
1921 BrowserThread::PostTask( | 1905 BrowserThread::PostTask( |
1922 BrowserThread::IO, FROM_HERE, | 1906 BrowserThread::IO, FROM_HERE, |
1923 base::Bind(&PrerenderTracker::RemovePrerenderCookieStoreOnIOThread, | 1907 base::Bind(&PrerenderTracker::RemovePrerenderCookieStoreOnIOThread, |
1924 base::Unretained(prerender_tracker()), host->GetID(), false)); | 1908 base::Unretained(prerender_tracker()), host->GetID(), false)); |
1925 } | 1909 } |
1926 | 1910 |
1927 } // namespace prerender | 1911 } // namespace prerender |
OLD | NEW |