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

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

Issue 685953002: Add JNI bridges for EnhancedBookmark Create/AddFolder/Move (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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/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
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
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
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
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
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698