1// Copyright (c) 2011 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#ifndef CHROME_BROWSER_AUTOFILL_PERSONAL_DATA_MANAGER_FACTORY_H_ 6#define CHROME_BROWSER_AUTOFILL_PERSONAL_DATA_MANAGER_FACTORY_H_ 7 8#include "base/compiler_specific.h" 9#include "components/keyed_service/content/browser_context_keyed_service_factory.h" 10#include "components/keyed_service/core/keyed_service.h" 11 12template <typename T> struct DefaultSingletonTraits; 13class Profile; 14 15namespace autofill { 16 17class PersonalDataManager; 18 19// Singleton that owns all PersonalDataManagers and associates them with 20// Profiles. 21// Listens for the Profile's destruction notification and cleans up the 22// associated PersonalDataManager. 23class PersonalDataManagerFactory : public BrowserContextKeyedServiceFactory { 24 public: 25 // Returns the PersonalDataManager for |profile|, creating it if it is not 26 // yet created. 27 static PersonalDataManager* GetForProfile(Profile* profile); 28 29 static PersonalDataManagerFactory* GetInstance(); 30 31 private: 32 friend struct DefaultSingletonTraits<PersonalDataManagerFactory>; 33 34 PersonalDataManagerFactory(); 35 virtual ~PersonalDataManagerFactory(); 36 37 // BrowserContextKeyedServiceFactory: 38 virtual KeyedService* BuildServiceInstanceFor( 39 content::BrowserContext* profile) const OVERRIDE; 40 virtual content::BrowserContext* GetBrowserContextToUse( 41 content::BrowserContext* context) const OVERRIDE; 42}; 43 44} // namespace autofill 45 46#endif // CHROME_BROWSER_AUTOFILL_PERSONAL_DATA_MANAGER_FACTORY_H_ 47