// Copyright (c) 2009 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_BOOKMARKS_BOOKMARK_MODEL_OBSERVER_H_ #define CHROME_BROWSER_BOOKMARKS_BOOKMARK_MODEL_OBSERVER_H_ #pragma once class BookmarkModel; class BookmarkNode; // Observer for the BookmarkModel. class BookmarkModelObserver { public: // Invoked when the model has finished loading. virtual void Loaded(BookmarkModel* model) = 0; // Invoked from the destructor of the BookmarkModel. virtual void BookmarkModelBeingDeleted(BookmarkModel* model) {} // Invoked when a node has moved. virtual void BookmarkNodeMoved(BookmarkModel* model, const BookmarkNode* old_parent, int old_index, const BookmarkNode* new_parent, int new_index) = 0; // Invoked when a node has been added. virtual void BookmarkNodeAdded(BookmarkModel* model, const BookmarkNode* parent, int index) = 0; // Invoked when a node has been removed, the item may still be starred though. // |parent| the parent of the node that was removed. // |old_index| the index of the removed node in |parent| before it was // removed. // |node| is the node that was removed. virtual void BookmarkNodeRemoved(BookmarkModel* model, const BookmarkNode* parent, int old_index, const BookmarkNode* node) = 0; // Invoked when the title, url or favicon of a node has changed. virtual void BookmarkNodeChanged(BookmarkModel* model, const BookmarkNode* node) = 0; // Invoked when a favicon has finished loading. virtual void BookmarkNodeFaviconLoaded(BookmarkModel* model, const BookmarkNode* node) = 0; // Invoked when the children (just direct children, not descendants) of // |node| have been reordered in some way, such as sorted. virtual void BookmarkNodeChildrenReordered(BookmarkModel* model, const BookmarkNode* node) = 0; // Invoked before a batch import begins. This tells UI intensive observers // to wait until the updates finish to update themselves. // These methods should only be used for imports. Observers should still // respond to BookmarkNodeRemoved immediately, to avoid holding onto // stale node pointers. virtual void BookmarkImportBeginning(BookmarkModel* model) {} // Invoked after a batch import finishes. This tells observers to update // themselves if they were waiting for the update to finish. virtual void BookmarkImportEnding(BookmarkModel* model) {} protected: virtual ~BookmarkModelObserver() {} }; #endif // CHROME_BROWSER_BOOKMARKS_BOOKMARK_MODEL_OBSERVER_H_