1effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// found in the LICENSE file. 4effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chrome/browser/sync/sync_global_error_factory.h" 6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 7effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ash/shell.h" 8effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chrome/browser/browser_process.h" 9effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chrome/browser/profiles/profile.h" 10effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chrome/browser/sync/profile_sync_service.h" 11effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chrome/browser/sync/profile_sync_service_factory.h" 12effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chrome/browser/sync/sync_global_error.h" 13effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chrome/browser/ui/global_error/global_error_service_factory.h" 14effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "components/keyed_service/content/browser_context_dependency_manager.h" 15effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 16effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#if defined(USE_ASH) 17effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "ash/shell.h" 18effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif 19effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 20effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochSyncGlobalErrorFactory::SyncGlobalErrorFactory() 21effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch : BrowserContextKeyedServiceFactory( 22effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch "SyncGlobalError", 23effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch BrowserContextDependencyManager::GetInstance()) { 24effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch DependsOn(ProfileSyncServiceFactory::GetInstance()); 25effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch DependsOn(GlobalErrorServiceFactory::GetInstance()); 26effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 27effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 28effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochSyncGlobalErrorFactory::~SyncGlobalErrorFactory() {} 29effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 30effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// static 31effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochSyncGlobalError* SyncGlobalErrorFactory::GetForProfile( 32effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch Profile* profile) { 33effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch return static_cast<SyncGlobalError*>( 34effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch GetInstance()->GetServiceForBrowserContext(profile, true)); 35effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 36effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 37effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// static 38effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochSyncGlobalErrorFactory* SyncGlobalErrorFactory::GetInstance() { 39effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch return Singleton<SyncGlobalErrorFactory>::get(); 40effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 42effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochKeyedService* SyncGlobalErrorFactory::BuildServiceInstanceFor( 43effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch content::BrowserContext* context) const { 44effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#if defined(USE_ASH) 45effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (ash::Shell::HasInstance()) 46effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch return NULL; 47effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif 48effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 49effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch Profile* profile = static_cast<Profile*>(context); 50effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ProfileSyncService* profile_sync_service = 51effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ProfileSyncServiceFactory::GetForProfile(profile); 52effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 53effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (!profile_sync_service) 54effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch return NULL; 55effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 56effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch SyncErrorController* sync_error_controller = 57effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch profile_sync_service->sync_error_controller(); 58effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (!sync_error_controller) 59effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch return NULL; 60effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 61effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch return new SyncGlobalError(sync_error_controller, 62effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch profile_sync_service); 63effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 64