Adding instrumentation to locate the source of jankiness
[chromium-blink-merge.git] / chrome / browser / android / bookmarks / bookmarks_bridge.h
blob59a55b36a673fa24fc86efa55baf8f39b227742c
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_
8 #include <jni.h>
10 #include "base/android/jni_android.h"
11 #include "base/android/jni_weak_ref.h"
12 #include "base/basictypes.h"
13 #include "base/compiler_specific.h"
14 #include "chrome/browser/android/bookmarks/partner_bookmarks_shim.h"
15 #include "chrome/browser/bookmarks/chrome_bookmark_client.h"
16 #include "components/bookmarks/browser/base_bookmark_model_observer.h"
17 #include "components/bookmarks/common/android/bookmark_id.h"
19 namespace bookmarks {
20 class ScopedGroupBookmarkActions;
23 class Profile;
25 // The delegate to fetch bookmarks information for the Android native
26 // bookmark page. This fetches the bookmarks, title, urls, folder
27 // hierarchy.
28 class BookmarksBridge : public BaseBookmarkModelObserver,
29 public PartnerBookmarksShim::Observer {
30 public:
31 BookmarksBridge(JNIEnv* env, jobject obj, jobject j_profile);
32 void Destroy(JNIEnv*, jobject);
34 static bool RegisterBookmarksBridge(JNIEnv* env);
36 bool IsDoingExtensiveChanges(JNIEnv* env, jobject obj);
38 void LoadEmptyPartnerBookmarkShimForTesting(JNIEnv* env, jobject obj);
40 base::android::ScopedJavaLocalRef<jobject> GetBookmarkByID(
41 JNIEnv* env,
42 jobject obj,
43 jlong id,
44 jint type);
46 void GetPermanentNodeIDs(JNIEnv* env,
47 jobject obj,
48 jobject j_result_obj);
50 void GetTopLevelFolderParentIDs(JNIEnv* env,
51 jobject obj,
52 jobject j_result_obj);
54 void GetTopLevelFolderIDs(JNIEnv* env,
55 jobject obj,
56 jboolean get_special,
57 jboolean get_normal,
58 jobject j_result_obj);
60 void GetUncategorizedBookmarkIDs(JNIEnv* env,
61 jobject obj,
62 jobject j_result_obj);
63 void GetAllFoldersWithDepths(JNIEnv* env,
64 jobject obj,
65 jobject j_folders_obj,
66 jobject j_depths_obj);
68 base::android::ScopedJavaLocalRef<jobject> GetMobileFolderId(JNIEnv* env,
69 jobject obj);
71 base::android::ScopedJavaLocalRef<jobject> GetOtherFolderId(JNIEnv* env,
72 jobject obj);
74 base::android::ScopedJavaLocalRef<jobject> GetDesktopFolderId(JNIEnv* env,
75 jobject obj);
77 void GetChildIDs(JNIEnv* env,
78 jobject obj,
79 jlong id,
80 jint type,
81 jboolean get_folders,
82 jboolean get_bookmarks,
83 jobject j_result_obj);
85 base::android::ScopedJavaLocalRef<jobject> GetChildAt(JNIEnv* env,
86 jobject obj,
87 jlong id,
88 jint type,
89 jint index);
91 void GetAllBookmarkIDsOrderedByCreationDate(JNIEnv* env,
92 jobject obj,
93 jobject j_result_obj);
95 void SetBookmarkTitle(JNIEnv* env,
96 jobject obj,
97 jlong id,
98 jint type,
99 jstring title);
101 void SetBookmarkUrl(JNIEnv* env,
102 jobject obj,
103 jlong id,
104 jint type,
105 jstring url);
107 bool DoesBookmarkExist(JNIEnv* env, jobject obj, jlong id, jint type);
109 void GetBookmarksForFolder(JNIEnv* env,
110 jobject obj,
111 jobject j_folder_id_obj,
112 jobject j_callback_obj,
113 jobject j_result_obj);
115 void GetCurrentFolderHierarchy(JNIEnv* env,
116 jobject obj,
117 jobject j_folder_id_obj,
118 jobject j_callback_obj,
119 jobject j_result_obj);
121 base::android::ScopedJavaLocalRef<jobject> AddFolder(JNIEnv* env,
122 jobject obj,
123 jobject j_parent_id_obj,
124 jint index,
125 jstring j_title);
127 void DeleteBookmark(JNIEnv* env, jobject obj, jobject j_bookmark_id_obj);
129 void MoveBookmark(JNIEnv* env,
130 jobject obj,
131 jobject j_bookmark_id_obj,
132 jobject j_parent_id_obj,
133 jint index);
135 base::android::ScopedJavaLocalRef<jobject> AddBookmark(
136 JNIEnv* env,
137 jobject obj,
138 jobject j_parent_id_obj,
139 jint index,
140 jstring j_title,
141 jstring j_url);
143 void Undo(JNIEnv* env, jobject obj);
145 void StartGroupingUndos(JNIEnv* env, jobject obj);
147 void EndGroupingUndos(JNIEnv* env, jobject obj);
149 private:
150 virtual ~BookmarksBridge();
152 base::android::ScopedJavaLocalRef<jobject> CreateJavaBookmark(
153 const BookmarkNode* node);
154 void ExtractBookmarkNodeInformation(
155 const BookmarkNode* node,
156 jobject j_result_obj);
157 const BookmarkNode* GetNodeByID(long node_id, int type);
158 const BookmarkNode* GetFolderWithFallback(long folder_id, int type);
159 // Returns whether |node| can be modified by the user.
160 bool IsEditable(const BookmarkNode* node) const;
161 // Returns whether |node| is a managed bookmark.
162 bool IsManaged(const BookmarkNode* node) const;
163 const BookmarkNode* GetParentNode(const BookmarkNode* node);
164 int GetBookmarkType(const BookmarkNode* node);
165 base::string16 GetTitle(const BookmarkNode* node) const;
166 bool IsReachable(const BookmarkNode* node) const;
167 bool IsLoaded() const;
168 bool IsFolderAvailable(const BookmarkNode* folder) const;
169 void NotifyIfDoneLoading();
171 // Override BaseBookmarkModelObserver.
172 // Called when there are changes to the bookmark model that don't trigger
173 // any of the other callback methods. For example, this is called when
174 // partner bookmarks change.
175 virtual void BookmarkModelChanged() override;
176 virtual void BookmarkModelLoaded(BookmarkModel* model,
177 bool ids_reassigned) override;
178 virtual void BookmarkModelBeingDeleted(BookmarkModel* model) override;
179 virtual void BookmarkNodeMoved(BookmarkModel* model,
180 const BookmarkNode* old_parent,
181 int old_index,
182 const BookmarkNode* new_parent,
183 int new_index) override;
184 virtual void BookmarkNodeAdded(BookmarkModel* model,
185 const BookmarkNode* parent,
186 int index) override;
187 virtual void BookmarkNodeRemoved(BookmarkModel* model,
188 const BookmarkNode* parent,
189 int old_index,
190 const BookmarkNode* node,
191 const std::set<GURL>& removed_urls) override;
192 virtual void BookmarkNodeChanged(BookmarkModel* model,
193 const BookmarkNode* node) override;
194 virtual void BookmarkNodeChildrenReordered(BookmarkModel* model,
195 const BookmarkNode* node) override;
196 virtual void ExtensiveBookmarkChangesBeginning(BookmarkModel* model) override;
197 virtual void ExtensiveBookmarkChangesEnded(BookmarkModel* model) override;
199 // Override PartnerBookmarksShim::Observer
200 virtual void PartnerShimChanged(PartnerBookmarksShim* shim) override;
201 virtual void PartnerShimLoaded(PartnerBookmarksShim* shim) override;
202 virtual void ShimBeingDeleted(PartnerBookmarksShim* shim) override;
204 Profile* profile_;
205 JavaObjectWeakGlobalRef weak_java_ref_;
206 BookmarkModel* bookmark_model_; // weak
207 ChromeBookmarkClient* client_; // weak
208 scoped_ptr<bookmarks::ScopedGroupBookmarkActions> grouped_bookmark_actions_;
210 // Information about the Partner bookmarks (must check for IsLoaded()).
211 // This is owned by profile.
212 PartnerBookmarksShim* partner_bookmarks_shim_;
214 DISALLOW_COPY_AND_ASSIGN(BookmarksBridge);
217 #endif // CHROME_BROWSER_ANDROID_BOOKMARKS_BOOKMARKS_BRIDGE_H_