Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(157)

Side by Side Diff: chrome/browser/predictors/resource_prefetch_predictor.cc

Issue 2498983005: predictors: Expose the initialization call to Android. (Closed)
Patch Set: Address comments. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 // Some form of learning has to be enabled. 385 // Some form of learning has to be enabled.
386 DCHECK(config_.IsLearningEnabled()); 386 DCHECK(config_.IsLearningEnabled());
387 if (config_.IsURLPrefetchingEnabled(profile_)) 387 if (config_.IsURLPrefetchingEnabled(profile_))
388 DCHECK(config_.IsURLLearningEnabled()); 388 DCHECK(config_.IsURLLearningEnabled());
389 if (config_.IsHostPrefetchingEnabled(profile_)) 389 if (config_.IsHostPrefetchingEnabled(profile_))
390 DCHECK(config_.IsHostLearningEnabled()); 390 DCHECK(config_.IsHostLearningEnabled());
391 } 391 }
392 392
393 ResourcePrefetchPredictor::~ResourcePrefetchPredictor() {} 393 ResourcePrefetchPredictor::~ResourcePrefetchPredictor() {}
394 394
395 void ResourcePrefetchPredictor::StartInitialization() {
396 DCHECK_CURRENTLY_ON(BrowserThread::UI);
397
398 DCHECK_EQ(NOT_INITIALIZED, initialization_state_);
399 initialization_state_ = INITIALIZING;
400
401 // Create local caches using the database as loaded.
402 auto url_data_map = base::MakeUnique<PrefetchDataMap>();
403 auto host_data_map = base::MakeUnique<PrefetchDataMap>();
404 auto url_redirect_data_map = base::MakeUnique<RedirectDataMap>();
405 auto host_redirect_data_map = base::MakeUnique<RedirectDataMap>();
406
407 // Get raw pointers to pass to the first task. Ownership of the unique_ptrs
408 // will be passed to the reply task.
409 auto url_data_map_ptr = url_data_map.get();
410 auto host_data_map_ptr = host_data_map.get();
411 auto url_redirect_data_map_ptr = url_redirect_data_map.get();
412 auto host_redirect_data_map_ptr = host_redirect_data_map.get();
413
414 BrowserThread::PostTaskAndReply(
415 BrowserThread::DB, FROM_HERE,
416 base::Bind(&ResourcePrefetchPredictorTables::GetAllData, tables_,
417 url_data_map_ptr, host_data_map_ptr, url_redirect_data_map_ptr,
418 host_redirect_data_map_ptr),
419 base::Bind(&ResourcePrefetchPredictor::CreateCaches, AsWeakPtr(),
420 base::Passed(&url_data_map), base::Passed(&host_data_map),
421 base::Passed(&url_redirect_data_map),
422 base::Passed(&host_redirect_data_map)));
423 }
424
395 void ResourcePrefetchPredictor::RecordURLRequest( 425 void ResourcePrefetchPredictor::RecordURLRequest(
396 const URLRequestSummary& request) { 426 const URLRequestSummary& request) {
397 DCHECK_CURRENTLY_ON(BrowserThread::UI); 427 DCHECK_CURRENTLY_ON(BrowserThread::UI);
398 if (initialization_state_ != INITIALIZED) 428 if (initialization_state_ != INITIALIZED)
399 return; 429 return;
400 430
401 CHECK_EQ(request.resource_type, content::RESOURCE_TYPE_MAIN_FRAME); 431 CHECK_EQ(request.resource_type, content::RESOURCE_TYPE_MAIN_FRAME);
402 OnMainFrameRequest(request); 432 OnMainFrameRequest(request);
403 } 433 }
404 434
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 resource.number_of_hits() < 667 resource.number_of_hits() <
638 config_.min_resource_hits_to_trigger_prefetch) 668 config_.min_resource_hits_to_trigger_prefetch)
639 continue; 669 continue;
640 670
641 urls->push_back(GURL(resource.resource_url())); 671 urls->push_back(GURL(resource.resource_url()));
642 } 672 }
643 673
644 return urls->size() > initial_size; 674 return urls->size() > initial_size;
645 } 675 }
646 676
647 void ResourcePrefetchPredictor::StartInitialization() {
648 DCHECK_CURRENTLY_ON(BrowserThread::UI);
649
650 DCHECK_EQ(NOT_INITIALIZED, initialization_state_);
651 initialization_state_ = INITIALIZING;
652
653 // Create local caches using the database as loaded.
654 auto url_data_map = base::MakeUnique<PrefetchDataMap>();
655 auto host_data_map = base::MakeUnique<PrefetchDataMap>();
656 auto url_redirect_data_map = base::MakeUnique<RedirectDataMap>();
657 auto host_redirect_data_map = base::MakeUnique<RedirectDataMap>();
658
659 // Get raw pointers to pass to the first task. Ownership of the unique_ptrs
660 // will be passed to the reply task.
661 auto url_data_map_ptr = url_data_map.get();
662 auto host_data_map_ptr = host_data_map.get();
663 auto url_redirect_data_map_ptr = url_redirect_data_map.get();
664 auto host_redirect_data_map_ptr = host_redirect_data_map.get();
665
666 BrowserThread::PostTaskAndReply(
667 BrowserThread::DB, FROM_HERE,
668 base::Bind(&ResourcePrefetchPredictorTables::GetAllData, tables_,
669 url_data_map_ptr, host_data_map_ptr, url_redirect_data_map_ptr,
670 host_redirect_data_map_ptr),
671 base::Bind(&ResourcePrefetchPredictor::CreateCaches, AsWeakPtr(),
672 base::Passed(&url_data_map), base::Passed(&host_data_map),
673 base::Passed(&url_redirect_data_map),
674 base::Passed(&host_redirect_data_map)));
675 }
676
677 void ResourcePrefetchPredictor::CreateCaches( 677 void ResourcePrefetchPredictor::CreateCaches(
678 std::unique_ptr<PrefetchDataMap> url_data_map, 678 std::unique_ptr<PrefetchDataMap> url_data_map,
679 std::unique_ptr<PrefetchDataMap> host_data_map, 679 std::unique_ptr<PrefetchDataMap> host_data_map,
680 std::unique_ptr<RedirectDataMap> url_redirect_data_map, 680 std::unique_ptr<RedirectDataMap> url_redirect_data_map,
681 std::unique_ptr<RedirectDataMap> host_redirect_data_map) { 681 std::unique_ptr<RedirectDataMap> host_redirect_data_map) {
682 DCHECK_CURRENTLY_ON(BrowserThread::UI); 682 DCHECK_CURRENTLY_ON(BrowserThread::UI);
683 683
684 DCHECK_EQ(INITIALIZING, initialization_state_); 684 DCHECK_EQ(INITIALIZING, initialization_state_);
685 DCHECK(!url_table_cache_); 685 DCHECK(!url_table_cache_);
686 DCHECK(!host_table_cache_); 686 DCHECK(!host_table_cache_);
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after
1169 TestObserver::~TestObserver() { 1169 TestObserver::~TestObserver() {
1170 predictor_->SetObserverForTesting(nullptr); 1170 predictor_->SetObserverForTesting(nullptr);
1171 } 1171 }
1172 1172
1173 TestObserver::TestObserver(ResourcePrefetchPredictor* predictor) 1173 TestObserver::TestObserver(ResourcePrefetchPredictor* predictor)
1174 : predictor_(predictor) { 1174 : predictor_(predictor) {
1175 predictor_->SetObserverForTesting(this); 1175 predictor_->SetObserverForTesting(this);
1176 } 1176 }
1177 1177
1178 } // namespace predictors 1178 } // namespace predictors
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698