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 3 // found in the LICENSE file. 4 5 #include "chrome/browser/predictors/resource_prefetch_predictor_factory.h" 6 7 #include "chrome/browser/history/history_service_factory.h" 8 #include "chrome/browser/predictors/predictor_database_factory.h" 9 #include "chrome/browser/predictors/resource_prefetch_common.h" 10 #include "chrome/browser/predictors/resource_prefetch_predictor.h" 11 #include "chrome/browser/profiles/profile.h" 12 #include "components/keyed_service/content/browser_context_dependency_manager.h" 13 #include "components/keyed_service/content/browser_context_keyed_service_factory.h" 14 15 namespace predictors { 16 17 // static 18 ResourcePrefetchPredictor* ResourcePrefetchPredictorFactory::GetForProfile( 19 content::BrowserContext* context) { 20 return static_cast<ResourcePrefetchPredictor*>( 21 GetInstance()->GetServiceForBrowserContext(context, true)); 22 } 23 24 // static 25 ResourcePrefetchPredictorFactory* 26 ResourcePrefetchPredictorFactory::GetInstance() { 27 return Singleton<ResourcePrefetchPredictorFactory>::get(); 28 } 29 30 ResourcePrefetchPredictorFactory::ResourcePrefetchPredictorFactory() 31 : BrowserContextKeyedServiceFactory( 32 "ResourcePrefetchPredictor", 33 BrowserContextDependencyManager::GetInstance()) { 34 DependsOn(HistoryServiceFactory::GetInstance()); 35 DependsOn(PredictorDatabaseFactory::GetInstance()); 36 } 37 38 ResourcePrefetchPredictorFactory::~ResourcePrefetchPredictorFactory() {} 39 40 KeyedService* 41 ResourcePrefetchPredictorFactory::BuildServiceInstanceFor( 42 content::BrowserContext* context) const { 43 Profile* profile = Profile::FromBrowserContext(context); 44 45 ResourcePrefetchPredictorConfig config; 46 if (!IsSpeculativeResourcePrefetchingEnabled(profile, &config)) 47 return NULL; 48 49 return new ResourcePrefetchPredictor(config, profile); 50 } 51 52 } // namespace predictors 53