bookmark_model_observer_for_cocoa.mm revision 5821806d5e7f356e8fa4b058a389a808ea183019
1// Copyright (c) 2012 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#include "chrome/browser/ui/cocoa/bookmarks/bookmark_model_observer_for_cocoa.h" 6 7BookmarkModelObserverForCocoa::BookmarkModelObserverForCocoa( 8 const BookmarkNode* node, 9 BookmarkModel* model, 10 NSObject* object, 11 SEL selector) { 12 DCHECK(model); 13 node_ = node; 14 model_ = model; 15 object_ = object; 16 selector_ = selector; 17 model_->AddObserver(this); 18} 19 20BookmarkModelObserverForCocoa::~BookmarkModelObserverForCocoa() { 21 model_->RemoveObserver(this); 22} 23 24void BookmarkModelObserverForCocoa::BookmarkModelBeingDeleted( 25 BookmarkModel* model) { 26 Notify(); 27} 28 29void BookmarkModelObserverForCocoa::BookmarkNodeMoved( 30 BookmarkModel* model, 31 const BookmarkNode* old_parent, 32 int old_index, 33 const BookmarkNode* new_parent, 34 int new_index) { 35 // Editors often have a tree of parents, so movement of folders 36 // must cause a cancel. 37 Notify(); 38} 39 40void BookmarkModelObserverForCocoa::BookmarkNodeRemoved( 41 BookmarkModel* model, 42 const BookmarkNode* parent, 43 int old_index, 44 const BookmarkNode* node) { 45 // See comment in BookmarkNodeMoved. 46 Notify(); 47} 48 49void BookmarkModelObserverForCocoa::BookmarkNodeChanged( 50 BookmarkModel* model, 51 const BookmarkNode* node) { 52 if ((node_ == node) || (!node_)) 53 Notify(); 54} 55 56void BookmarkModelObserverForCocoa::ExtensiveBookmarkChangesBeginning( 57 BookmarkModel* model) { 58 // Be conservative. 59 Notify(); 60} 61 62void BookmarkModelObserverForCocoa::Notify() { 63 [object_ performSelector:selector_ withObject:nil]; 64} 65