OLD | NEW |
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/bookmark_bridge.h" | 5 #include "chrome/browser/android/bookmarks/bookmark_bridge.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include "base/android/jni_array.h" | 10 #include "base/android/jni_array.h" |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 using bookmarks::android::JavaBookmarkIdGetId; | 45 using bookmarks::android::JavaBookmarkIdGetId; |
46 using bookmarks::android::JavaBookmarkIdGetType; | 46 using bookmarks::android::JavaBookmarkIdGetType; |
47 using bookmarks::BookmarkModel; | 47 using bookmarks::BookmarkModel; |
48 using bookmarks::BookmarkNode; | 48 using bookmarks::BookmarkNode; |
49 using bookmarks::BookmarkPermanentNode; | 49 using bookmarks::BookmarkPermanentNode; |
50 using bookmarks::BookmarkType; | 50 using bookmarks::BookmarkType; |
51 using content::BrowserThread; | 51 using content::BrowserThread; |
52 | 52 |
53 namespace { | 53 namespace { |
54 | 54 |
55 class BookmarkNodeCreationTimeCompareFunctor { | |
56 public: | |
57 bool operator()(const BookmarkNode* lhs, const BookmarkNode* rhs) { | |
58 return lhs->date_added().ToJavaTime() > rhs->date_added().ToJavaTime(); | |
59 } | |
60 }; | |
61 | |
62 class BookmarkTitleComparer { | 55 class BookmarkTitleComparer { |
63 public: | 56 public: |
64 explicit BookmarkTitleComparer(BookmarkBridge* bookmark_bridge, | 57 explicit BookmarkTitleComparer(BookmarkBridge* bookmark_bridge, |
65 const icu::Collator* collator) | 58 const icu::Collator* collator) |
66 : bookmark_bridge_(bookmark_bridge), | 59 : bookmark_bridge_(bookmark_bridge), |
67 collator_(collator) {} | 60 collator_(collator) {} |
68 | 61 |
69 bool operator()(const BookmarkNode* lhs, const BookmarkNode* rhs) { | 62 bool operator()(const BookmarkNode* lhs, const BookmarkNode* rhs) { |
70 if (collator_) { | 63 if (collator_) { |
71 return base::i18n::CompareString16WithCollator( | 64 return base::i18n::CompareString16WithCollator( |
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
444 jint index) { | 437 jint index) { |
445 DCHECK(IsLoaded()); | 438 DCHECK(IsLoaded()); |
446 | 439 |
447 const BookmarkNode* parent = GetNodeByID(id, type); | 440 const BookmarkNode* parent = GetNodeByID(id, type); |
448 DCHECK(parent); | 441 DCHECK(parent); |
449 const BookmarkNode* child = parent->GetChild(index); | 442 const BookmarkNode* child = parent->GetChild(index); |
450 return JavaBookmarkIdCreateBookmarkId( | 443 return JavaBookmarkIdCreateBookmarkId( |
451 env, child->id(), GetBookmarkType(child)); | 444 env, child->id(), GetBookmarkType(child)); |
452 } | 445 } |
453 | 446 |
454 void BookmarkBridge::GetAllBookmarkIDsOrderedByCreationDate( | |
455 JNIEnv* env, | |
456 const JavaParamRef<jobject>& obj, | |
457 const JavaParamRef<jobject>& j_result_obj) { | |
458 DCHECK(IsLoaded()); | |
459 std::list<const BookmarkNode*> folders; | |
460 std::vector<const BookmarkNode*> result; | |
461 folders.push_back(bookmark_model_->root_node()); | |
462 | |
463 for (std::list<const BookmarkNode*>::iterator folder_iter = folders.begin(); | |
464 folder_iter != folders.end(); ++folder_iter) { | |
465 if (*folder_iter == NULL) | |
466 continue; | |
467 | |
468 std::list<const BookmarkNode*>::iterator insert_iter = folder_iter; | |
469 ++insert_iter; | |
470 | |
471 for (int i = 0; i < (*folder_iter)->child_count(); ++i) { | |
472 const BookmarkNode* child = (*folder_iter)->GetChild(i); | |
473 if (!IsReachable(child) || | |
474 bookmarks::IsDescendantOf( | |
475 child, managed_bookmark_service_->managed_node()) || | |
476 bookmarks::IsDescendantOf( | |
477 child, managed_bookmark_service_->supervised_node())) { | |
478 continue; | |
479 } | |
480 | |
481 if (child->is_folder()) { | |
482 insert_iter = folders.insert(insert_iter, child); | |
483 } else { | |
484 result.push_back(child); | |
485 } | |
486 } | |
487 } | |
488 | |
489 std::sort( | |
490 result.begin(), result.end(), BookmarkNodeCreationTimeCompareFunctor()); | |
491 | |
492 for (std::vector<const BookmarkNode*>::const_iterator iter = result.begin(); | |
493 iter != result.end(); | |
494 ++iter) { | |
495 const BookmarkNode* bookmark = *iter; | |
496 Java_BookmarkBridge_addToBookmarkIdList( | |
497 env, j_result_obj, bookmark->id(), GetBookmarkType(bookmark)); | |
498 } | |
499 } | |
500 | |
501 void BookmarkBridge::SetBookmarkTitle(JNIEnv* env, | 447 void BookmarkBridge::SetBookmarkTitle(JNIEnv* env, |
502 const JavaParamRef<jobject>& obj, | 448 const JavaParamRef<jobject>& obj, |
503 jlong id, | 449 jlong id, |
504 jint type, | 450 jint type, |
505 const JavaParamRef<jstring>& j_title) { | 451 const JavaParamRef<jstring>& j_title) { |
506 DCHECK(IsLoaded()); | 452 DCHECK(IsLoaded()); |
507 const BookmarkNode* bookmark = GetNodeByID(id, type); | 453 const BookmarkNode* bookmark = GetNodeByID(id, type); |
508 const base::string16 title = | 454 const base::string16 title = |
509 base::android::ConvertJavaStringToUTF16(env, j_title); | 455 base::android::ConvertJavaStringToUTF16(env, j_title); |
510 | 456 |
(...skipping 597 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1108 BookmarkModelChanged(); | 1054 BookmarkModelChanged(); |
1109 } | 1055 } |
1110 | 1056 |
1111 void BookmarkBridge::PartnerShimLoaded(PartnerBookmarksShim* shim) { | 1057 void BookmarkBridge::PartnerShimLoaded(PartnerBookmarksShim* shim) { |
1112 NotifyIfDoneLoading(); | 1058 NotifyIfDoneLoading(); |
1113 } | 1059 } |
1114 | 1060 |
1115 void BookmarkBridge::ShimBeingDeleted(PartnerBookmarksShim* shim) { | 1061 void BookmarkBridge::ShimBeingDeleted(PartnerBookmarksShim* shim) { |
1116 partner_bookmarks_shim_ = NULL; | 1062 partner_bookmarks_shim_ = NULL; |
1117 } | 1063 } |
OLD | NEW |