| 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 1612 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1623 const GURL& url, Origin origin, uint8 experiment_id, | 1623 const GURL& url, Origin origin, uint8 experiment_id, |
| 1624 FinalStatus final_status) const { | 1624 FinalStatus final_status) const { |
| 1625 PrerenderHistory::Entry entry(url, final_status, origin, base::Time::Now()); | 1625 PrerenderHistory::Entry entry(url, final_status, origin, base::Time::Now()); |
| 1626 prerender_history_->AddEntry(entry); | 1626 prerender_history_->AddEntry(entry); |
| 1627 RecordFinalStatusWithMatchCompleteStatus( | 1627 RecordFinalStatusWithMatchCompleteStatus( |
| 1628 origin, experiment_id, | 1628 origin, experiment_id, |
| 1629 PrerenderContents::MATCH_COMPLETE_DEFAULT, | 1629 PrerenderContents::MATCH_COMPLETE_DEFAULT, |
| 1630 final_status); | 1630 final_status); |
| 1631 } | 1631 } |
| 1632 | 1632 |
| 1633 bool PrerenderManager::IsEnabled() const { | |
| 1634 DCHECK(CalledOnValidThread()); | |
| 1635 if (!enabled_) | |
| 1636 return false; | |
| 1637 for (std::list<const PrerenderCondition*>::const_iterator it = | |
| 1638 prerender_conditions_.begin(); | |
| 1639 it != prerender_conditions_.end(); | |
| 1640 ++it) { | |
| 1641 const PrerenderCondition* condition = *it; | |
| 1642 if (!condition->CanPrerender()) | |
| 1643 return false; | |
| 1644 } | |
| 1645 return true; | |
| 1646 } | |
| 1647 | |
| 1648 void PrerenderManager::Observe(int type, | 1633 void PrerenderManager::Observe(int type, |
| 1649 const content::NotificationSource& source, | 1634 const content::NotificationSource& source, |
| 1650 const content::NotificationDetails& details) { | 1635 const content::NotificationDetails& details) { |
| 1651 switch (type) { | 1636 switch (type) { |
| 1652 case chrome::NOTIFICATION_COOKIE_CHANGED: { | 1637 case chrome::NOTIFICATION_COOKIE_CHANGED: { |
| 1653 Profile* profile = content::Source<Profile>(source).ptr(); | 1638 Profile* profile = content::Source<Profile>(source).ptr(); |
| 1654 if (!profile || !profile_->IsSameProfile(profile) || | 1639 if (!profile || !profile_->IsSameProfile(profile) || |
| 1655 profile->IsOffTheRecord()) { | 1640 profile->IsOffTheRecord()) { |
| 1656 return; | 1641 return; |
| 1657 } | 1642 } |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1873 if (!ActuallyPrerendering()) | 1858 if (!ActuallyPrerendering()) |
| 1874 return; | 1859 return; |
| 1875 int64 recent_profile_bytes = | 1860 int64 recent_profile_bytes = |
| 1876 profile_network_bytes_ - last_recorded_profile_network_bytes_; | 1861 profile_network_bytes_ - last_recorded_profile_network_bytes_; |
| 1877 last_recorded_profile_network_bytes_ = profile_network_bytes_; | 1862 last_recorded_profile_network_bytes_ = profile_network_bytes_; |
| 1878 DCHECK_GE(recent_profile_bytes, 0); | 1863 DCHECK_GE(recent_profile_bytes, 0); |
| 1879 histograms_->RecordNetworkBytes( | 1864 histograms_->RecordNetworkBytes( |
| 1880 origin, used, prerender_bytes, recent_profile_bytes); | 1865 origin, used, prerender_bytes, recent_profile_bytes); |
| 1881 } | 1866 } |
| 1882 | 1867 |
| 1868 bool PrerenderManager::IsEnabled() const { |
| 1869 DCHECK(CalledOnValidThread()); |
| 1870 if (!enabled_) |
| 1871 return false; |
| 1872 for (std::list<const PrerenderCondition*>::const_iterator it = |
| 1873 prerender_conditions_.begin(); |
| 1874 it != prerender_conditions_.end(); |
| 1875 ++it) { |
| 1876 const PrerenderCondition* condition = *it; |
| 1877 if (!condition->CanPrerender()) |
| 1878 return false; |
| 1879 } |
| 1880 return true; |
| 1881 } |
| 1882 |
| 1883 void PrerenderManager::AddProfileNetworkBytesIfEnabled(int64 bytes) { | 1883 void PrerenderManager::AddProfileNetworkBytesIfEnabled(int64 bytes) { |
| 1884 DCHECK_GE(bytes, 0); | 1884 DCHECK_GE(bytes, 0); |
| 1885 if (IsEnabled() && ActuallyPrerendering()) | 1885 if (IsEnabled() && ActuallyPrerendering()) |
| 1886 profile_network_bytes_ += bytes; | 1886 profile_network_bytes_ += bytes; |
| 1887 } | 1887 } |
| 1888 | 1888 |
| 1889 void PrerenderManager::OnCookieStoreLoaded() { | 1889 void PrerenderManager::OnCookieStoreLoaded() { |
| 1890 cookie_store_loaded_ = true; | 1890 cookie_store_loaded_ = true; |
| 1891 if (!on_cookie_store_loaded_cb_for_testing_.is_null()) | 1891 if (!on_cookie_store_loaded_cb_for_testing_.is_null()) |
| 1892 on_cookie_store_loaded_cb_for_testing_.Run(); | 1892 on_cookie_store_loaded_cb_for_testing_.Run(); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1916 content::RenderProcessHost* host) { | 1916 content::RenderProcessHost* host) { |
| 1917 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1917 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 1918 prerender_process_hosts_.erase(host); | 1918 prerender_process_hosts_.erase(host); |
| 1919 BrowserThread::PostTask( | 1919 BrowserThread::PostTask( |
| 1920 BrowserThread::IO, FROM_HERE, | 1920 BrowserThread::IO, FROM_HERE, |
| 1921 base::Bind(&PrerenderTracker::RemovePrerenderCookieStoreOnIOThread, | 1921 base::Bind(&PrerenderTracker::RemovePrerenderCookieStoreOnIOThread, |
| 1922 base::Unretained(prerender_tracker()), host->GetID(), false)); | 1922 base::Unretained(prerender_tracker()), host->GetID(), false)); |
| 1923 } | 1923 } |
| 1924 | 1924 |
| 1925 } // namespace prerender | 1925 } // namespace prerender |
| OLD | NEW |