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 "chrome/browser/sync/sync_error_notifier_factory_ash.h" 6 7 #include "ash/shell.h" 8 #include "chrome/browser/browser_process.h" 9 #include "chrome/browser/profiles/profile.h" 10 #include "chrome/browser/sync/profile_sync_service.h" 11 #include "chrome/browser/sync/profile_sync_service_factory.h" 12 #include "chrome/browser/sync/sync_error_notifier_ash.h" 13 #include "components/keyed_service/content/browser_context_dependency_manager.h" 14 15 SyncErrorNotifierFactory::SyncErrorNotifierFactory() 16 : BrowserContextKeyedServiceFactory( 17 "SyncErrorNotifier", 18 BrowserContextDependencyManager::GetInstance()) { 19 DependsOn(ProfileSyncServiceFactory::GetInstance()); 20 } 21 22 SyncErrorNotifierFactory::~SyncErrorNotifierFactory() {} 23 24 // static 25 SyncErrorNotifier* SyncErrorNotifierFactory::GetForProfile( 26 Profile* profile) { 27 return static_cast<SyncErrorNotifier*>( 28 GetInstance()->GetServiceForBrowserContext(profile, true)); 29 } 30 31 // static 32 SyncErrorNotifierFactory* SyncErrorNotifierFactory::GetInstance() { 33 return Singleton<SyncErrorNotifierFactory>::get(); 34 } 35 36 KeyedService* SyncErrorNotifierFactory::BuildServiceInstanceFor( 37 content::BrowserContext* context) const { 38 if (!ash::Shell::HasInstance()) 39 return NULL; 40 41 Profile* profile = static_cast<Profile*>(context); 42 ProfileSyncService* profile_sync_service = 43 ProfileSyncServiceFactory::GetForProfile(profile); 44 45 if (!profile_sync_service) 46 return NULL; 47 48 SyncErrorController* sync_error_controller = 49 profile_sync_service->sync_error_controller(); 50 if (!sync_error_controller) 51 return NULL; 52 53 return new SyncErrorNotifier(sync_error_controller, profile); 54 } 55