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 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 | 139 |
140 static bool IsEditBookmarksEnabled() { | 140 static bool IsEditBookmarksEnabled() { |
141 return ProfileManager::GetLastUsedProfile()->GetPrefs()->GetBoolean( | 141 return ProfileManager::GetLastUsedProfile()->GetPrefs()->GetBoolean( |
142 bookmarks::prefs::kEditBookmarksEnabled); | 142 bookmarks::prefs::kEditBookmarksEnabled); |
143 } | 143 } |
144 | 144 |
145 static jboolean IsEditBookmarksEnabled(JNIEnv* env, jclass clazz) { | 145 static jboolean IsEditBookmarksEnabled(JNIEnv* env, jclass clazz) { |
146 return IsEditBookmarksEnabled(); | 146 return IsEditBookmarksEnabled(); |
147 } | 147 } |
148 | 148 |
| 149 void BookmarksBridge::LoadEmptyPartnerBookmarkShimForTesting(JNIEnv* env, |
| 150 jobject obj) { |
| 151 if (partner_bookmarks_shim_->IsLoaded()) return; |
| 152 partner_bookmarks_shim_->SetPartnerBookmarksRoot( |
| 153 new BookmarkPermanentNode(0)); |
| 154 DCHECK(partner_bookmarks_shim_->IsLoaded()); |
| 155 } |
| 156 |
149 ScopedJavaLocalRef<jobject> BookmarksBridge::GetBookmarkByID(JNIEnv* env, | 157 ScopedJavaLocalRef<jobject> BookmarksBridge::GetBookmarkByID(JNIEnv* env, |
150 jobject obj, | 158 jobject obj, |
151 jlong id, | 159 jlong id, |
152 jint type) { | 160 jint type) { |
153 DCHECK(IsLoaded()); | 161 DCHECK(IsLoaded()); |
154 return CreateJavaBookmark(GetNodeByID(id, type)); | 162 return CreateJavaBookmark(GetNodeByID(id, type)); |
155 } | 163 } |
156 | 164 |
157 bool BookmarksBridge::IsDoingExtensiveChanges(JNIEnv* env, jobject obj) { | 165 bool BookmarksBridge::IsDoingExtensiveChanges(JNIEnv* env, jobject obj) { |
158 return bookmark_model_->IsDoingExtensiveChanges(); | 166 return bookmark_model_->IsDoingExtensiveChanges(); |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
356 | 364 |
357 ScopedJavaLocalRef<jobject> BookmarksBridge::GetMobileFolderId(JNIEnv* env, | 365 ScopedJavaLocalRef<jobject> BookmarksBridge::GetMobileFolderId(JNIEnv* env, |
358 jobject obj) { | 366 jobject obj) { |
359 const BookmarkNode* mobileNode = bookmark_model_->mobile_node(); | 367 const BookmarkNode* mobileNode = bookmark_model_->mobile_node(); |
360 ScopedJavaLocalRef<jobject> folder_id_obj = | 368 ScopedJavaLocalRef<jobject> folder_id_obj = |
361 Java_BookmarksBridge_createBookmarkId( | 369 Java_BookmarksBridge_createBookmarkId( |
362 env, mobileNode->id(), GetBookmarkType(mobileNode)); | 370 env, mobileNode->id(), GetBookmarkType(mobileNode)); |
363 return folder_id_obj; | 371 return folder_id_obj; |
364 } | 372 } |
365 | 373 |
| 374 ScopedJavaLocalRef<jobject> BookmarksBridge::GetOtherFolderId(JNIEnv* env, |
| 375 jobject obj) { |
| 376 const BookmarkNode* otherNode = bookmark_model_->other_node(); |
| 377 ScopedJavaLocalRef<jobject> folder_id_obj = |
| 378 Java_BookmarksBridge_createBookmarkId( |
| 379 env, otherNode->id(), GetBookmarkType(otherNode)); |
| 380 return folder_id_obj; |
| 381 } |
| 382 |
| 383 ScopedJavaLocalRef<jobject> BookmarksBridge::GetDesktopFolderId(JNIEnv* env, |
| 384 jobject obj) { |
| 385 const BookmarkNode* desktopNode = bookmark_model_->bookmark_bar_node(); |
| 386 ScopedJavaLocalRef<jobject> folder_id_obj = |
| 387 Java_BookmarksBridge_createBookmarkId( |
| 388 env, desktopNode->id(), GetBookmarkType(desktopNode)); |
| 389 return folder_id_obj; |
| 390 } |
| 391 |
366 void BookmarksBridge::GetChildIDs(JNIEnv* env, | 392 void BookmarksBridge::GetChildIDs(JNIEnv* env, |
367 jobject obj, | 393 jobject obj, |
368 jlong id, | 394 jlong id, |
369 jint type, | 395 jint type, |
370 jboolean get_folders, | 396 jboolean get_folders, |
371 jboolean get_bookmarks, | 397 jboolean get_bookmarks, |
372 jobject j_result_obj) { | 398 jobject j_result_obj) { |
373 DCHECK(IsLoaded()); | 399 DCHECK(IsLoaded()); |
374 | 400 |
375 const BookmarkNode* parent = GetNodeByID(id, type); | 401 const BookmarkNode* parent = GetNodeByID(id, type); |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
543 const BookmarkNode* node = folder; | 569 const BookmarkNode* node = folder; |
544 while (node) { | 570 while (node) { |
545 ExtractBookmarkNodeInformation(node, j_result_obj); | 571 ExtractBookmarkNodeInformation(node, j_result_obj); |
546 node = GetParentNode(node); | 572 node = GetParentNode(node); |
547 } | 573 } |
548 | 574 |
549 Java_BookmarksCallback_onBookmarksFolderHierarchyAvailable( | 575 Java_BookmarksCallback_onBookmarksFolderHierarchyAvailable( |
550 env, j_callback_obj, j_folder_id_obj, j_result_obj); | 576 env, j_callback_obj, j_folder_id_obj, j_result_obj); |
551 } | 577 } |
552 | 578 |
| 579 ScopedJavaLocalRef<jobject> BookmarksBridge::AddFolder(JNIEnv* env, |
| 580 jobject obj, |
| 581 jobject j_parent_id_obj, |
| 582 jint index, |
| 583 jstring j_title) { |
| 584 DCHECK(IsLoaded()); |
| 585 long bookmark_id = JavaBookmarkIdGetId(env, j_parent_id_obj); |
| 586 int type = JavaBookmarkIdGetType(env, j_parent_id_obj); |
| 587 const BookmarkNode* parent = GetNodeByID(bookmark_id, type); |
| 588 if (type != BookmarkType::NORMAL) { |
| 589 NOTREACHED(); |
| 590 return ScopedJavaLocalRef<jobject>(); |
| 591 } |
| 592 const BookmarkNode* newNode = bookmark_model_->AddFolder( |
| 593 parent, index, base::android::ConvertJavaStringToUTF16(env, j_title)); |
| 594 ScopedJavaLocalRef<jobject> new_java_obj = |
| 595 Java_BookmarksBridge_createBookmarkId( |
| 596 env, newNode->id(), GetBookmarkType(newNode)); |
| 597 return new_java_obj; |
| 598 } |
| 599 |
553 void BookmarksBridge::DeleteBookmark(JNIEnv* env, | 600 void BookmarksBridge::DeleteBookmark(JNIEnv* env, |
554 jobject obj, | 601 jobject obj, |
555 jobject j_bookmark_id_obj) { | 602 jobject j_bookmark_id_obj) { |
556 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 603 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
557 DCHECK(IsLoaded()); | 604 DCHECK(IsLoaded()); |
558 | 605 |
559 long bookmark_id = JavaBookmarkIdGetId(env, j_bookmark_id_obj); | 606 long bookmark_id = JavaBookmarkIdGetId(env, j_bookmark_id_obj); |
560 int type = JavaBookmarkIdGetType(env, j_bookmark_id_obj); | 607 int type = JavaBookmarkIdGetType(env, j_bookmark_id_obj); |
561 const BookmarkNode* node = GetNodeByID(bookmark_id, type); | 608 const BookmarkNode* node = GetNodeByID(bookmark_id, type); |
562 if (!IsEditable(node)) { | 609 if (!IsEditable(node)) { |
(...skipping 23 matching lines...) Expand all Loading... |
586 if (!IsEditable(node)) { | 633 if (!IsEditable(node)) { |
587 NOTREACHED(); | 634 NOTREACHED(); |
588 return; | 635 return; |
589 } | 636 } |
590 bookmark_id = JavaBookmarkIdGetId(env, j_parent_id_obj); | 637 bookmark_id = JavaBookmarkIdGetId(env, j_parent_id_obj); |
591 type = JavaBookmarkIdGetType(env, j_parent_id_obj); | 638 type = JavaBookmarkIdGetType(env, j_parent_id_obj); |
592 const BookmarkNode* new_parent_node = GetNodeByID(bookmark_id, type); | 639 const BookmarkNode* new_parent_node = GetNodeByID(bookmark_id, type); |
593 bookmark_model_->Move(node, new_parent_node, index); | 640 bookmark_model_->Move(node, new_parent_node, index); |
594 } | 641 } |
595 | 642 |
| 643 ScopedJavaLocalRef<jobject> BookmarksBridge::AddBookmark( |
| 644 JNIEnv* env, |
| 645 jobject obj, |
| 646 jobject j_parent_id_obj, |
| 647 jint index, |
| 648 jstring j_title, |
| 649 jstring j_url) { |
| 650 DCHECK(IsLoaded()); |
| 651 long bookmark_id = JavaBookmarkIdGetId(env, j_parent_id_obj); |
| 652 int type = JavaBookmarkIdGetType(env, j_parent_id_obj); |
| 653 const BookmarkNode* parent = GetNodeByID(bookmark_id, type); |
| 654 if (type != BookmarkType::NORMAL) { |
| 655 NOTREACHED(); |
| 656 return ScopedJavaLocalRef<jobject>(); |
| 657 } |
| 658 const BookmarkNode* newNode = bookmark_model_->AddURL( |
| 659 parent, |
| 660 index, |
| 661 base::android::ConvertJavaStringToUTF16(env, j_title), |
| 662 GURL(base::android::ConvertJavaStringToUTF16(env, j_url))); |
| 663 ScopedJavaLocalRef<jobject> new_java_obj = |
| 664 Java_BookmarksBridge_createBookmarkId( |
| 665 env, newNode->id(), GetBookmarkType(newNode)); |
| 666 return new_java_obj; |
| 667 } |
| 668 |
596 ScopedJavaLocalRef<jobject> BookmarksBridge::CreateJavaBookmark( | 669 ScopedJavaLocalRef<jobject> BookmarksBridge::CreateJavaBookmark( |
597 const BookmarkNode* node) { | 670 const BookmarkNode* node) { |
598 JNIEnv* env = AttachCurrentThread(); | 671 JNIEnv* env = AttachCurrentThread(); |
599 | 672 |
600 const BookmarkNode* parent = GetParentNode(node); | 673 const BookmarkNode* parent = GetParentNode(node); |
601 int64 parent_id = parent ? parent->id() : -1; | 674 int64 parent_id = parent ? parent->id() : -1; |
602 | 675 |
603 std::string url; | 676 std::string url; |
604 if (node->is_url()) | 677 if (node->is_url()) |
605 url = node->url().spec(); | 678 url = node->url().spec(); |
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
871 BookmarkModelChanged(); | 944 BookmarkModelChanged(); |
872 } | 945 } |
873 | 946 |
874 void BookmarksBridge::PartnerShimLoaded(PartnerBookmarksShim* shim) { | 947 void BookmarksBridge::PartnerShimLoaded(PartnerBookmarksShim* shim) { |
875 NotifyIfDoneLoading(); | 948 NotifyIfDoneLoading(); |
876 } | 949 } |
877 | 950 |
878 void BookmarksBridge::ShimBeingDeleted(PartnerBookmarksShim* shim) { | 951 void BookmarksBridge::ShimBeingDeleted(PartnerBookmarksShim* shim) { |
879 partner_bookmarks_shim_ = NULL; | 952 partner_bookmarks_shim_ = NULL; |
880 } | 953 } |
OLD | NEW |