bookmark_undo_service.h 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. // Copyright 2013 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_UNDO_BOOKMARK_UNDO_SERVICE_H_
  5. #define COMPONENTS_UNDO_BOOKMARK_UNDO_SERVICE_H_
  6. #include <map>
  7. #include "base/memory/raw_ptr.h"
  8. #include "base/scoped_observation.h"
  9. #include "components/bookmarks/browser/base_bookmark_model_observer.h"
  10. #include "components/bookmarks/browser/bookmark_model.h"
  11. #include "components/bookmarks/browser/bookmark_node_data.h"
  12. #include "components/bookmarks/browser/bookmark_undo_delegate.h"
  13. #include "components/keyed_service/core/keyed_service.h"
  14. #include "components/undo/undo_manager.h"
  15. // BookmarkUndoService --------------------------------------------------------
  16. // BookmarkUndoService is owned by the profile, and is responsible for observing
  17. // BookmarkModel changes in order to provide an undo for those changes.
  18. class BookmarkUndoService : public bookmarks::BaseBookmarkModelObserver,
  19. public bookmarks::BookmarkUndoDelegate,
  20. public KeyedService {
  21. public:
  22. BookmarkUndoService();
  23. BookmarkUndoService(const BookmarkUndoService&) = delete;
  24. BookmarkUndoService& operator=(const BookmarkUndoService&) = delete;
  25. ~BookmarkUndoService() override;
  26. // Starts the BookmarkUndoService and register it as a BookmarkModelObserver.
  27. // Calling this method is optional, but the service will be inactive until it
  28. // is called.
  29. void Start(bookmarks::BookmarkModel* model);
  30. UndoManager* undo_manager() { return &undo_manager_; }
  31. // KeyedService:
  32. void Shutdown() override;
  33. private:
  34. // bookmarks::BaseBookmarkModelObserver:
  35. void BookmarkModelChanged() override {}
  36. void BookmarkModelLoaded(bookmarks::BookmarkModel* model,
  37. bool ids_reassigned) override;
  38. void BookmarkModelBeingDeleted(bookmarks::BookmarkModel* model) override;
  39. void BookmarkNodeMoved(bookmarks::BookmarkModel* model,
  40. const bookmarks::BookmarkNode* old_parent,
  41. size_t old_index,
  42. const bookmarks::BookmarkNode* new_parent,
  43. size_t new_index) override;
  44. void BookmarkNodeAdded(bookmarks::BookmarkModel* model,
  45. const bookmarks::BookmarkNode* parent,
  46. size_t index) override;
  47. void OnWillChangeBookmarkNode(bookmarks::BookmarkModel* model,
  48. const bookmarks::BookmarkNode* node) override;
  49. void OnWillReorderBookmarkNode(bookmarks::BookmarkModel* model,
  50. const bookmarks::BookmarkNode* node) override;
  51. void GroupedBookmarkChangesBeginning(
  52. bookmarks::BookmarkModel* model) override;
  53. void GroupedBookmarkChangesEnded(bookmarks::BookmarkModel* model) override;
  54. // bookmarks::BookmarkUndoDelegate:
  55. void SetUndoProvider(bookmarks::BookmarkUndoProvider* undo_provider) override;
  56. void OnBookmarkNodeRemoved(
  57. bookmarks::BookmarkModel* model,
  58. const bookmarks::BookmarkNode* parent,
  59. size_t index,
  60. std::unique_ptr<bookmarks::BookmarkNode> node) override;
  61. raw_ptr<bookmarks::BookmarkModel> model_;
  62. raw_ptr<bookmarks::BookmarkUndoProvider> undo_provider_;
  63. UndoManager undo_manager_;
  64. base::ScopedObservation<bookmarks::BookmarkModel,
  65. bookmarks::BookmarkModelObserver>
  66. scoped_observation_{this};
  67. };
  68. #endif // COMPONENTS_UNDO_BOOKMARK_UNDO_SERVICE_H_