14ee2ad04344446e610172a0e73949212923014dfSebastian Redl// Copyright 2013 The Chromium Authors. All rights reserved. 22cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor// Use of this source code is governed by a BSD-style license that can be 32cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor// found in the LICENSE file. 42cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 52cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor#ifndef CHROME_BROWSER_UNDO_BOOKMARK_UNDO_SERVICE_H_ 62cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor#define CHROME_BROWSER_UNDO_BOOKMARK_UNDO_SERVICE_H_ 72cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 82cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor#include <map> 92cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 10a4232eb646d89e7d52424bb42eb87d9061f39e63Sebastian Redl#include "chrome/browser/undo/bookmark_renumber_observer.h" 112cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor#include "chrome/browser/undo/undo_manager.h" 122cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor#include "components/bookmarks/browser/base_bookmark_model_observer.h" 132cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor#include "components/bookmarks/browser/bookmark_node_data.h" 147faa2ec03a7ef120ac165bb45b6c70a8b20c9f1cSebastian Redl#include "components/keyed_service/core/keyed_service.h" 1589d9980bbc2e4a4ac86673e6ec16fb9f5babb63bDouglas Gregor 160eca89e9890db4d8336ce762a5b359a1d58ca02bArgyrios Kyrtzidisclass Profile; 17e737f5041a36d0befb39ffeed8d50ba15916d3daDouglas Gregornamespace { 18e737f5041a36d0befb39ffeed8d50ba15916d3daDouglas Gregorclass BookmarkUndoOperation; 192cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor} // namespace 202cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 212cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor// BookmarkUndoService -------------------------------------------------------- 222a7fb27913999d132cf9e10e03dc5271faa2e9d3John McCall 2389eaf3af92c72c0c1aae807644e39cabc461d685Argyrios Kyrtzidis// BookmarkUndoService is owned by the profile, and is responsible for observing 240b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor// BookmarkModel changes in order to provide an undo for those changes. 257a1fad38256eb4c5129359be85ba1ea1678eb5c9John McCallclass BookmarkUndoService : public BaseBookmarkModelObserver, 262cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor public KeyedService, 27a1ee0c548b8aa4aaf93d1917e304e3da13171a08John McCall public BookmarkRenumberObserver { 286ab7cd853e9c15cf986a8a7c3db1f8d20e275409Sebastian Redl public: 297c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner explicit BookmarkUndoService(Profile* profile); 306a5a23f8e7fb65e028c8092bc1d1a1d9dfe2e9bcDouglas Gregor virtual ~BookmarkUndoService(); 317c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner 3283d63c78810556d26b62ac4cbae2eda6cdd2570cSteve Naroff UndoManager* undo_manager() { return &undo_manager_; } 3314f79002e58556798e86168c63e48d533287eda5Douglas Gregor 3410e286aa8d39fb51a21412850265d9dae74613eeChris Lattner private: 353251ceb90b3fec68e86d6dcfa58836e20a7205c3Douglas Gregor // BaseBookmarkModelObserver: 3614f79002e58556798e86168c63e48d533287eda5Douglas Gregor virtual void BookmarkModelChanged() OVERRIDE {} 37bd94500d3aa60092fb0f1e90f53fb0d03fa502a8Douglas Gregor virtual void BookmarkModelLoaded(BookmarkModel* model, 382bec0410d268779f601bd509e0302a500af7ac6aDouglas Gregor bool ids_reassigned) OVERRIDE; 39ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor virtual void BookmarkModelBeingDeleted(BookmarkModel* model) OVERRIDE; 400a0d2b179085a52c10402feebeb6db8b4d96a140Douglas Gregor virtual void BookmarkNodeMoved(BookmarkModel* model, 4117fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor const BookmarkNode* old_parent, 4217fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor int old_index, 432596e429a61602312bdd149786045b8a90cd2d10Daniel Dunbar const BookmarkNode* new_parent, 442cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor int new_index) OVERRIDE; 45fbfd180495e7800975c6d9bdc6d24e706ef70e34Michael J. Spencer virtual void BookmarkNodeAdded(BookmarkModel* model, 4614f79002e58556798e86168c63e48d533287eda5Douglas Gregor const BookmarkNode* parent, 4703013fa9a0bf1ef4b907f5fec006c8f4000fdd21Michael J. Spencer int index) OVERRIDE; 483c304bd9ec2b4611572d4cbae9e1727bbecb5dc9Chris Lattner virtual void OnWillRemoveBookmarks(BookmarkModel* model, 49cfbf1c7536e016dc275139dd842d4a5f059a749fDouglas Gregor const BookmarkNode* parent, 502cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor int old_index, 518538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian Redl const BookmarkNode* node) OVERRIDE; 522cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor virtual void OnWillRemoveAllUserBookmarks(BookmarkModel* model) OVERRIDE; 53ade5000c8763f4bec41f452d7efa3a9b2a6d4712Sebastian Redl virtual void OnWillChangeBookmarkNode(BookmarkModel* model, 546e089c687cc2b914c46859ab7e46fe4c3c6b0afbBenjamin Kramer const BookmarkNode* node) OVERRIDE; 556e089c687cc2b914c46859ab7e46fe4c3c6b0afbBenjamin Kramer virtual void OnWillReorderBookmarkNode(BookmarkModel* model, 566e089c687cc2b914c46859ab7e46fe4c3c6b0afbBenjamin Kramer const BookmarkNode* node) OVERRIDE; 576e089c687cc2b914c46859ab7e46fe4c3c6b0afbBenjamin Kramer virtual void GroupedBookmarkChangesBeginning(BookmarkModel* model) OVERRIDE; 58ade5000c8763f4bec41f452d7efa3a9b2a6d4712Sebastian Redl virtual void GroupedBookmarkChangesEnded(BookmarkModel* model) OVERRIDE; 596e089c687cc2b914c46859ab7e46fe4c3c6b0afbBenjamin Kramer 606e089c687cc2b914c46859ab7e46fe4c3c6b0afbBenjamin Kramer // BookmarkRenumberObserver: 616e089c687cc2b914c46859ab7e46fe4c3c6b0afbBenjamin Kramer virtual void OnBookmarkRenumbered(int64 old_id, int64 new_id) OVERRIDE; 626e089c687cc2b914c46859ab7e46fe4c3c6b0afbBenjamin Kramer 636e089c687cc2b914c46859ab7e46fe4c3c6b0afbBenjamin Kramer Profile* profile_; 64ade5000c8763f4bec41f452d7efa3a9b2a6d4712Sebastian Redl UndoManager undo_manager_; 65ade5000c8763f4bec41f452d7efa3a9b2a6d4712Sebastian Redl 662cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor DISALLOW_COPY_AND_ASSIGN(BookmarkUndoService); 672cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor}; 682cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 6912b1c7615d4f9a2edc544be499f895f16ac100edChris Lattner#endif // CHROME_BROWSER_UNDO_BOOKMARK_UNDO_SERVICE_H_ 702cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor