1 // Copyright 2013 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.
5 #ifndef CHROME_BROWSER_ANDROID_BOOKMARKS_BOOKMARKS_BRIDGE_H_
6 #define CHROME_BROWSER_ANDROID_BOOKMARKS_BOOKMARKS_BRIDGE_H_
10 #include "base/android/jni_android.h"
11 #include "base/android/jni_helper.h"
12 #include "base/basictypes.h"
13 #include "base/compiler_specific.h"
14 #include "chrome/browser/android/bookmarks/managed_bookmarks_shim.h"
15 #include "chrome/browser/bookmarks/base_bookmark_model_observer.h"
19 // The delegate to fetch bookmarks information for the Android native
20 // bookmark page. This fetches the bookmarks, title, urls, folder
22 class BookmarksBridge : public BaseBookmarkModelObserver,
23 public ManagedBookmarksShim::Observer {
25 BookmarksBridge(JNIEnv* env, jobject obj, jobject j_profile);
26 void Destroy(JNIEnv*, jobject);
28 static bool RegisterBookmarksBridge(JNIEnv* env);
30 void GetBookmarksForFolder(JNIEnv* env,
32 jobject j_folder_id_obj,
33 jobject j_callback_obj,
34 jobject j_result_obj);
36 void GetCurrentFolderHierarchy(JNIEnv* env,
38 jobject j_folder_id_obj,
39 jobject j_callback_obj,
40 jobject j_result_obj);
42 void DeleteBookmark(JNIEnv* env,
44 jobject j_bookmark_id_obj);
47 virtual ~BookmarksBridge();
49 base::android::ScopedJavaLocalRef<jobject> CreateJavaBookmark(
50 const BookmarkNode* node);
51 void ExtractBookmarkNodeInformation(
52 const BookmarkNode* node,
53 jobject j_result_obj);
54 const BookmarkNode* GetNodeByID(long node_id, int type);
55 const BookmarkNode* GetFolderWithFallback(long folder_id, int type);
56 // Returns true if |node| can be modified by the user.
57 bool IsEditable(const BookmarkNode* node) const;
58 const BookmarkNode* GetParentNode(const BookmarkNode* node);
59 int GetBookmarkType(const BookmarkNode* node);
61 // Override BaseBookmarkModelObserver.
62 // Called when there are changes to the bookmark model that don't trigger
63 // any of the other callback methods. For example, this is called when
64 // managed or partner bookmarks change.
65 virtual void BookmarkModelChanged() OVERRIDE;
66 virtual void Loaded(BookmarkModel* model, bool ids_reassigned) OVERRIDE;
67 virtual void BookmarkModelBeingDeleted(BookmarkModel* model) OVERRIDE;
68 virtual void BookmarkNodeMoved(BookmarkModel* model,
69 const BookmarkNode* old_parent,
71 const BookmarkNode* new_parent,
72 int new_index) OVERRIDE;
73 virtual void BookmarkNodeAdded(BookmarkModel* model,
74 const BookmarkNode* parent,
76 virtual void BookmarkNodeRemoved(BookmarkModel* model,
77 const BookmarkNode* parent,
79 const BookmarkNode* node) OVERRIDE;
80 virtual void BookmarkNodeChanged(BookmarkModel* model,
81 const BookmarkNode* node) OVERRIDE;
82 virtual void BookmarkNodeChildrenReordered(BookmarkModel* model,
83 const BookmarkNode* node) OVERRIDE;
84 virtual void ExtensiveBookmarkChangesBeginning(BookmarkModel* model) OVERRIDE;
85 virtual void ExtensiveBookmarkChangesEnded(BookmarkModel* model) OVERRIDE;
87 // Override ManagedBookmarksShim::Observer
88 virtual void OnManagedBookmarksChanged() OVERRIDE;
90 JavaObjectWeakGlobalRef weak_java_ref_;
91 BookmarkModel* bookmark_model_; // weak
93 scoped_ptr<ManagedBookmarksShim> managed_bookmarks_shim_;
95 DISALLOW_COPY_AND_ASSIGN(BookmarksBridge);
98 #endif // CHROME_BROWSER_ANDROID_BOOKMARKS_BOOKMARKS_BRIDGE_H_