/ios/chrome/browser/search_engines/template_url_service_factory.cc

https://gitlab.com/0072016/Facebook-SDK- · C++ · 110 lines · 87 code · 17 blank · 6 comment · 0 complexity · 9c11958dedf7bfed8707b759ad9b96fe MD5 · raw file

  1. // Copyright 2015 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. #include "ios/chrome/browser/search_engines/template_url_service_factory.h"
  5. #include "base/bind.h"
  6. #include "base/callback.h"
  7. #include "base/memory/ptr_util.h"
  8. #include "base/memory/singleton.h"
  9. #include "components/keyed_service/core/service_access_type.h"
  10. #include "components/keyed_service/ios/browser_state_dependency_manager.h"
  11. #include "components/search_engines/default_search_manager.h"
  12. #include "components/search_engines/template_url_service.h"
  13. #include "ios/chrome/browser/application_context.h"
  14. #include "ios/chrome/browser/browser_state/browser_state_otr_helper.h"
  15. #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
  16. #include "ios/chrome/browser/google/google_url_tracker_factory.h"
  17. #include "ios/chrome/browser/history/history_service_factory.h"
  18. #include "ios/chrome/browser/search_engines/template_url_service_client_impl.h"
  19. #include "ios/chrome/browser/search_engines/ui_thread_search_terms_data.h"
  20. #include "ios/chrome/browser/web_data_service_factory.h"
  21. #if defined(ENABLE_RLZ)
  22. #include "components/rlz/rlz_tracker.h"
  23. #endif
  24. namespace ios {
  25. namespace {
  26. base::Closure GetDefaultSearchProviderChangedCallback() {
  27. #if defined(ENABLE_RLZ)
  28. return base::Bind(base::IgnoreResult(&rlz::RLZTracker::RecordProductEvent),
  29. rlz_lib::CHROME, rlz::RLZTracker::ChromeOmnibox(),
  30. rlz_lib::SET_TO_GOOGLE);
  31. #else
  32. return base::Closure();
  33. #endif
  34. }
  35. std::unique_ptr<KeyedService> BuildTemplateURLService(
  36. web::BrowserState* context) {
  37. ios::ChromeBrowserState* browser_state =
  38. ios::ChromeBrowserState::FromBrowserState(context);
  39. return base::WrapUnique(new TemplateURLService(
  40. browser_state->GetPrefs(),
  41. base::WrapUnique(new ios::UIThreadSearchTermsData(browser_state)),
  42. ios::WebDataServiceFactory::GetKeywordWebDataForBrowserState(
  43. browser_state, ServiceAccessType::EXPLICIT_ACCESS),
  44. base::WrapUnique(new ios::TemplateURLServiceClientImpl(
  45. ios::HistoryServiceFactory::GetForBrowserState(
  46. browser_state, ServiceAccessType::EXPLICIT_ACCESS))),
  47. ios::GoogleURLTrackerFactory::GetForBrowserState(browser_state),
  48. GetApplicationContext()->GetRapporService(),
  49. GetDefaultSearchProviderChangedCallback()));
  50. }
  51. } // namespace
  52. // static
  53. TemplateURLService* TemplateURLServiceFactory::GetForBrowserState(
  54. ios::ChromeBrowserState* browser_state) {
  55. return static_cast<TemplateURLService*>(
  56. GetInstance()->GetServiceForBrowserState(browser_state, true));
  57. }
  58. // static
  59. TemplateURLServiceFactory* TemplateURLServiceFactory::GetInstance() {
  60. return base::Singleton<TemplateURLServiceFactory>::get();
  61. }
  62. // static
  63. BrowserStateKeyedServiceFactory::TestingFactoryFunction
  64. TemplateURLServiceFactory::GetDefaultFactory() {
  65. return &BuildTemplateURLService;
  66. }
  67. TemplateURLServiceFactory::TemplateURLServiceFactory()
  68. : BrowserStateKeyedServiceFactory(
  69. "TemplateURLService",
  70. BrowserStateDependencyManager::GetInstance()) {
  71. DependsOn(ios::GoogleURLTrackerFactory::GetInstance());
  72. DependsOn(ios::HistoryServiceFactory::GetInstance());
  73. DependsOn(ios::WebDataServiceFactory::GetInstance());
  74. }
  75. TemplateURLServiceFactory::~TemplateURLServiceFactory() {}
  76. void TemplateURLServiceFactory::RegisterBrowserStatePrefs(
  77. user_prefs::PrefRegistrySyncable* registry) {
  78. DefaultSearchManager::RegisterProfilePrefs(registry);
  79. TemplateURLService::RegisterProfilePrefs(registry);
  80. }
  81. std::unique_ptr<KeyedService>
  82. TemplateURLServiceFactory::BuildServiceInstanceFor(
  83. web::BrowserState* context) const {
  84. return BuildTemplateURLService(context);
  85. }
  86. web::BrowserState* TemplateURLServiceFactory::GetBrowserStateToUse(
  87. web::BrowserState* context) const {
  88. return GetBrowserStateRedirectedInIncognito(context);
  89. }
  90. bool TemplateURLServiceFactory::ServiceIsNULLWhileTesting() const {
  91. return true;
  92. }
  93. } // namespace ios