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 4002907cfa7a0e49ee8d92e6314820ace53b05a4..c57b81d595d47f1386037967b477f75ae30a0cb2 100644 |
| --- a/chrome/browser/android/bookmarks/bookmarks_bridge.cc |
| +++ b/chrome/browser/android/bookmarks/bookmarks_bridge.cc |
| @@ -40,6 +40,13 @@ class BookmarkNodeCreationTimeCompareFunctor { |
| return lhs->date_added().ToJavaTime() > rhs->date_added().ToJavaTime(); |
| } |
| }; |
| + |
| +class BookmarkNodeTitleCompareFunctor { |
| + public: |
| + bool operator()(const BookmarkNode* lhs, const BookmarkNode* rhs) { |
| + return lhs->GetTitle() < rhs->GetTitle(); |
| + } |
| +}; |
| } // namespace |
| BookmarksBridge::BookmarksBridge(JNIEnv* env, |
| @@ -119,6 +126,7 @@ ScopedJavaLocalRef<jobject> BookmarksBridge::GetBookmarkByID(JNIEnv* env, |
| void BookmarksBridge::GetPermanentNodeIDs(JNIEnv* env, |
| jobject obj, |
| jobject j_result_obj) { |
| + // TODO(kkimlabs): Remove this function. |
| DCHECK(IsLoaded()); |
| base::StackVector<const BookmarkNode*, 8> permanent_nodes; |
| @@ -144,6 +152,68 @@ void BookmarksBridge::GetPermanentNodeIDs(JNIEnv* env, |
| } |
| } |
| +void BookmarksBridge::GetTopLevelFolderParentIDs(JNIEnv* env, |
| + jobject obj, |
| + jobject j_result_obj) { |
| + Java_BookmarksBridge_addToBookmarkIdList( |
| + env, j_result_obj, bookmark_model_->root_node()->id(), |
| + GetBookmarkType(bookmark_model_->root_node())); |
| + Java_BookmarksBridge_addToBookmarkIdList( |
| + env, j_result_obj, bookmark_model_->mobile_node()->id(), |
| + GetBookmarkType(bookmark_model_->mobile_node())); |
| + Java_BookmarksBridge_addToBookmarkIdList( |
| + env, j_result_obj, bookmark_model_->other_node()->id(), |
| + GetBookmarkType(bookmark_model_->other_node())); |
| +} |
| + |
| +void BookmarksBridge::GetTopLevelFolderIDs(JNIEnv* env, |
| + jobject obj, |
| + jboolean get_special, |
| + jboolean get_normal, |
| + jobject j_result_obj) { |
| + DCHECK(IsLoaded()); |
| + std::vector<const BookmarkNode*> top_level_folders; |
| + |
| + if (get_special) { |
| + if (client_->managed_node() && |
| + client_->managed_node()->child_count() > 0) { |
| + top_level_folders.push_back(client_->managed_node()); |
| + } |
| + // TODO(kkimlabs): add partner bookmark root node, if available. |
| + } |
| + std::size_t special_count = top_level_folders.size(); |
| + |
| + if (get_normal) { |
| + DCHECK_EQ(bookmark_model_->root_node()->child_count(), 4); |
| + |
| + top_level_folders.push_back(bookmark_model_->bookmark_bar_node()); |
| + |
| + const BookmarkNode* mobile_node = bookmark_model_->mobile_node(); |
| + for (int i = 0; i < mobile_node->child_count(); ++i) { |
| + top_level_folders.push_back(mobile_node->GetChild(i)); |
| + } |
| + |
| + const BookmarkNode* other_node = bookmark_model_->other_node(); |
| + for (int i = 0; i < other_node->child_count(); ++i) { |
| + top_level_folders.push_back(other_node->GetChild(i)); |
| + } |
| + |
| + std::stable_sort(top_level_folders.begin() + special_count, |
| + top_level_folders.end(), |
| + BookmarkNodeTitleCompareFunctor()); |
| + } |
| + |
| + for (std::vector<const BookmarkNode*>::const_iterator it = |
| + top_level_folders.begin(); it != top_level_folders.end(); ++it) { |
| + if (*it != NULL) { |
|
newt (away)
2014/09/02 19:00:10
How could *it be NULL? Does GetChild(i) sometimes
Kibeom Kim (inactive)
2014/09/03 00:06:27
Done.
|
| + Java_BookmarksBridge_addToBookmarkIdList(env, |
| + j_result_obj, |
| + (*it)->id(), |
| + GetBookmarkType(*it)); |
| + } |
| + } |
| +} |
| + |
| void BookmarksBridge::GetChildIDs(JNIEnv* env, |
| jobject obj, |
| jlong id, |