PageRenderTime 53ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 0ms

/ios/web_view/internal/webdata_services/web_view_web_data_service_wrapper_factory.mm

https://github.com/chromium/chromium
Objective C++ | 98 lines | 76 code | 14 blank | 8 comment | 2 complexity | 09e4fbffae4e372ab38541ae07e36361 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, Apache-2.0, BSD-3-Clause
  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. #include "ios/web_view/internal/webdata_services/web_view_web_data_service_wrapper_factory.h"
  5. #include "base/bind.h"
  6. #include "base/callback.h"
  7. #include "base/callback_helpers.h"
  8. #include "base/check.h"
  9. #include "base/files/file_path.h"
  10. #include "base/no_destructor.h"
  11. #include "components/autofill/core/browser/webdata/autofill_webdata_service.h"
  12. #include "components/keyed_service/core/service_access_type.h"
  13. #include "components/keyed_service/ios/browser_state_dependency_manager.h"
  14. #include "components/signin/public/webdata/token_web_data.h"
  15. #include "components/sync/model/syncable_service.h"
  16. #include "components/webdata_services/web_data_service_wrapper.h"
  17. #include "ios/web/public/thread/web_task_traits.h"
  18. #include "ios/web/public/thread/web_thread.h"
  19. #include "ios/web_view/internal/app/application_context.h"
  20. #include "ios/web_view/internal/web_view_browser_state.h"
  21. #if !defined(__has_feature) || !__has_feature(objc_arc)
  22. #error "This file requires ARC support."
  23. #endif
  24. namespace ios_web_view {
  25. // static
  26. WebDataServiceWrapper* WebViewWebDataServiceWrapperFactory::GetForBrowserState(
  27. WebViewBrowserState* browser_state,
  28. ServiceAccessType access_type) {
  29. DCHECK(access_type == ServiceAccessType::EXPLICIT_ACCESS ||
  30. !browser_state->IsOffTheRecord());
  31. return static_cast<WebDataServiceWrapper*>(
  32. GetInstance()->GetServiceForBrowserState(browser_state, true));
  33. }
  34. // static
  35. scoped_refptr<autofill::AutofillWebDataService>
  36. WebViewWebDataServiceWrapperFactory::GetAutofillWebDataForBrowserState(
  37. WebViewBrowserState* browser_state,
  38. ServiceAccessType access_type) {
  39. WebDataServiceWrapper* wrapper =
  40. GetForBrowserState(browser_state, access_type);
  41. return wrapper ? wrapper->GetProfileAutofillWebData() : nullptr;
  42. }
  43. // static
  44. scoped_refptr<autofill::AutofillWebDataService>
  45. WebViewWebDataServiceWrapperFactory::GetAutofillWebDataForAccount(
  46. WebViewBrowserState* browser_state,
  47. ServiceAccessType access_type) {
  48. WebDataServiceWrapper* wrapper =
  49. GetForBrowserState(browser_state, access_type);
  50. return wrapper ? wrapper->GetAccountAutofillWebData() : nullptr;
  51. }
  52. // static
  53. scoped_refptr<TokenWebData>
  54. WebViewWebDataServiceWrapperFactory::GetTokenWebDataForBrowserState(
  55. WebViewBrowserState* browser_state,
  56. ServiceAccessType access_type) {
  57. WebDataServiceWrapper* wrapper =
  58. GetForBrowserState(browser_state, access_type);
  59. return wrapper ? wrapper->GetTokenWebData() : nullptr;
  60. }
  61. // static
  62. WebViewWebDataServiceWrapperFactory*
  63. WebViewWebDataServiceWrapperFactory::GetInstance() {
  64. static base::NoDestructor<WebViewWebDataServiceWrapperFactory> instance;
  65. return instance.get();
  66. }
  67. WebViewWebDataServiceWrapperFactory::WebViewWebDataServiceWrapperFactory()
  68. : BrowserStateKeyedServiceFactory(
  69. "WebDataService",
  70. BrowserStateDependencyManager::GetInstance()) {}
  71. WebViewWebDataServiceWrapperFactory::~WebViewWebDataServiceWrapperFactory() {}
  72. std::unique_ptr<KeyedService>
  73. WebViewWebDataServiceWrapperFactory::BuildServiceInstanceFor(
  74. web::BrowserState* context) const {
  75. const base::FilePath& browser_state_path = context->GetStatePath();
  76. return std::make_unique<WebDataServiceWrapper>(
  77. browser_state_path,
  78. ApplicationContext::GetInstance()->GetApplicationLocale(),
  79. web::GetUIThreadTaskRunner({}), base::DoNothing());
  80. }
  81. bool WebViewWebDataServiceWrapperFactory::ServiceIsNULLWhileTesting() const {
  82. return true;
  83. }
  84. } // namespace ios_web_view