| Index: chrome/browser/ui/cocoa/bookmarks/bookmark_model_observer_for_cocoa.mm
|
| diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_model_observer_for_cocoa.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_model_observer_for_cocoa.mm
|
| index eba59699d05e295bc6e2ec8828a2912dc3d9fc50..e748818a2a3c05af116ba8c7b417033800ef89d9 100644
|
| --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_model_observer_for_cocoa.mm
|
| +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_model_observer_for_cocoa.mm
|
| @@ -5,15 +5,11 @@
|
| #include "chrome/browser/ui/cocoa/bookmarks/bookmark_model_observer_for_cocoa.h"
|
|
|
| BookmarkModelObserverForCocoa::BookmarkModelObserverForCocoa(
|
| - const BookmarkNode* node,
|
| BookmarkModel* model,
|
| - NSObject* object,
|
| - SEL selector) {
|
| + ChangeCallback callback) {
|
| DCHECK(model);
|
| - node_ = node;
|
| + callback_.reset(Block_copy(callback));
|
| model_ = model;
|
| - object_ = object;
|
| - selector_ = selector;
|
| model_->AddObserver(this);
|
| }
|
|
|
| @@ -21,9 +17,19 @@ BookmarkModelObserverForCocoa::~BookmarkModelObserverForCocoa() {
|
| model_->RemoveObserver(this);
|
| }
|
|
|
| +void BookmarkModelObserverForCocoa::StartObservingNode(
|
| + const BookmarkNode* node) {
|
| + nodes_.insert(node);
|
| +}
|
| +
|
| +void BookmarkModelObserverForCocoa::StopObservingNode(
|
| + const BookmarkNode* node) {
|
| + nodes_.erase(node);
|
| +}
|
| +
|
| void BookmarkModelObserverForCocoa::BookmarkModelBeingDeleted(
|
| BookmarkModel* model) {
|
| - Notify();
|
| + Notify(YES);
|
| }
|
|
|
| void BookmarkModelObserverForCocoa::BookmarkNodeMoved(
|
| @@ -34,7 +40,7 @@ void BookmarkModelObserverForCocoa::BookmarkNodeMoved(
|
| int new_index) {
|
| // Editors often have a tree of parents, so movement of folders
|
| // must cause a cancel.
|
| - Notify();
|
| + Notify(NO);
|
| }
|
|
|
| void BookmarkModelObserverForCocoa::BookmarkNodeRemoved(
|
| @@ -43,27 +49,21 @@ void BookmarkModelObserverForCocoa::BookmarkNodeRemoved(
|
| int old_index,
|
| const BookmarkNode* node) {
|
| // See comment in BookmarkNodeMoved.
|
| - Notify();
|
| + Notify(YES);
|
| }
|
|
|
| void BookmarkModelObserverForCocoa::BookmarkAllNodesRemoved(
|
| BookmarkModel* model) {
|
| - Notify();
|
| + Notify(YES);
|
| }
|
|
|
| void BookmarkModelObserverForCocoa::BookmarkNodeChanged(
|
| BookmarkModel* model,
|
| const BookmarkNode* node) {
|
| - if ((node_ == node) || (!node_))
|
| - Notify();
|
| -}
|
| -
|
| -void BookmarkModelObserverForCocoa::ExtensiveBookmarkChangesBeginning(
|
| - BookmarkModel* model) {
|
| - // Be conservative.
|
| - Notify();
|
| + if (!nodes_.size() || nodes_.find(node) != nodes_.end())
|
| + Notify(NO);
|
| }
|
|
|
| -void BookmarkModelObserverForCocoa::Notify() {
|
| - [object_ performSelector:selector_ withObject:nil];
|
| +void BookmarkModelObserverForCocoa::Notify(BOOL deleted) {
|
| + callback_.get()(deleted);
|
| }
|
|
|