/ios/chrome/browser/bookmarks/bookmark_model_factory.h

https://gitlab.com/0072016/Facebook-SDK- · C Header · 56 lines · 36 code · 14 blank · 6 comment · 0 complexity · 4e9b7ecec1c7f8ffb882d7ad6bb30087 MD5 · raw file

  1. // Copyright 2015 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. #ifndef IOS_CHROME_BROWSER_BOOKMARKS_BOOKMARK_MODEL_FACTORY_H_
  5. #define IOS_CHROME_BROWSER_BOOKMARKS_BOOKMARK_MODEL_FACTORY_H_
  6. #include <memory>
  7. #include "base/macros.h"
  8. #include "components/keyed_service/ios/browser_state_keyed_service_factory.h"
  9. namespace base {
  10. template <typename T>
  11. struct DefaultSingletonTraits;
  12. } // namespace base
  13. namespace bookmarks {
  14. class BookmarkModel;
  15. }
  16. namespace ios {
  17. class ChromeBrowserState;
  18. // Singleton that owns all BookmarkModels and associates them with
  19. // ios::ChromeBrowserState.
  20. class BookmarkModelFactory : public BrowserStateKeyedServiceFactory {
  21. public:
  22. static bookmarks::BookmarkModel* GetForBrowserState(
  23. ios::ChromeBrowserState* browser_state);
  24. static bookmarks::BookmarkModel* GetForBrowserStateIfExists(
  25. ios::ChromeBrowserState* browser_state);
  26. static BookmarkModelFactory* GetInstance();
  27. private:
  28. friend struct base::DefaultSingletonTraits<BookmarkModelFactory>;
  29. BookmarkModelFactory();
  30. ~BookmarkModelFactory() override;
  31. // BrowserStateKeyedServiceFactory implementation.
  32. void RegisterBrowserStatePrefs(
  33. user_prefs::PrefRegistrySyncable* registry) override;
  34. std::unique_ptr<KeyedService> BuildServiceInstanceFor(
  35. web::BrowserState* context) const override;
  36. web::BrowserState* GetBrowserStateToUse(
  37. web::BrowserState* context) const override;
  38. bool ServiceIsNULLWhileTesting() const override;
  39. DISALLOW_COPY_AND_ASSIGN(BookmarkModelFactory);
  40. };
  41. } // namespace ios
  42. #endif // IOS_CHROME_BROWSER_BOOKMARKS_BOOKMARK_MODEL_FACTORY_H_