1// Copyright 2018 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#import "ios/web_view/internal/sync/web_view_model_type_store_service_factory.h" 6 7#include <utility> 8 9#include "base/no_destructor.h" 10#include "components/keyed_service/ios/browser_state_dependency_manager.h" 11#include "components/sync/model_impl/model_type_store_service_impl.h" 12#include "ios/web_view/internal/web_view_browser_state.h" 13 14#if !defined(__has_feature) || !__has_feature(objc_arc) 15#error "This file requires ARC support." 16#endif 17 18namespace ios_web_view { 19 20// static 21WebViewModelTypeStoreServiceFactory* 22WebViewModelTypeStoreServiceFactory::GetInstance() { 23 static base::NoDestructor<WebViewModelTypeStoreServiceFactory> instance; 24 return instance.get(); 25} 26 27// static 28syncer::ModelTypeStoreService* 29WebViewModelTypeStoreServiceFactory::GetForBrowserState( 30 WebViewBrowserState* browser_state) { 31 return static_cast<syncer::ModelTypeStoreService*>( 32 GetInstance()->GetServiceForBrowserState(browser_state, true)); 33} 34 35WebViewModelTypeStoreServiceFactory::WebViewModelTypeStoreServiceFactory() 36 : BrowserStateKeyedServiceFactory( 37 "ModelTypeStoreService", 38 BrowserStateDependencyManager::GetInstance()) {} 39 40WebViewModelTypeStoreServiceFactory::~WebViewModelTypeStoreServiceFactory() {} 41 42std::unique_ptr<KeyedService> 43WebViewModelTypeStoreServiceFactory::BuildServiceInstanceFor( 44 web::BrowserState* context) const { 45 WebViewBrowserState* browser_state = 46 WebViewBrowserState::FromBrowserState(context); 47 return std::make_unique<syncer::ModelTypeStoreServiceImpl>( 48 browser_state->GetStatePath()); 49} 50 51web::BrowserState* WebViewModelTypeStoreServiceFactory::GetBrowserStateToUse( 52 web::BrowserState* context) const { 53 WebViewBrowserState* browser_state = 54 WebViewBrowserState::FromBrowserState(context); 55 return browser_state->GetRecordingBrowserState(); 56} 57 58} // namespace ios_web_view 59