OLD | NEW |
(Empty) | |
| 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 "ios/chrome/browser/suggestions/suggestions_service_factory.h" |
| 6 |
| 7 #include "base/files/file_path.h" |
| 8 #include "base/memory/singleton.h" |
| 9 #include "base/sequenced_task_runner.h" |
| 10 #include "base/threading/sequenced_worker_pool.h" |
| 11 #include "components/keyed_service/ios/browser_state_dependency_manager.h" |
| 12 #include "components/leveldb_proto/proto_database_impl.h" |
| 13 #include "components/suggestions/blacklist_store.h" |
| 14 #include "components/suggestions/image_fetcher.h" |
| 15 #include "components/suggestions/image_manager.h" |
| 16 #include "components/suggestions/suggestions_service.h" |
| 17 #include "components/suggestions/suggestions_store.h" |
| 18 #include "ios/chrome/browser/suggestions/image_fetcher_impl.h" |
| 19 #include "ios/public/provider/chrome/browser/browser_state/chrome_browser_state.
h" |
| 20 #include "ios/web/public/browser_state.h" |
| 21 #include "ios/web/public/web_thread.h" |
| 22 |
| 23 namespace suggestions { |
| 24 namespace { |
| 25 const base::FilePath::CharType kThumbnailDirectory[] = |
| 26 FILE_PATH_LITERAL("Thumbnail"); |
| 27 } |
| 28 |
| 29 // static |
| 30 SuggestionsServiceFactory* SuggestionsServiceFactory::GetInstance() { |
| 31 return Singleton<SuggestionsServiceFactory>::get(); |
| 32 } |
| 33 |
| 34 // static |
| 35 SuggestionsService* SuggestionsServiceFactory::GetForBrowserState( |
| 36 web::BrowserState* browser_state) { |
| 37 return static_cast<SuggestionsService*>( |
| 38 GetInstance()->GetServiceForBrowserState(browser_state, true)); |
| 39 } |
| 40 |
| 41 SuggestionsServiceFactory::SuggestionsServiceFactory() |
| 42 : BrowserStateKeyedServiceFactory( |
| 43 "SuggestionsService", |
| 44 BrowserStateDependencyManager::GetInstance()) { |
| 45 // No dependencies. |
| 46 } |
| 47 |
| 48 SuggestionsServiceFactory::~SuggestionsServiceFactory() { |
| 49 } |
| 50 |
| 51 KeyedService* SuggestionsServiceFactory::BuildServiceInstanceFor( |
| 52 web::BrowserState* browser_state) const { |
| 53 base::SequencedWorkerPool* sequenced_worker_pool = |
| 54 web::WebThread::GetBlockingPool(); |
| 55 scoped_refptr<base::SequencedTaskRunner> background_task_runner = |
| 56 sequenced_worker_pool->GetSequencedTaskRunner( |
| 57 sequenced_worker_pool->GetSequenceToken()); |
| 58 |
| 59 ios::ChromeBrowserState* chrome_browser_state = |
| 60 ios::ChromeBrowserState::FromBrowserState(browser_state); |
| 61 base::FilePath database_dir( |
| 62 chrome_browser_state->GetPath().Append(kThumbnailDirectory)); |
| 63 scoped_ptr<SuggestionsStore> suggestions_store( |
| 64 new SuggestionsStore(chrome_browser_state->GetPrefs())); |
| 65 scoped_ptr<BlacklistStore> blacklist_store( |
| 66 new BlacklistStore(chrome_browser_state->GetPrefs())); |
| 67 scoped_ptr<leveldb_proto::ProtoDatabaseImpl<ImageData>> db( |
| 68 new leveldb_proto::ProtoDatabaseImpl<ImageData>(background_task_runner)); |
| 69 scoped_ptr<ImageFetcher> image_fetcher(new ImageFetcherImpl( |
| 70 browser_state->GetRequestContext(), sequenced_worker_pool)); |
| 71 scoped_ptr<ImageManager> thumbnail_manager( |
| 72 new ImageManager(image_fetcher.Pass(), db.Pass(), database_dir)); |
| 73 return new SuggestionsService( |
| 74 browser_state->GetRequestContext(), suggestions_store.Pass(), |
| 75 thumbnail_manager.Pass(), blacklist_store.Pass()); |
| 76 } |
| 77 |
| 78 void SuggestionsServiceFactory::RegisterProfilePrefs( |
| 79 user_prefs::PrefRegistrySyncable* registry) { |
| 80 SuggestionsService::RegisterProfilePrefs(registry); |
| 81 } |
| 82 |
| 83 } // namespace suggestions |
OLD | NEW |