1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file. 4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#ifndef CHROME_BROWSER_UI_APP_LIST_APP_LIST_SYNCABLE_SERVICE_FACTORY_H_ 6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define CHROME_BROWSER_UI_APP_LIST_APP_LIST_SYNCABLE_SERVICE_FACTORY_H_ 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/basictypes.h" 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/memory/singleton.h" 10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/content/browser_context_keyed_service_factory.h" 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class Profile; 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace app_list { 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class AppListSyncableService; 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Singleton that owns all AppListSyncableServices and associates them with 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Profiles. Listens for the Profile's destruction notification and cleans up 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// the associated AppListSyncableService. 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class AppListSyncableServiceFactory : public BrowserContextKeyedServiceFactory { 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public: 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static AppListSyncableService* GetForProfile(Profile* profile); 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static AppListSyncableServiceFactory* GetInstance(); 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 27c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch static KeyedService* BuildInstanceFor( 28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch content::BrowserContext* browser_context); 29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private: 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) friend struct DefaultSingletonTraits<AppListSyncableServiceFactory>; 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) AppListSyncableServiceFactory(); 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual ~AppListSyncableServiceFactory(); 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // BrowserContextKeyedServiceFactory: 37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual KeyedService* BuildServiceInstanceFor( 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) content::BrowserContext* profile) const OVERRIDE; 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void RegisterProfilePrefs( 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) user_prefs::PrefRegistrySyncable* registry) OVERRIDE; 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual content::BrowserContext* GetBrowserContextToUse( 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) content::BrowserContext* context) const OVERRIDE; 43c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual bool ServiceIsCreatedWithBrowserContext() const OVERRIDE; 44c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual bool ServiceIsNULLWhileTesting() const OVERRIDE; 45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AppListSyncableServiceFactory); 47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}; 48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} // namespace app_list 50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif // CHROME_BROWSER_UI_APP_LIST_APP_LIST_SYNCABLE_SERVICE_FACTORY_H_ 52