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

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

Issue 869193008: [Android] Change enhanced bookmark top level definitions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_array.h" 7 #include "base/android/jni_array.h"
8 #include "base/android/jni_string.h" 8 #include "base/android/jni_string.h"
9 #include "base/containers/stack_container.h" 9 #include "base/containers/stack_container.h"
10 #include "base/i18n/string_compare.h" 10 #include "base/i18n/string_compare.h"
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 } 204 }
205 } 205 }
206 206
207 void BookmarksBridge::GetTopLevelFolderParentIDs(JNIEnv* env, 207 void BookmarksBridge::GetTopLevelFolderParentIDs(JNIEnv* env,
208 jobject obj, 208 jobject obj,
209 jobject j_result_obj) { 209 jobject j_result_obj) {
210 Java_BookmarksBridge_addToBookmarkIdList( 210 Java_BookmarksBridge_addToBookmarkIdList(
211 env, j_result_obj, bookmark_model_->root_node()->id(), 211 env, j_result_obj, bookmark_model_->root_node()->id(),
212 GetBookmarkType(bookmark_model_->root_node())); 212 GetBookmarkType(bookmark_model_->root_node()));
213 Java_BookmarksBridge_addToBookmarkIdList( 213 Java_BookmarksBridge_addToBookmarkIdList(
214 env, j_result_obj, bookmark_model_->mobile_node()->id(),
215 GetBookmarkType(bookmark_model_->mobile_node()));
216 Java_BookmarksBridge_addToBookmarkIdList(
217 env, j_result_obj, bookmark_model_->other_node()->id(), 214 env, j_result_obj, bookmark_model_->other_node()->id(),
218 GetBookmarkType(bookmark_model_->other_node())); 215 GetBookmarkType(bookmark_model_->other_node()));
219 } 216 }
220 217
221 void BookmarksBridge::GetTopLevelFolderIDs(JNIEnv* env, 218 void BookmarksBridge::GetTopLevelFolderIDs(JNIEnv* env,
222 jobject obj, 219 jobject obj,
223 jboolean get_special, 220 jboolean get_special,
224 jboolean get_normal, 221 jboolean get_normal,
225 jobject j_result_obj) { 222 jobject j_result_obj) {
226 DCHECK(IsLoaded()); 223 DCHECK(IsLoaded());
227 std::vector<const BookmarkNode*> top_level_folders; 224 std::vector<const BookmarkNode*> top_level_folders;
228 225
229 if (get_special) { 226 if (get_special) {
230 if (client_->managed_node() && 227 if (client_->managed_node() &&
231 client_->managed_node()->child_count() > 0) { 228 client_->managed_node()->child_count() > 0) {
232 top_level_folders.push_back(client_->managed_node()); 229 top_level_folders.push_back(client_->managed_node());
233 } 230 }
234 if (partner_bookmarks_shim_->HasPartnerBookmarks()) { 231 if (partner_bookmarks_shim_->HasPartnerBookmarks()) {
235 top_level_folders.push_back( 232 top_level_folders.push_back(
236 partner_bookmarks_shim_->GetPartnerBookmarksRoot()); 233 partner_bookmarks_shim_->GetPartnerBookmarksRoot());
237 } 234 }
238 } 235 }
239 std::size_t special_count = top_level_folders.size(); 236 std::size_t special_count = top_level_folders.size();
240 237
241 if (get_normal) { 238 if (get_normal) {
242 DCHECK_EQ(bookmark_model_->root_node()->child_count(), 4); 239 DCHECK_EQ(bookmark_model_->root_node()->child_count(), 4);
243 240
244 top_level_folders.push_back(bookmark_model_->bookmark_bar_node()); 241 top_level_folders.push_back(bookmark_model_->bookmark_bar_node());
245 242
246 const BookmarkNode* mobile_node = bookmark_model_->mobile_node(); 243 top_level_folders.push_back(bookmark_model_->mobile_node());
Ian Wen 2015/01/24 02:03:43 I thought we decided to make mobile a special root
Kibeom Kim (inactive) 2015/01/24 02:48:07 I thought so too, but realized that we are also tr
247 for (int i = 0; i < mobile_node->child_count(); ++i) {
248 const BookmarkNode* node = mobile_node->GetChild(i);
249 if (node->is_folder()) {
250 top_level_folders.push_back(node);
251 }
252 }
253 244
254 const BookmarkNode* other_node = bookmark_model_->other_node(); 245 const BookmarkNode* other_node = bookmark_model_->other_node();
255 for (int i = 0; i < other_node->child_count(); ++i) { 246 for (int i = 0; i < other_node->child_count(); ++i) {
256 const BookmarkNode* node = other_node->GetChild(i); 247 const BookmarkNode* node = other_node->GetChild(i);
257 if (node->is_folder()) { 248 if (node->is_folder()) {
258 top_level_folders.push_back(node); 249 top_level_folders.push_back(node);
259 } 250 }
260 } 251 }
261 252
262 scoped_ptr<icu::Collator> collator = GetICUCollator(); 253 scoped_ptr<icu::Collator> collator = GetICUCollator();
263 std::stable_sort(top_level_folders.begin() + special_count, 254 std::stable_sort(top_level_folders.begin() + special_count,
264 top_level_folders.end(), 255 top_level_folders.end(),
265 BookmarkTitleComparer(this, collator.get())); 256 BookmarkTitleComparer(this, collator.get()));
266 } 257 }
267 258
268 for (std::vector<const BookmarkNode*>::const_iterator it = 259 for (std::vector<const BookmarkNode*>::const_iterator it =
269 top_level_folders.begin(); it != top_level_folders.end(); ++it) { 260 top_level_folders.begin(); it != top_level_folders.end(); ++it) {
270 Java_BookmarksBridge_addToBookmarkIdList(env, 261 Java_BookmarksBridge_addToBookmarkIdList(env,
271 j_result_obj, 262 j_result_obj,
272 (*it)->id(), 263 (*it)->id(),
273 GetBookmarkType(*it)); 264 GetBookmarkType(*it));
274 } 265 }
275 } 266 }
276 267
277 void BookmarksBridge::GetUncategorizedBookmarkIDs(JNIEnv* env, 268 void BookmarksBridge::GetUncategorizedBookmarkIDs(JNIEnv* env,
278 jobject obj, 269 jobject obj,
279 jobject j_result_obj) { 270 jobject j_result_obj) {
280 const BookmarkNode* mobile_node = bookmark_model_->mobile_node(); 271 const BookmarkNode* mobile_node = bookmark_model_->mobile_node();
newt (away) 2015/01/24 00:40:00 Is this method used anymore? Shouldn't you remove
Kibeom Kim (inactive) 2015/01/24 02:48:07 Yes I should have removed mobile_node here. Done.
281 for (int i = 0; i < mobile_node->child_count(); ++i) { 272 for (int i = 0; i < mobile_node->child_count(); ++i) {
282 const BookmarkNode* node = mobile_node->GetChild(i); 273 const BookmarkNode* node = mobile_node->GetChild(i);
283 if (!node->is_folder()) { 274 if (!node->is_folder()) {
284 Java_BookmarksBridge_addToBookmarkIdList(env, 275 Java_BookmarksBridge_addToBookmarkIdList(env,
285 j_result_obj, 276 j_result_obj,
286 node->id(), 277 node->id(),
287 GetBookmarkType(node)); 278 GetBookmarkType(node));
288 } 279 }
289 } 280 }
290 281
(...skipping 20 matching lines...) Expand all
311 const BookmarkNode* other = bookmark_model_->other_node(); 302 const BookmarkNode* other = bookmark_model_->other_node();
312 303
313 scoped_ptr<icu::Collator> collator = GetICUCollator(); 304 scoped_ptr<icu::Collator> collator = GetICUCollator();
314 305
315 // Vector to temporarily contain all child bookmarks at same level for sorting 306 // Vector to temporarily contain all child bookmarks at same level for sorting
316 std::vector<const BookmarkNode*> bookmarkList; 307 std::vector<const BookmarkNode*> bookmarkList;
317 // Stack for Depth-First Search of bookmark model. It stores nodes and their 308 // Stack for Depth-First Search of bookmark model. It stores nodes and their
318 // heights. 309 // heights.
319 std::stack<std::pair<const BookmarkNode*, int> > stk; 310 std::stack<std::pair<const BookmarkNode*, int> > stk;
320 311
321 for (int i = 0; i < mobile->child_count(); ++i) { 312 // TODO(kkimlabs): Share the top level folder logic with
Ian Wen 2015/01/24 02:03:43 According to the mock and to the old bookmark mana
Kibeom Kim (inactive) 2015/01/24 02:48:07 Yeah right, so I was planning to change NONE to OT
322 const BookmarkNode* child = mobile->GetChild(i); 313 // |GetTopLevelFolderIDs|. There is no reason to have two
323 if (child->is_folder() && client_->CanBeEditedByUser(child)) 314 // places doing the same work.
324 bookmarkList.push_back(child); 315
325 }
326 for (int i = 0; i < other->child_count(); ++i) { 316 for (int i = 0; i < other->child_count(); ++i) {
327 const BookmarkNode* child = other->GetChild(i); 317 const BookmarkNode* child = other->GetChild(i);
328 if (child->is_folder() && client_->CanBeEditedByUser(child)) 318 if (child->is_folder() && client_->CanBeEditedByUser(child))
329 bookmarkList.push_back(child); 319 bookmarkList.push_back(child);
330 } 320 }
321
331 bookmarkList.push_back(desktop); 322 bookmarkList.push_back(desktop);
newt (away) 2015/01/24 00:40:00 Does this affect the order in which bookmark folde
Kibeom Kim (inactive) 2015/01/24 02:48:07 Yeah we should put mobile first (pun intended). I
323 bookmarkList.push_back(mobile);
324
332 std::stable_sort(bookmarkList.begin(), 325 std::stable_sort(bookmarkList.begin(),
333 bookmarkList.end(), 326 bookmarkList.end(),
334 BookmarkTitleComparer(this, collator.get())); 327 BookmarkTitleComparer(this, collator.get()));
335 328
336 // Push all sorted top folders in stack and give them depth of 0. 329 // Push all sorted top folders in stack and give them depth of 0.
337 // Note the order to push folders to stack should be opposite to the order in 330 // Note the order to push folders to stack should be opposite to the order in
338 // output. 331 // output.
339 for (std::vector<const BookmarkNode*>::reverse_iterator it = 332 for (std::vector<const BookmarkNode*>::reverse_iterator it =
340 bookmarkList.rbegin(); 333 bookmarkList.rbegin();
341 it != bookmarkList.rend(); 334 it != bookmarkList.rend();
(...skipping 708 matching lines...) Expand 10 before | Expand all | Expand 10 after
1050 BookmarkModelChanged(); 1043 BookmarkModelChanged();
1051 } 1044 }
1052 1045
1053 void BookmarksBridge::PartnerShimLoaded(PartnerBookmarksShim* shim) { 1046 void BookmarksBridge::PartnerShimLoaded(PartnerBookmarksShim* shim) {
1054 NotifyIfDoneLoading(); 1047 NotifyIfDoneLoading();
1055 } 1048 }
1056 1049
1057 void BookmarksBridge::ShimBeingDeleted(PartnerBookmarksShim* shim) { 1050 void BookmarksBridge::ShimBeingDeleted(PartnerBookmarksShim* shim) {
1058 partner_bookmarks_shim_ = NULL; 1051 partner_bookmarks_shim_ = NULL;
1059 } 1052 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698