Chromium Code Reviews| Index: chrome/browser/android/bookmarks/bookmarks_bridge.cc |
| diff --git a/chrome/browser/android/bookmarks/bookmarks_bridge.cc b/chrome/browser/android/bookmarks/bookmarks_bridge.cc |
| index c355b497a1cf6273b1685f19aab782411da27172..9c018802fcf58cdeeec890817d1452a2221fa344 100644 |
| --- a/chrome/browser/android/bookmarks/bookmarks_bridge.cc |
| +++ b/chrome/browser/android/bookmarks/bookmarks_bridge.cc |
| @@ -84,9 +84,12 @@ void BookmarksBridge::GetBookmarksForFolder(JNIEnv* env, |
| jobject j_callback_obj, |
| jobject j_result_obj) { |
| DCHECK(bookmark_model_->loaded()); |
| - long folder_id = Java_BookmarkId_getId(env, j_folder_id_obj); |
| - int type = Java_BookmarkId_getType(env, j_folder_id_obj); |
| - const BookmarkNode* folder = GetFolderWithFallback(folder_id, type); |
| + const BookmarkNode* folder = GetFolderWithFallback(j_folder_id_obj); |
| + // Recreate the java bookmarkId object due to fallback. |
|
newt (away)
2013/11/08 01:54:06
An idea: you could modify GetFolderWithFallback()
|
| + ScopedJavaLocalRef<jobject> folder_id_obj = |
| + Java_BookmarksBridge_getBookmarkId( |
| + env, folder->id(), GetBookmarkType(folder)); |
| + j_folder_id_obj = folder_id_obj.obj(); |
| // If this is the Mobile bookmarks folder then add the "Managed bookmarks" |
| // folder first, so that it's the first entry. |
| if (folder == bookmark_model_->mobile_node() && |
| @@ -111,16 +114,18 @@ void BookmarksBridge::GetCurrentFolderHierarchy(JNIEnv* env, |
| jobject j_callback_obj, |
| jobject j_result_obj) { |
| DCHECK(bookmark_model_->loaded()); |
| - long folder_id = Java_BookmarkId_getId(env, j_folder_id_obj); |
| - int type = Java_BookmarkId_getType(env, j_folder_id_obj); |
| - const BookmarkNode* folder = GetFolderWithFallback(folder_id, type); |
| + const BookmarkNode* folder = GetFolderWithFallback(j_folder_id_obj); |
| + // Recreate the java bookmarkId object due to fallback. |
| + ScopedJavaLocalRef<jobject> folder_id_obj = |
| + Java_BookmarksBridge_getBookmarkId( |
| + env, folder->id(), GetBookmarkType(folder)); |
| + j_folder_id_obj = folder_id_obj.obj(); |
| // Get the folder heirarchy |
| const BookmarkNode* node = folder; |
| while (node) { |
| ExtractBookmarkNodeInformation(node, j_result_obj); |
| node = GetParentNode(node); |
| } |
| - |
| Java_BookmarksCallback_onBookmarksFolderHierarchyAvailable( |
| env, j_callback_obj, j_folder_id_obj, j_result_obj); |
| } |
| @@ -131,9 +136,7 @@ void BookmarksBridge::DeleteBookmark(JNIEnv* env, |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| DCHECK(bookmark_model_->loaded()); |
| - long bookmark_id = Java_BookmarkId_getId(env, j_bookmark_id_obj); |
| - int type = Java_BookmarkId_getType(env, j_bookmark_id_obj); |
| - const BookmarkNode* node = GetNodeByID(bookmark_id, type); |
| + const BookmarkNode* node = GetNodeByID(j_bookmark_id_obj); |
| if (!IsEditable(node)) { |
| NOTREACHED(); |
| return; |
| @@ -188,6 +191,13 @@ const BookmarkNode* BookmarksBridge::GetNodeByID(long node_id, |
| return node; |
| } |
| +const BookmarkNode* BookmarksBridge::GetNodeByID(jobject j_node_id_obj) { |
|
newt (away)
2013/11/08 01:54:06
I'm not sure how much work AttachCurrentThread() i
|
| + JNIEnv* env = AttachCurrentThread(); |
| + long node_id = Java_BookmarkId_getId(env, j_node_id_obj); |
| + int type = Java_BookmarkId_getType(env, j_node_id_obj); |
| + return GetNodeByID(node_id, type); |
| +} |
| + |
| const BookmarkNode* BookmarksBridge::GetFolderWithFallback( |
| long folder_id, int type) { |
| const BookmarkNode* folder = GetNodeByID(folder_id, type); |
| @@ -196,6 +206,15 @@ const BookmarkNode* BookmarksBridge::GetFolderWithFallback( |
| return folder; |
| } |
| +const BookmarkNode* BookmarksBridge::GetFolderWithFallback( |
|
Ted C
2013/11/08 01:28:27
I wouldn't add new methods for this or GetNodeByID
Ramya
2013/11/11 18:34:16
Done.
|
| + jobject j_folder_id_obj) { |
| + JNIEnv* env = AttachCurrentThread(); |
| + long folder_id = Java_BookmarkId_getId(env, j_folder_id_obj); |
| + int type = Java_BookmarkId_getType(env, j_folder_id_obj); |
| + const BookmarkNode* folder = GetFolderWithFallback(folder_id, type); |
| + return folder; |
| +} |
| + |
| bool BookmarksBridge::IsEditable(const BookmarkNode* node) const { |
| return node && |
| (node->type() == BookmarkNode::FOLDER || |