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 15namespace predictors { 16 17// static 18ResourcePrefetchPredictor* ResourcePrefetchPredictorFactory::GetForProfile( 19 content::BrowserContext* context) { 20 return static_cast<ResourcePrefetchPredictor*>( 21 GetInstance()->GetServiceForBrowserContext(context, true)); 22} 23 24// static 25ResourcePrefetchPredictorFactory* 26ResourcePrefetchPredictorFactory::GetInstance() { 27 return Singleton<ResourcePrefetchPredictorFactory>::get(); 28} 29 30ResourcePrefetchPredictorFactory::ResourcePrefetchPredictorFactory() 31 : BrowserContextKeyedServiceFactory( 32 "ResourcePrefetchPredictor", 33 BrowserContextDependencyManager::GetInstance()) { 34 DependsOn(HistoryServiceFactory::GetInstance()); 35 DependsOn(PredictorDatabaseFactory::GetInstance()); 36} 37 38ResourcePrefetchPredictorFactory::~ResourcePrefetchPredictorFactory() {} 39 40KeyedService* 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