managed_bookmarks_tracker.h 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // Copyright 2014 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 COMPONENTS_BOOKMARKS_MANAGED_MANAGED_BOOKMARKS_TRACKER_H_
  5. #define COMPONENTS_BOOKMARKS_MANAGED_MANAGED_BOOKMARKS_TRACKER_H_
  6. #include <stddef.h>
  7. #include <stdint.h>
  8. #include <memory>
  9. #include <string>
  10. #include "base/callback_forward.h"
  11. #include "base/memory/raw_ptr.h"
  12. #include "base/values.h"
  13. #include "components/prefs/pref_change_registrar.h"
  14. class GURL;
  15. class PrefService;
  16. namespace bookmarks {
  17. class BookmarkModel;
  18. class BookmarkNode;
  19. class BookmarkPermanentNode;
  20. // Tracks either the Managed Bookmarks pref (set by policy) and makes the
  21. // managed_node() in the BookmarkModel follow the policy-defined bookmark tree.
  22. class ManagedBookmarksTracker {
  23. public:
  24. using GetManagementDomainCallback = base::RepeatingCallback<std::string()>;
  25. // Shared constants used in the policy configuration.
  26. static const char kName[];
  27. static const char kUrl[];
  28. static const char kChildren[];
  29. static const char kFolderName[];
  30. ManagedBookmarksTracker(BookmarkModel* model,
  31. PrefService* prefs,
  32. GetManagementDomainCallback callback);
  33. ManagedBookmarksTracker(const ManagedBookmarksTracker&) = delete;
  34. ManagedBookmarksTracker& operator=(const ManagedBookmarksTracker&) = delete;
  35. ~ManagedBookmarksTracker();
  36. // Returns the initial list of managed bookmarks, which can be passed to
  37. // LoadInitial() to do the initial load.
  38. base::Value::List GetInitialManagedBookmarks();
  39. // Loads the initial managed bookmarks in |list| into |folder|.
  40. // New nodes will be assigned IDs starting at |next_node_id|.
  41. // Returns the next node ID to use.
  42. static int64_t LoadInitial(BookmarkNode* folder,
  43. const base::Value::List& list,
  44. int64_t next_node_id);
  45. // Starts tracking the pref for updates to the managed bookmarks.
  46. // Should be called after loading the initial bookmarks.
  47. void Init(BookmarkPermanentNode* managed_node);
  48. private:
  49. std::u16string GetBookmarksFolderTitle() const;
  50. void ReloadManagedBookmarks();
  51. void UpdateBookmarks(const BookmarkNode* folder,
  52. const base::Value::List& list);
  53. static bool LoadBookmark(const base::Value::List& list,
  54. size_t index,
  55. std::u16string* title,
  56. GURL* url,
  57. const base::Value::List** children);
  58. raw_ptr<BookmarkModel> model_;
  59. raw_ptr<BookmarkPermanentNode> managed_node_;
  60. raw_ptr<PrefService> prefs_;
  61. PrefChangeRegistrar registrar_;
  62. GetManagementDomainCallback get_management_domain_callback_;
  63. };
  64. } // namespace bookmarks
  65. #endif // COMPONENTS_BOOKMARKS_MANAGED_MANAGED_BOOKMARKS_TRACKER_H_