| 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 |