/ios/chrome/browser/prerender/prerender_service_factory.mm

https://github.com/chromium/chromium · Objective C++ · 62 lines · 43 code · 11 blank · 8 comment · 1 complexity · cdd33713f6652f2815645a3eef9d832b MD5 · raw file

  1. // Copyright 2017 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. #import "ios/chrome/browser/prerender/prerender_service_factory.h"
  5. #import "base/no_destructor.h"
  6. #import "components/keyed_service/ios/browser_state_dependency_manager.h"
  7. #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
  8. #import "ios/chrome/browser/prerender/prerender_service_impl.h"
  9. #import "ios/chrome/browser/signin/account_consistency_service_factory.h"
  10. #import "ios/web/public/browser_state.h"
  11. #if !defined(__has_feature) || !__has_feature(objc_arc)
  12. #error "This file requires ARC support."
  13. #endif
  14. std::unique_ptr<KeyedService> BuildPrerenderService(
  15. web::BrowserState* context) {
  16. ChromeBrowserState* browser_state =
  17. ChromeBrowserState::FromBrowserState(context);
  18. return std::make_unique<PrerenderServiceImpl>(browser_state);
  19. }
  20. // static
  21. PrerenderService* PrerenderServiceFactory::GetForBrowserState(
  22. ChromeBrowserState* browser_state) {
  23. return static_cast<PrerenderService*>(
  24. GetInstance()->GetServiceForBrowserState(browser_state, true));
  25. }
  26. // static
  27. PrerenderServiceFactory* PrerenderServiceFactory::GetInstance() {
  28. static base::NoDestructor<PrerenderServiceFactory> instance;
  29. return instance.get();
  30. }
  31. PrerenderServiceFactory::PrerenderServiceFactory()
  32. : BrowserStateKeyedServiceFactory(
  33. "PrerenderService",
  34. BrowserStateDependencyManager::GetInstance()) {
  35. DependsOn(ios::AccountConsistencyServiceFactory::GetInstance());
  36. }
  37. PrerenderServiceFactory::~PrerenderServiceFactory() {}
  38. std::unique_ptr<KeyedService> PrerenderServiceFactory::BuildServiceInstanceFor(
  39. web::BrowserState* context) const {
  40. return BuildPrerenderService(context);
  41. }
  42. // static
  43. PrerenderServiceFactory::TestingFactory
  44. PrerenderServiceFactory::GetDefaultFactory() {
  45. return base::BindRepeating(&BuildPrerenderService);
  46. }
  47. bool PrerenderServiceFactory::ServiceIsNULLWhileTesting() const {
  48. // PrerenderService is omitted while testing because it complicates
  49. // measurements in perf tests.
  50. return true;
  51. }