| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/predictors/resource_prefetch_predictor.h" | 5 #include "chrome/browser/predictors/resource_prefetch_predictor.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 634 } | 634 } |
| 635 | 635 |
| 636 bool ResourcePrefetchPredictor::IsUrlPrefetchable(const GURL& main_frame_url) { | 636 bool ResourcePrefetchPredictor::IsUrlPrefetchable(const GURL& main_frame_url) { |
| 637 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 637 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 638 if (initialization_state_ != INITIALIZED) | 638 if (initialization_state_ != INITIALIZED) |
| 639 return false; | 639 return false; |
| 640 | 640 |
| 641 return GetPrefetchData(main_frame_url, nullptr); | 641 return GetPrefetchData(main_frame_url, nullptr); |
| 642 } | 642 } |
| 643 | 643 |
| 644 bool ResourcePrefetchPredictor::IsResourcePrefetchable( |
| 645 const ResourceData& resource) const { |
| 646 float confidence = static_cast<float>(resource.number_of_hits()) / |
| 647 (resource.number_of_hits() + resource.number_of_misses()); |
| 648 return confidence >= config_.min_resource_confidence_to_trigger_prefetch && |
| 649 resource.number_of_hits() >= |
| 650 config_.min_resource_hits_to_trigger_prefetch; |
| 651 } |
| 652 |
| 644 void ResourcePrefetchPredictor::SetObserverForTesting(TestObserver* observer) { | 653 void ResourcePrefetchPredictor::SetObserverForTesting(TestObserver* observer) { |
| 645 observer_ = observer; | 654 observer_ = observer; |
| 646 } | 655 } |
| 647 | 656 |
| 648 void ResourcePrefetchPredictor::Shutdown() { | 657 void ResourcePrefetchPredictor::Shutdown() { |
| 649 if (prefetch_manager_.get()) { | 658 if (prefetch_manager_.get()) { |
| 650 prefetch_manager_->ShutdownOnUIThread(); | 659 prefetch_manager_->ShutdownOnUIThread(); |
| 651 prefetch_manager_ = NULL; | 660 prefetch_manager_ = NULL; |
| 652 } | 661 } |
| 653 history_service_observer_.RemoveAll(); | 662 history_service_observer_.RemoveAll(); |
| (...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1313 const RedirectData& url_redirect_data = | 1322 const RedirectData& url_redirect_data = |
| 1314 is_host ? empty_redirect_data : data; | 1323 is_host ? empty_redirect_data : data; |
| 1315 BrowserThread::PostTask( | 1324 BrowserThread::PostTask( |
| 1316 BrowserThread::DB, FROM_HERE, | 1325 BrowserThread::DB, FROM_HERE, |
| 1317 base::Bind(&ResourcePrefetchPredictorTables::UpdateData, tables_, | 1326 base::Bind(&ResourcePrefetchPredictorTables::UpdateData, tables_, |
| 1318 empty_data, empty_data, url_redirect_data, | 1327 empty_data, empty_data, url_redirect_data, |
| 1319 host_redirect_data)); | 1328 host_redirect_data)); |
| 1320 } | 1329 } |
| 1321 } | 1330 } |
| 1322 | 1331 |
| 1323 bool ResourcePrefetchPredictor::IsResourcePrefetchable( | |
| 1324 const ResourceData& resource) const { | |
| 1325 float confidence = static_cast<float>(resource.number_of_hits()) / | |
| 1326 (resource.number_of_hits() + resource.number_of_misses()); | |
| 1327 return confidence >= config_.min_resource_confidence_to_trigger_prefetch && | |
| 1328 resource.number_of_hits() >= | |
| 1329 config_.min_resource_hits_to_trigger_prefetch; | |
| 1330 } | |
| 1331 | |
| 1332 void ResourcePrefetchPredictor::ReportDatabaseReadiness( | 1332 void ResourcePrefetchPredictor::ReportDatabaseReadiness( |
| 1333 const history::TopHostsList& top_hosts) const { | 1333 const history::TopHostsList& top_hosts) const { |
| 1334 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1334 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 1335 if (top_hosts.size() == 0) | 1335 if (top_hosts.size() == 0) |
| 1336 return; | 1336 return; |
| 1337 | 1337 |
| 1338 size_t count_in_cache = 0; | 1338 size_t count_in_cache = 0; |
| 1339 size_t total_visits = 0; | 1339 size_t total_visits = 0; |
| 1340 for (const std::pair<std::string, int>& top_host : top_hosts) { | 1340 for (const std::pair<std::string, int>& top_host : top_hosts) { |
| 1341 const std::string& host = top_host.first; | 1341 const std::string& host = top_host.first; |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1409 TestObserver::~TestObserver() { | 1409 TestObserver::~TestObserver() { |
| 1410 predictor_->SetObserverForTesting(nullptr); | 1410 predictor_->SetObserverForTesting(nullptr); |
| 1411 } | 1411 } |
| 1412 | 1412 |
| 1413 TestObserver::TestObserver(ResourcePrefetchPredictor* predictor) | 1413 TestObserver::TestObserver(ResourcePrefetchPredictor* predictor) |
| 1414 : predictor_(predictor) { | 1414 : predictor_(predictor) { |
| 1415 predictor_->SetObserverForTesting(this); | 1415 predictor_->SetObserverForTesting(this); |
| 1416 } | 1416 } |
| 1417 | 1417 |
| 1418 } // namespace predictors | 1418 } // namespace predictors |
| OLD | NEW |