Home | History | Annotate | Download | only in undo
      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