1 // Copyright (c) 2012 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_BOOKMARKS_BOOKMARK_MODEL_FACTORY_H_ 6 #define CHROME_BROWSER_BOOKMARKS_BOOKMARK_MODEL_FACTORY_H_ 7 8 #include "base/basictypes.h" 9 #include "base/compiler_specific.h" 10 #include "components/browser_context_keyed_service/browser_context_keyed_service_factory.h" 11 12 template <typename T> struct DefaultSingletonTraits; 13 14 class Profile; 15 class BookmarkModel; 16 17 // Singleton that owns all BookmarkModel and associates them with Profiles. 18 class BookmarkModelFactory : public BrowserContextKeyedServiceFactory { 19 public: 20 static BookmarkModel* GetForProfile(Profile* profile); 21 22 static BookmarkModel* GetForProfileIfExists(Profile* profile); 23 24 static BookmarkModelFactory* GetInstance(); 25 26 private: 27 friend struct DefaultSingletonTraits<BookmarkModelFactory>; 28 29 BookmarkModelFactory(); 30 virtual ~BookmarkModelFactory(); 31 32 // BrowserContextKeyedServiceFactory: 33 virtual BrowserContextKeyedService* BuildServiceInstanceFor( 34 content::BrowserContext* context) const OVERRIDE; 35 virtual void RegisterProfilePrefs( 36 user_prefs::PrefRegistrySyncable* registry) OVERRIDE; 37 virtual content::BrowserContext* GetBrowserContextToUse( 38 content::BrowserContext* context) const OVERRIDE; 39 virtual bool ServiceIsNULLWhileTesting() const OVERRIDE; 40 41 DISALLOW_COPY_AND_ASSIGN(BookmarkModelFactory); 42 }; 43 44 #endif // CHROME_BROWSER_BOOKMARKS_BOOKMARK_MODEL_FACTORY_H_ 45