| 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/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/i18n/string_compare.h" | 9 #include "base/i18n/string_compare.h" |
| 10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 #include "components/bookmarks/common/android/bookmark_type.h" | 26 #include "components/bookmarks/common/android/bookmark_type.h" |
| 27 #include "components/signin/core/browser/signin_manager.h" | 27 #include "components/signin/core/browser/signin_manager.h" |
| 28 #include "content/public/browser/browser_thread.h" | 28 #include "content/public/browser/browser_thread.h" |
| 29 #include "jni/BookmarksBridge_jni.h" | 29 #include "jni/BookmarksBridge_jni.h" |
| 30 | 30 |
| 31 using base::android::AttachCurrentThread; | 31 using base::android::AttachCurrentThread; |
| 32 using base::android::ConvertUTF8ToJavaString; | 32 using base::android::ConvertUTF8ToJavaString; |
| 33 using base::android::ConvertUTF16ToJavaString; | 33 using base::android::ConvertUTF16ToJavaString; |
| 34 using base::android::ScopedJavaLocalRef; | 34 using base::android::ScopedJavaLocalRef; |
| 35 using base::android::ScopedJavaGlobalRef; | 35 using base::android::ScopedJavaGlobalRef; |
| 36 using bookmarks::android::JavaBookmarkIdCreateBookmarkId; |
| 36 using bookmarks::android::JavaBookmarkIdGetId; | 37 using bookmarks::android::JavaBookmarkIdGetId; |
| 37 using bookmarks::android::JavaBookmarkIdGetType; | 38 using bookmarks::android::JavaBookmarkIdGetType; |
| 38 using bookmarks::BookmarkType; | 39 using bookmarks::BookmarkType; |
| 39 using content::BrowserThread; | 40 using content::BrowserThread; |
| 40 | 41 |
| 41 namespace { | 42 namespace { |
| 42 | 43 |
| 43 class BookmarkNodeCreationTimeCompareFunctor { | 44 class BookmarkNodeCreationTimeCompareFunctor { |
| 44 public: | 45 public: |
| 45 bool operator()(const BookmarkNode* lhs, const BookmarkNode* rhs) { | 46 bool operator()(const BookmarkNode* lhs, const BookmarkNode* rhs) { |
| (...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 356 ++it) { | 357 ++it) { |
| 357 stk.push(std::make_pair(*it, depth + 1)); | 358 stk.push(std::make_pair(*it, depth + 1)); |
| 358 } | 359 } |
| 359 } | 360 } |
| 360 } | 361 } |
| 361 | 362 |
| 362 ScopedJavaLocalRef<jobject> BookmarksBridge::GetMobileFolderId(JNIEnv* env, | 363 ScopedJavaLocalRef<jobject> BookmarksBridge::GetMobileFolderId(JNIEnv* env, |
| 363 jobject obj) { | 364 jobject obj) { |
| 364 const BookmarkNode* mobile_node = bookmark_model_->mobile_node(); | 365 const BookmarkNode* mobile_node = bookmark_model_->mobile_node(); |
| 365 ScopedJavaLocalRef<jobject> folder_id_obj = | 366 ScopedJavaLocalRef<jobject> folder_id_obj = |
| 366 Java_BookmarksBridge_createBookmarkId( | 367 JavaBookmarkIdCreateBookmarkId( |
| 367 env, mobile_node->id(), GetBookmarkType(mobile_node)); | 368 env, mobile_node->id(), GetBookmarkType(mobile_node)); |
| 368 return folder_id_obj; | 369 return folder_id_obj; |
| 369 } | 370 } |
| 370 | 371 |
| 371 ScopedJavaLocalRef<jobject> BookmarksBridge::GetOtherFolderId(JNIEnv* env, | 372 ScopedJavaLocalRef<jobject> BookmarksBridge::GetOtherFolderId(JNIEnv* env, |
| 372 jobject obj) { | 373 jobject obj) { |
| 373 const BookmarkNode* other_node = bookmark_model_->other_node(); | 374 const BookmarkNode* other_node = bookmark_model_->other_node(); |
| 374 ScopedJavaLocalRef<jobject> folder_id_obj = | 375 ScopedJavaLocalRef<jobject> folder_id_obj = |
| 375 Java_BookmarksBridge_createBookmarkId( | 376 JavaBookmarkIdCreateBookmarkId( |
| 376 env, other_node->id(), GetBookmarkType(other_node)); | 377 env, other_node->id(), GetBookmarkType(other_node)); |
| 377 return folder_id_obj; | 378 return folder_id_obj; |
| 378 } | 379 } |
| 379 | 380 |
| 380 ScopedJavaLocalRef<jobject> BookmarksBridge::GetDesktopFolderId(JNIEnv* env, | 381 ScopedJavaLocalRef<jobject> BookmarksBridge::GetDesktopFolderId(JNIEnv* env, |
| 381 jobject obj) { | 382 jobject obj) { |
| 382 const BookmarkNode* desktop_node = bookmark_model_->bookmark_bar_node(); | 383 const BookmarkNode* desktop_node = bookmark_model_->bookmark_bar_node(); |
| 383 ScopedJavaLocalRef<jobject> folder_id_obj = | 384 ScopedJavaLocalRef<jobject> folder_id_obj = |
| 384 Java_BookmarksBridge_createBookmarkId( | 385 JavaBookmarkIdCreateBookmarkId( |
| 385 env, desktop_node->id(), GetBookmarkType(desktop_node)); | 386 env, desktop_node->id(), GetBookmarkType(desktop_node)); |
| 386 return folder_id_obj; | 387 return folder_id_obj; |
| 387 } | 388 } |
| 388 | 389 |
| 389 void BookmarksBridge::GetChildIDs(JNIEnv* env, | 390 void BookmarksBridge::GetChildIDs(JNIEnv* env, |
| 390 jobject obj, | 391 jobject obj, |
| 391 jlong id, | 392 jlong id, |
| 392 jint type, | 393 jint type, |
| 393 jboolean get_folders, | 394 jboolean get_folders, |
| 394 jboolean get_bookmarks, | 395 jboolean get_bookmarks, |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 427 ScopedJavaLocalRef<jobject> BookmarksBridge::GetChildAt(JNIEnv* env, | 428 ScopedJavaLocalRef<jobject> BookmarksBridge::GetChildAt(JNIEnv* env, |
| 428 jobject obj, | 429 jobject obj, |
| 429 jlong id, | 430 jlong id, |
| 430 jint type, | 431 jint type, |
| 431 jint index) { | 432 jint index) { |
| 432 DCHECK(IsLoaded()); | 433 DCHECK(IsLoaded()); |
| 433 | 434 |
| 434 const BookmarkNode* parent = GetNodeByID(id, type); | 435 const BookmarkNode* parent = GetNodeByID(id, type); |
| 435 DCHECK(parent); | 436 DCHECK(parent); |
| 436 const BookmarkNode* child = parent->GetChild(index); | 437 const BookmarkNode* child = parent->GetChild(index); |
| 437 return Java_BookmarksBridge_createBookmarkId( | 438 return JavaBookmarkIdCreateBookmarkId( |
| 438 env, child->id(), GetBookmarkType(child)); | 439 env, child->id(), GetBookmarkType(child)); |
| 439 } | 440 } |
| 440 | 441 |
| 441 void BookmarksBridge::GetAllBookmarkIDsOrderedByCreationDate( | 442 void BookmarksBridge::GetAllBookmarkIDsOrderedByCreationDate( |
| 442 JNIEnv* env, | 443 JNIEnv* env, |
| 443 jobject obj, | 444 jobject obj, |
| 444 jobject j_result_obj) { | 445 jobject j_result_obj) { |
| 445 DCHECK(IsLoaded()); | 446 DCHECK(IsLoaded()); |
| 446 std::list<const BookmarkNode*> folders; | 447 std::list<const BookmarkNode*> folders; |
| 447 std::vector<const BookmarkNode*> result; | 448 std::vector<const BookmarkNode*> result; |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 525 DCHECK(IsLoaded()); | 526 DCHECK(IsLoaded()); |
| 526 long folder_id = JavaBookmarkIdGetId(env, j_folder_id_obj); | 527 long folder_id = JavaBookmarkIdGetId(env, j_folder_id_obj); |
| 527 int type = JavaBookmarkIdGetType(env, j_folder_id_obj); | 528 int type = JavaBookmarkIdGetType(env, j_folder_id_obj); |
| 528 const BookmarkNode* folder = GetFolderWithFallback(folder_id, type); | 529 const BookmarkNode* folder = GetFolderWithFallback(folder_id, type); |
| 529 | 530 |
| 530 if (!folder->is_folder() || !IsReachable(folder)) | 531 if (!folder->is_folder() || !IsReachable(folder)) |
| 531 return; | 532 return; |
| 532 | 533 |
| 533 // Recreate the java bookmarkId object due to fallback. | 534 // Recreate the java bookmarkId object due to fallback. |
| 534 ScopedJavaLocalRef<jobject> folder_id_obj = | 535 ScopedJavaLocalRef<jobject> folder_id_obj = |
| 535 Java_BookmarksBridge_createBookmarkId( | 536 JavaBookmarkIdCreateBookmarkId( |
| 536 env, folder->id(), GetBookmarkType(folder)); | 537 env, folder->id(), GetBookmarkType(folder)); |
| 537 j_folder_id_obj = folder_id_obj.obj(); | 538 j_folder_id_obj = folder_id_obj.obj(); |
| 538 | 539 |
| 539 // Get the folder contents. | 540 // Get the folder contents. |
| 540 for (int i = 0; i < folder->child_count(); ++i) { | 541 for (int i = 0; i < folder->child_count(); ++i) { |
| 541 const BookmarkNode* node = folder->GetChild(i); | 542 const BookmarkNode* node = folder->GetChild(i); |
| 542 if (!IsFolderAvailable(node)) | 543 if (!IsFolderAvailable(node)) |
| 543 continue; | 544 continue; |
| 544 ExtractBookmarkNodeInformation(node, j_result_obj); | 545 ExtractBookmarkNodeInformation(node, j_result_obj); |
| 545 } | 546 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 565 DCHECK(IsLoaded()); | 566 DCHECK(IsLoaded()); |
| 566 long folder_id = JavaBookmarkIdGetId(env, j_folder_id_obj); | 567 long folder_id = JavaBookmarkIdGetId(env, j_folder_id_obj); |
| 567 int type = JavaBookmarkIdGetType(env, j_folder_id_obj); | 568 int type = JavaBookmarkIdGetType(env, j_folder_id_obj); |
| 568 const BookmarkNode* folder = GetFolderWithFallback(folder_id, type); | 569 const BookmarkNode* folder = GetFolderWithFallback(folder_id, type); |
| 569 | 570 |
| 570 if (!folder->is_folder() || !IsReachable(folder)) | 571 if (!folder->is_folder() || !IsReachable(folder)) |
| 571 return; | 572 return; |
| 572 | 573 |
| 573 // Recreate the java bookmarkId object due to fallback. | 574 // Recreate the java bookmarkId object due to fallback. |
| 574 ScopedJavaLocalRef<jobject> folder_id_obj = | 575 ScopedJavaLocalRef<jobject> folder_id_obj = |
| 575 Java_BookmarksBridge_createBookmarkId( | 576 JavaBookmarkIdCreateBookmarkId( |
| 576 env, folder->id(), GetBookmarkType(folder)); | 577 env, folder->id(), GetBookmarkType(folder)); |
| 577 j_folder_id_obj = folder_id_obj.obj(); | 578 j_folder_id_obj = folder_id_obj.obj(); |
| 578 | 579 |
| 579 // Get the folder hierarchy. | 580 // Get the folder hierarchy. |
| 580 const BookmarkNode* node = folder; | 581 const BookmarkNode* node = folder; |
| 581 while (node) { | 582 while (node) { |
| 582 ExtractBookmarkNodeInformation(node, j_result_obj); | 583 ExtractBookmarkNodeInformation(node, j_result_obj); |
| 583 node = GetParentNode(node); | 584 node = GetParentNode(node); |
| 584 } | 585 } |
| 585 | 586 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 597 int type = JavaBookmarkIdGetType(env, j_parent_id_obj); | 598 int type = JavaBookmarkIdGetType(env, j_parent_id_obj); |
| 598 const BookmarkNode* parent = GetNodeByID(bookmark_id, type); | 599 const BookmarkNode* parent = GetNodeByID(bookmark_id, type); |
| 599 | 600 |
| 600 const BookmarkNode* new_node = bookmark_model_->AddFolder( | 601 const BookmarkNode* new_node = bookmark_model_->AddFolder( |
| 601 parent, index, base::android::ConvertJavaStringToUTF16(env, j_title)); | 602 parent, index, base::android::ConvertJavaStringToUTF16(env, j_title)); |
| 602 if (!new_node) { | 603 if (!new_node) { |
| 603 NOTREACHED(); | 604 NOTREACHED(); |
| 604 return ScopedJavaLocalRef<jobject>(); | 605 return ScopedJavaLocalRef<jobject>(); |
| 605 } | 606 } |
| 606 ScopedJavaLocalRef<jobject> new_java_obj = | 607 ScopedJavaLocalRef<jobject> new_java_obj = |
| 607 Java_BookmarksBridge_createBookmarkId( | 608 JavaBookmarkIdCreateBookmarkId( |
| 608 env, new_node->id(), GetBookmarkType(new_node)); | 609 env, new_node->id(), GetBookmarkType(new_node)); |
| 609 return new_java_obj; | 610 return new_java_obj; |
| 610 } | 611 } |
| 611 | 612 |
| 612 void BookmarksBridge::DeleteBookmark(JNIEnv* env, | 613 void BookmarksBridge::DeleteBookmark(JNIEnv* env, |
| 613 jobject obj, | 614 jobject obj, |
| 614 jobject j_bookmark_id_obj) { | 615 jobject j_bookmark_id_obj) { |
| 615 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 616 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 616 DCHECK(IsLoaded()); | 617 DCHECK(IsLoaded()); |
| 617 | 618 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 667 const BookmarkNode* new_node = bookmark_model_->AddURL( | 668 const BookmarkNode* new_node = bookmark_model_->AddURL( |
| 668 parent, | 669 parent, |
| 669 index, | 670 index, |
| 670 base::android::ConvertJavaStringToUTF16(env, j_title), | 671 base::android::ConvertJavaStringToUTF16(env, j_title), |
| 671 GURL(base::android::ConvertJavaStringToUTF16(env, j_url))); | 672 GURL(base::android::ConvertJavaStringToUTF16(env, j_url))); |
| 672 if (!new_node) { | 673 if (!new_node) { |
| 673 NOTREACHED(); | 674 NOTREACHED(); |
| 674 return ScopedJavaLocalRef<jobject>(); | 675 return ScopedJavaLocalRef<jobject>(); |
| 675 } | 676 } |
| 676 ScopedJavaLocalRef<jobject> new_java_obj = | 677 ScopedJavaLocalRef<jobject> new_java_obj = |
| 677 Java_BookmarksBridge_createBookmarkId( | 678 JavaBookmarkIdCreateBookmarkId( |
| 678 env, new_node->id(), GetBookmarkType(new_node)); | 679 env, new_node->id(), GetBookmarkType(new_node)); |
| 679 return new_java_obj; | 680 return new_java_obj; |
| 680 } | 681 } |
| 681 | 682 |
| 682 void BookmarksBridge::Undo(JNIEnv* env, jobject obj) { | 683 void BookmarksBridge::Undo(JNIEnv* env, jobject obj) { |
| 683 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 684 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 684 DCHECK(IsLoaded()); | 685 DCHECK(IsLoaded()); |
| 685 BookmarkUndoService* undo_service = | 686 BookmarkUndoService* undo_service = |
| 686 BookmarkUndoServiceFactory::GetForProfile(profile_); | 687 BookmarkUndoServiceFactory::GetForProfile(profile_); |
| 687 UndoManager* undo_manager = undo_service->undo_manager(); | 688 UndoManager* undo_manager = undo_service->undo_manager(); |
| (...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 981 BookmarkModelChanged(); | 982 BookmarkModelChanged(); |
| 982 } | 983 } |
| 983 | 984 |
| 984 void BookmarksBridge::PartnerShimLoaded(PartnerBookmarksShim* shim) { | 985 void BookmarksBridge::PartnerShimLoaded(PartnerBookmarksShim* shim) { |
| 985 NotifyIfDoneLoading(); | 986 NotifyIfDoneLoading(); |
| 986 } | 987 } |
| 987 | 988 |
| 988 void BookmarksBridge::ShimBeingDeleted(PartnerBookmarksShim* shim) { | 989 void BookmarksBridge::ShimBeingDeleted(PartnerBookmarksShim* shim) { |
| 989 partner_bookmarks_shim_ = NULL; | 990 partner_bookmarks_shim_ = NULL; |
| 990 } | 991 } |
| OLD | NEW |