diff options
Diffstat (limited to 'chrome/browser/bookmarks')
-rw-r--r-- | chrome/browser/bookmarks/bookmark_model.cc | 10 | ||||
-rw-r--r-- | chrome/browser/bookmarks/bookmark_model.h | 6 | ||||
-rw-r--r-- | chrome/browser/bookmarks/bookmark_model_observer.h | 11 |
3 files changed, 27 insertions, 0 deletions
diff --git a/chrome/browser/bookmarks/bookmark_model.cc b/chrome/browser/bookmarks/bookmark_model.cc index 434fde0..5385810 100644 --- a/chrome/browser/bookmarks/bookmark_model.cc +++ b/chrome/browser/bookmarks/bookmark_model.cc @@ -609,6 +609,16 @@ void BookmarkModel::RemoveAndDeleteNode(BookmarkNode* delete_me) { Details<history::URLsStarredDetails>(&details)); } +void BookmarkModel::BeginImportMode() { + FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, + BookmarkImportBeginning(this)); +} + +void BookmarkModel::EndImportMode() { + FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, + BookmarkImportEnding(this)); +} + BookmarkNode* BookmarkModel::AddNode(BookmarkNode* parent, int index, BookmarkNode* node, diff --git a/chrome/browser/bookmarks/bookmark_model.h b/chrome/browser/bookmarks/bookmark_model.h index fcea7c7..1ffdcbe 100644 --- a/chrome/browser/bookmarks/bookmark_model.h +++ b/chrome/browser/bookmarks/bookmark_model.h @@ -205,6 +205,12 @@ class BookmarkModel : public NotificationObserver, public BookmarkService { observers_.RemoveObserver(observer); } + // Notify the observes that an import is about to happen, so they can + // delay any expensive UI updates until it is finished. + void BeginImportMode(); + void EndImportMode(); + + // Unstars or deletes the specified entry. Removing a group entry recursively // unstars all nodes. Observers are notified immediately. void Remove(const BookmarkNode* parent, int index); diff --git a/chrome/browser/bookmarks/bookmark_model_observer.h b/chrome/browser/bookmarks/bookmark_model_observer.h index e850cb3..2136475 100644 --- a/chrome/browser/bookmarks/bookmark_model_observer.h +++ b/chrome/browser/bookmarks/bookmark_model_observer.h @@ -52,6 +52,17 @@ class BookmarkModelObserver { 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() {} }; |