app_list_syncable_service_factory.cc revision 6d86b77056ed63eb6871182f42a9fd5f07550f90
1// Copyright 2013 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/ui/app_list/app_list_syncable_service_factory.h" 6 7#include <set> 8 9#include "base/prefs/pref_service.h" 10#include "chrome/browser/apps/drive/drive_app_provider.h" 11#include "chrome/browser/profiles/incognito_helpers.h" 12#include "chrome/browser/profiles/profile.h" 13#include "chrome/browser/ui/app_list/app_list_syncable_service.h" 14#include "components/keyed_service/content/browser_context_dependency_manager.h" 15#include "extensions/browser/extension_system.h" 16#include "extensions/browser/extension_system_provider.h" 17#include "extensions/browser/extensions_browser_client.h" 18 19#if defined(OS_CHROMEOS) 20#include "chrome/browser/chromeos/profiles/profile_helper.h" 21#endif 22 23namespace app_list { 24 25// static 26AppListSyncableService* AppListSyncableServiceFactory::GetForProfile( 27 Profile* profile) { 28 return static_cast<AppListSyncableService*>( 29 GetInstance()->GetServiceForBrowserContext(profile, true)); 30} 31 32// static 33AppListSyncableServiceFactory* AppListSyncableServiceFactory::GetInstance() { 34 return Singleton<AppListSyncableServiceFactory>::get(); 35} 36 37// static 38KeyedService* AppListSyncableServiceFactory::BuildInstanceFor( 39 content::BrowserContext* browser_context) { 40 Profile* profile = static_cast<Profile*>(browser_context); 41#if defined(OS_CHROMEOS) 42 if (chromeos::ProfileHelper::IsSigninProfile(profile)) 43 return NULL; 44#endif 45 VLOG(1) << "BuildInstanceFor: " << profile->GetDebugName() 46 << " (" << profile << ")"; 47 return new AppListSyncableService(profile, 48 extensions::ExtensionSystem::Get(profile)); 49} 50 51AppListSyncableServiceFactory::AppListSyncableServiceFactory() 52 : BrowserContextKeyedServiceFactory( 53 "AppListSyncableService", 54 BrowserContextDependencyManager::GetInstance()) { 55 VLOG(1) << "AppListSyncableServiceFactory()"; 56 typedef std::set<BrowserContextKeyedServiceFactory*> FactorySet; 57 FactorySet dependent_factories; 58 dependent_factories.insert( 59 extensions::ExtensionsBrowserClient::Get()->GetExtensionSystemFactory()); 60 DriveAppProvider::AppendDependsOnFactories(&dependent_factories); 61 for (FactorySet::iterator it = dependent_factories.begin(); 62 it != dependent_factories.end(); 63 ++it) { 64 DependsOn(*it); 65 } 66} 67 68AppListSyncableServiceFactory::~AppListSyncableServiceFactory() { 69} 70 71KeyedService* AppListSyncableServiceFactory::BuildServiceInstanceFor( 72 content::BrowserContext* browser_context) const { 73 return BuildInstanceFor(static_cast<Profile*>(browser_context)); 74} 75 76void AppListSyncableServiceFactory::RegisterProfilePrefs( 77 user_prefs::PrefRegistrySyncable* registry) { 78} 79 80content::BrowserContext* AppListSyncableServiceFactory::GetBrowserContextToUse( 81 content::BrowserContext* context) const { 82 // This matches the logic in ExtensionSyncServiceFactory, which uses the 83 // orginal browser context. 84 return chrome::GetBrowserContextRedirectedInIncognito(context); 85} 86 87bool AppListSyncableServiceFactory::ServiceIsCreatedWithBrowserContext() const { 88 // Start AppListSyncableService early so that the app list positions are 89 // available before the app list is opened. 90 return true; 91} 92 93bool AppListSyncableServiceFactory::ServiceIsNULLWhileTesting() const { 94 return true; 95} 96 97} // namespace app_list 98