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