Index: ios/chrome/browser/ui/bookmarks/bookmark_model_bridge_observer.mm |
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_model_bridge_observer.mm b/ios/chrome/browser/ui/bookmarks/bookmark_model_bridge_observer.mm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9282880f58b7f47a196ddc64e7d4dae2cadcac2c |
--- /dev/null |
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_model_bridge_observer.mm |
@@ -0,0 +1,89 @@ |
+// Copyright 2014 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. |
+ |
+#include "ios/chrome/browser/ui/bookmarks/bookmark_model_bridge_observer.h" |
+ |
+#include <Foundation/Foundation.h> |
+ |
+#include "base/logging.h" |
+#include "components/bookmarks/browser/bookmark_model.h" |
+ |
+namespace bookmarks { |
+ |
+BookmarkModelBridge::BookmarkModelBridge( |
+ id<BookmarkModelBridgeObserver> observer, |
+ BookmarkModel* model) |
+ : observer_(observer), model_(model) { |
+ DCHECK(observer_); |
+ DCHECK(model_); |
+ model_->AddObserver(this); |
+} |
+ |
+BookmarkModelBridge::~BookmarkModelBridge() { |
+ DCHECK(model_); |
+ model_->RemoveObserver(this); |
+} |
+ |
+void BookmarkModelBridge::BookmarkModelLoaded(BookmarkModel* model, |
+ bool ids_reassigned) { |
+ [observer_ bookmarkModelLoaded]; |
+} |
+ |
+void BookmarkModelBridge::BookmarkModelBeingDeleted(BookmarkModel* model) { |
+ // This is an inconsistent state in the application lifecycle. The bookmark |
+ // model shouldn't disappear. |
+ NOTREACHED(); |
+} |
+ |
+void BookmarkModelBridge::BookmarkNodeMoved(BookmarkModel* model, |
+ const BookmarkNode* old_parent, |
+ int old_index, |
+ const BookmarkNode* new_parent, |
+ int new_index) { |
+ const BookmarkNode* node = new_parent->GetChild(new_index); |
+ [observer_ bookmarkNode:node movedFromParent:old_parent toParent:new_parent]; |
+} |
+ |
+void BookmarkModelBridge::BookmarkNodeAdded(BookmarkModel* model, |
+ const BookmarkNode* parent, |
+ int index) { |
+ [observer_ bookmarkNodeChildrenChanged:parent]; |
+} |
+ |
+void BookmarkModelBridge::BookmarkNodeRemoved( |
+ BookmarkModel* model, |
+ const BookmarkNode* parent, |
+ int old_index, |
+ const BookmarkNode* node, |
+ const std::set<GURL>& removed_urls) { |
+ [observer_ bookmarkNodeDeleted:node fromFolder:parent]; |
+ [observer_ bookmarkNodeChildrenChanged:parent]; |
+} |
+ |
+void BookmarkModelBridge::BookmarkNodeChanged(BookmarkModel* model, |
+ const BookmarkNode* node) { |
+ [observer_ bookmarkNodeChanged:node]; |
+} |
+ |
+void BookmarkModelBridge::BookmarkNodeFaviconChanged(BookmarkModel* model, |
+ const BookmarkNode* node) { |
+ SEL selector = @selector(bookmarkNodeFaviconChanged:); |
+ if ([observer_ respondsToSelector:selector]) { |
+ [observer_ bookmarkNodeFaviconChanged:node]; |
+ } |
+} |
+ |
+void BookmarkModelBridge::BookmarkNodeChildrenReordered( |
+ BookmarkModel* model, |
+ const BookmarkNode* node) { |
+ [observer_ bookmarkNodeChildrenChanged:node]; |
+} |
+ |
+void BookmarkModelBridge::BookmarkAllUserNodesRemoved( |
+ BookmarkModel* model, |
+ const std::set<GURL>& removed_urls) { |
+ [observer_ bookmarkModelRemovedAllNodes]; |
+} |
+ |
+} // namespace bookmarks |