Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(475)

Side by Side Diff: chrome/browser/android/bookmarks/bookmarks_bridge.cc

Issue 516323003: [Android] JNI bridges for querying top level bookmark folders. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove debug log Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/android/bookmarks/bookmarks_bridge.h" 5 #include "chrome/browser/android/bookmarks/bookmarks_bridge.h"
6 6
7 #include "base/android/jni_string.h" 7 #include "base/android/jni_string.h"
8 #include "base/containers/stack_container.h" 8 #include "base/containers/stack_container.h"
9 #include "base/prefs/pref_service.h" 9 #include "base/prefs/pref_service.h"
10 #include "chrome/browser/bookmarks/bookmark_model_factory.h" 10 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
(...skipping 22 matching lines...) Expand all
33 using content::BrowserThread; 33 using content::BrowserThread;
34 34
35 namespace { 35 namespace {
36 36
37 class BookmarkNodeCreationTimeCompareFunctor { 37 class BookmarkNodeCreationTimeCompareFunctor {
38 public: 38 public:
39 bool operator()(const BookmarkNode* lhs, const BookmarkNode* rhs) { 39 bool operator()(const BookmarkNode* lhs, const BookmarkNode* rhs) {
40 return lhs->date_added().ToJavaTime() > rhs->date_added().ToJavaTime(); 40 return lhs->date_added().ToJavaTime() > rhs->date_added().ToJavaTime();
41 } 41 }
42 }; 42 };
43
44 class BookmarkNodeTitleCompareFunctor {
45 public:
46 bool operator()(const BookmarkNode* lhs, const BookmarkNode* rhs) {
47 return lhs->GetTitle() < rhs->GetTitle();
48 }
49 };
43 } // namespace 50 } // namespace
44 51
45 BookmarksBridge::BookmarksBridge(JNIEnv* env, 52 BookmarksBridge::BookmarksBridge(JNIEnv* env,
46 jobject obj, 53 jobject obj,
47 jobject j_profile) 54 jobject j_profile)
48 : weak_java_ref_(env, obj), 55 : weak_java_ref_(env, obj),
49 bookmark_model_(NULL), 56 bookmark_model_(NULL),
50 client_(NULL), 57 client_(NULL),
51 partner_bookmarks_shim_(NULL) { 58 partner_bookmarks_shim_(NULL) {
52 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 59 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 jobject obj, 119 jobject obj,
113 jlong id, 120 jlong id,
114 jint type) { 121 jint type) {
115 DCHECK(IsLoaded()); 122 DCHECK(IsLoaded());
116 return CreateJavaBookmark(GetNodeByID(id, type)); 123 return CreateJavaBookmark(GetNodeByID(id, type));
117 } 124 }
118 125
119 void BookmarksBridge::GetPermanentNodeIDs(JNIEnv* env, 126 void BookmarksBridge::GetPermanentNodeIDs(JNIEnv* env,
120 jobject obj, 127 jobject obj,
121 jobject j_result_obj) { 128 jobject j_result_obj) {
129 // TODO(kkimlabs): Remove this function.
122 DCHECK(IsLoaded()); 130 DCHECK(IsLoaded());
123 131
124 base::StackVector<const BookmarkNode*, 8> permanent_nodes; 132 base::StackVector<const BookmarkNode*, 8> permanent_nodes;
125 133
126 // Save all the permanent nodes. 134 // Save all the permanent nodes.
127 const BookmarkNode* root_node = bookmark_model_->root_node(); 135 const BookmarkNode* root_node = bookmark_model_->root_node();
128 permanent_nodes->push_back(root_node); 136 permanent_nodes->push_back(root_node);
129 for (int i = 0; i < root_node->child_count(); ++i) { 137 for (int i = 0; i < root_node->child_count(); ++i) {
130 permanent_nodes->push_back(root_node->GetChild(i)); 138 permanent_nodes->push_back(root_node->GetChild(i));
131 } 139 }
132 permanent_nodes->push_back( 140 permanent_nodes->push_back(
133 partner_bookmarks_shim_->GetPartnerBookmarksRoot()); 141 partner_bookmarks_shim_->GetPartnerBookmarksRoot());
134 142
135 // Write the permanent nodes to |j_result_obj|. 143 // Write the permanent nodes to |j_result_obj|.
136 for (base::StackVector<const BookmarkNode*, 8>::ContainerType::const_iterator 144 for (base::StackVector<const BookmarkNode*, 8>::ContainerType::const_iterator
137 it = permanent_nodes->begin(); 145 it = permanent_nodes->begin();
138 it != permanent_nodes->end(); 146 it != permanent_nodes->end();
139 ++it) { 147 ++it) {
140 if (*it != NULL) { 148 if (*it != NULL) {
141 Java_BookmarksBridge_addToBookmarkIdList( 149 Java_BookmarksBridge_addToBookmarkIdList(
142 env, j_result_obj, (*it)->id(), GetBookmarkType(*it)); 150 env, j_result_obj, (*it)->id(), GetBookmarkType(*it));
143 } 151 }
144 } 152 }
145 } 153 }
146 154
155 void BookmarksBridge::GetTopLevelFolderParentIDs(JNIEnv* env,
156 jobject obj,
157 jobject j_result_obj) {
158 Java_BookmarksBridge_addToBookmarkIdList(
159 env, j_result_obj, bookmark_model_->root_node()->id(),
160 GetBookmarkType(bookmark_model_->root_node()));
161 Java_BookmarksBridge_addToBookmarkIdList(
162 env, j_result_obj, bookmark_model_->mobile_node()->id(),
163 GetBookmarkType(bookmark_model_->mobile_node()));
164 Java_BookmarksBridge_addToBookmarkIdList(
165 env, j_result_obj, bookmark_model_->other_node()->id(),
166 GetBookmarkType(bookmark_model_->other_node()));
167 }
168
169 void BookmarksBridge::GetTopLevelFolderIDs(JNIEnv* env,
170 jobject obj,
171 jboolean get_special,
172 jboolean get_normal,
173 jobject j_result_obj) {
174 DCHECK(IsLoaded());
175 std::vector<const BookmarkNode*> top_level_folders;
176
177 if (get_special) {
178 if (client_->managed_node() &&
179 client_->managed_node()->child_count() > 0) {
180 top_level_folders.push_back(client_->managed_node());
181 }
182 // TODO(kkimlabs): add partner bookmark root node, if available.
183 }
184 std::size_t special_count = top_level_folders.size();
185
186 if (get_normal) {
187 DCHECK_EQ(bookmark_model_->root_node()->child_count(), 4);
188
189 top_level_folders.push_back(bookmark_model_->bookmark_bar_node());
190
191 const BookmarkNode* mobile_node = bookmark_model_->mobile_node();
192 for (int i = 0; i < mobile_node->child_count(); ++i) {
193 top_level_folders.push_back(mobile_node->GetChild(i));
194 }
195
196 const BookmarkNode* other_node = bookmark_model_->other_node();
197 for (int i = 0; i < other_node->child_count(); ++i) {
198 top_level_folders.push_back(other_node->GetChild(i));
199 }
200
201 std::stable_sort(top_level_folders.begin() + special_count,
202 top_level_folders.end(),
203 BookmarkNodeTitleCompareFunctor());
204 }
205
206 for (std::vector<const BookmarkNode*>::const_iterator it =
207 top_level_folders.begin(); it != top_level_folders.end(); ++it) {
208 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.
209 Java_BookmarksBridge_addToBookmarkIdList(env,
210 j_result_obj,
211 (*it)->id(),
212 GetBookmarkType(*it));
213 }
214 }
215 }
216
147 void BookmarksBridge::GetChildIDs(JNIEnv* env, 217 void BookmarksBridge::GetChildIDs(JNIEnv* env,
148 jobject obj, 218 jobject obj,
149 jlong id, 219 jlong id,
150 jint type, 220 jint type,
151 jboolean get_folders, 221 jboolean get_folders,
152 jboolean get_bookmarks, 222 jboolean get_bookmarks,
153 jobject j_result_obj) { 223 jobject j_result_obj) {
154 DCHECK(IsLoaded()); 224 DCHECK(IsLoaded());
155 225
156 const BookmarkNode* parent = GetNodeByID(id, type); 226 const BookmarkNode* parent = GetNodeByID(id, type);
(...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 BookmarkModelChanged(); 722 BookmarkModelChanged();
653 } 723 }
654 724
655 void BookmarksBridge::PartnerShimLoaded(PartnerBookmarksShim* shim) { 725 void BookmarksBridge::PartnerShimLoaded(PartnerBookmarksShim* shim) {
656 NotifyIfDoneLoading(); 726 NotifyIfDoneLoading();
657 } 727 }
658 728
659 void BookmarksBridge::ShimBeingDeleted(PartnerBookmarksShim* shim) { 729 void BookmarksBridge::ShimBeingDeleted(PartnerBookmarksShim* shim) {
660 partner_bookmarks_shim_ = NULL; 730 partner_bookmarks_shim_ = NULL;
661 } 731 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698