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