Index: ios/chrome/browser/ui/bookmarks/bookmark_model_bridge_observer.h |
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_model_bridge_observer.h b/ios/chrome/browser/ui/bookmarks/bookmark_model_bridge_observer.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..36bdd1b06ce36ee62bfbaf09c696ba37f6e76729 |
--- /dev/null |
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_model_bridge_observer.h |
@@ -0,0 +1,77 @@ |
+// 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. |
+ |
+#ifndef IOS_CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_MODEL_BRIDGE_OBSERVER_H_ |
+#define IOS_CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_MODEL_BRIDGE_OBSERVER_H_ |
+ |
+#import <Foundation/Foundation.h> |
+ |
+#include "base/compiler_specific.h" |
+#include "components/bookmarks/browser/bookmark_model_observer.h" |
+ |
+// The ObjC translations of the C++ observer callbacks are defined here. |
+@protocol BookmarkModelBridgeObserver<NSObject> |
+// The bookmark model has loaded. |
+- (void)bookmarkModelLoaded; |
+// The node has changed, but not its children. |
+- (void)bookmarkNodeChanged:(const bookmarks::BookmarkNode*)bookmarkNode; |
+// The node has not changed, but the ordering and existence of its children have |
+// changed. |
+- (void)bookmarkNodeChildrenChanged: |
+ (const bookmarks::BookmarkNode*)bookmarkNode; |
+// The node has moved to a new parent folder. |
+- (void)bookmarkNode:(const bookmarks::BookmarkNode*)bookmarkNode |
+ movedFromParent:(const bookmarks::BookmarkNode*)oldParent |
+ toParent:(const bookmarks::BookmarkNode*)newParent; |
+// |node| was deleted from |folder|. |
+- (void)bookmarkNodeDeleted:(const bookmarks::BookmarkNode*)node |
+ fromFolder:(const bookmarks::BookmarkNode*)folder; |
+// All non-permanent nodes have been removed. |
+- (void)bookmarkModelRemovedAllNodes; |
+ |
+@optional |
+// The node favicon changed. |
+- (void)bookmarkNodeFaviconChanged:(const bookmarks::BookmarkNode*)bookmarkNode; |
+@end |
+ |
+namespace bookmarks { |
+// A bridge that translates BookmarkModelObserver C++ callbacks into ObjC |
+// callbacks. |
+class BookmarkModelBridge : public BookmarkModelObserver { |
+ public: |
+ explicit BookmarkModelBridge(id<BookmarkModelBridgeObserver> observer, |
+ BookmarkModel* model); |
+ ~BookmarkModelBridge() override; |
+ |
+ private: |
+ void BookmarkModelLoaded(BookmarkModel* model, bool ids_reassigned) override; |
+ void BookmarkModelBeingDeleted(BookmarkModel* model) override; |
+ void BookmarkNodeMoved(BookmarkModel* model, |
+ const BookmarkNode* old_parent, |
+ int old_index, |
+ const BookmarkNode* new_parent, |
+ int new_index) override; |
+ void BookmarkNodeAdded(BookmarkModel* model, |
+ const BookmarkNode* parent, |
+ int index) override; |
+ void BookmarkNodeRemoved(BookmarkModel* model, |
+ const BookmarkNode* parent, |
+ int old_index, |
+ const BookmarkNode* node, |
+ const std::set<GURL>& removed_urls) override; |
+ void BookmarkNodeChanged(BookmarkModel* model, |
+ const BookmarkNode* node) override; |
+ void BookmarkNodeFaviconChanged(BookmarkModel* model, |
+ const BookmarkNode* node) override; |
+ void BookmarkNodeChildrenReordered(BookmarkModel* model, |
+ const BookmarkNode* node) override; |
+ void BookmarkAllUserNodesRemoved(BookmarkModel* model, |
+ const std::set<GURL>& removed_urls) override; |
+ |
+ id<BookmarkModelBridgeObserver> observer_; // weak |
+ BookmarkModel* model_; // weak |
+}; |
+} // namespace bookmarks |
+ |
+#endif // IOS_CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_MODEL_BRIDGE_OBSERVER_H_ |