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 5 #ifndef CHROME_BROWSER_UNDO_BOOKMARK_UNDO_SERVICE_H_ 6 #define CHROME_BROWSER_UNDO_BOOKMARK_UNDO_SERVICE_H_ 7 8 #include <map> 9 10 #include "chrome/browser/undo/bookmark_renumber_observer.h" 11 #include "chrome/browser/undo/undo_manager.h" 12 #include "components/bookmarks/browser/base_bookmark_model_observer.h" 13 #include "components/bookmarks/browser/bookmark_node_data.h" 14 #include "components/keyed_service/core/keyed_service.h" 15 16 class Profile; 17 namespace { 18 class BookmarkUndoOperation; 19 } // namespace 20 21 // BookmarkUndoService -------------------------------------------------------- 22 23 // BookmarkUndoService is owned by the profile, and is responsible for observing 24 // BookmarkModel changes in order to provide an undo for those changes. 25 class BookmarkUndoService : public BaseBookmarkModelObserver, 26 public KeyedService, 27 public BookmarkRenumberObserver { 28 public: 29 explicit BookmarkUndoService(Profile* profile); 30 virtual ~BookmarkUndoService(); 31 32 UndoManager* undo_manager() { return &undo_manager_; } 33 34 private: 35 // BaseBookmarkModelObserver: 36 virtual void BookmarkModelChanged() OVERRIDE {} 37 virtual void BookmarkModelLoaded(BookmarkModel* model, 38 bool ids_reassigned) OVERRIDE; 39 virtual void BookmarkModelBeingDeleted(BookmarkModel* model) OVERRIDE; 40 virtual void BookmarkNodeMoved(BookmarkModel* model, 41 const BookmarkNode* old_parent, 42 int old_index, 43 const BookmarkNode* new_parent, 44 int new_index) OVERRIDE; 45 virtual void BookmarkNodeAdded(BookmarkModel* model, 46 const BookmarkNode* parent, 47 int index) OVERRIDE; 48 virtual void OnWillRemoveBookmarks(BookmarkModel* model, 49 const BookmarkNode* parent, 50 int old_index, 51 const BookmarkNode* node) OVERRIDE; 52 virtual void OnWillRemoveAllUserBookmarks(BookmarkModel* model) OVERRIDE; 53 virtual void OnWillChangeBookmarkNode(BookmarkModel* model, 54 const BookmarkNode* node) OVERRIDE; 55 virtual void OnWillReorderBookmarkNode(BookmarkModel* model, 56 const BookmarkNode* node) OVERRIDE; 57 virtual void GroupedBookmarkChangesBeginning(BookmarkModel* model) OVERRIDE; 58 virtual void GroupedBookmarkChangesEnded(BookmarkModel* model) OVERRIDE; 59 60 // BookmarkRenumberObserver: 61 virtual void OnBookmarkRenumbered(int64 old_id, int64 new_id) OVERRIDE; 62 63 Profile* profile_; 64 UndoManager undo_manager_; 65 66 DISALLOW_COPY_AND_ASSIGN(BookmarkUndoService); 67 }; 68 69 #endif // CHROME_BROWSER_UNDO_BOOKMARK_UNDO_SERVICE_H_ 70