Index: chrome/browser/android/bookmarks_bridge.cc |
diff --git a/chrome/browser/android/bookmarks_bridge.cc b/chrome/browser/android/bookmarks_bridge.cc |
index de474258f56453947303219b7b047b14d34a300c..e37ab794db1c97d2f12874b90f65f0a60c421108 100644 |
--- a/chrome/browser/android/bookmarks_bridge.cc |
+++ b/chrome/browser/android/bookmarks_bridge.cc |
@@ -17,6 +17,7 @@ |
using base::android::AttachCurrentThread; |
using base::android::ConvertUTF8ToJavaString; |
using base::android::ConvertUTF16ToJavaString; |
+using base::android::ScopedJavaLocalRef; |
using base::android::ScopedJavaGlobalRef; |
using content::BrowserThread; |
@@ -104,22 +105,35 @@ void BookmarksBridge::DeleteBookmark(JNIEnv* env, |
bookmark_model_->Remove(parent_node, parent_node->GetIndexOf(node)); |
} |
-void BookmarksBridge::ExtractBookmarkNodeInformation( |
- const BookmarkNode* node, |
- jobject j_result_obj) { |
+ScopedJavaLocalRef<jobject> BookmarksBridge::CreateJavaBookmark( |
+ const BookmarkNode* node) { |
JNIEnv* env = AttachCurrentThread(); |
+ |
const BookmarkNode* parent = node->parent(); |
- int64 parent_id = -1; |
- if (parent) |
- parent_id = node->parent()->id(); |
+ int64 parent_id = parent ? parent->id() : -1; |
+ |
std::string url; |
if (node->is_url()) |
url = node->url().spec(); |
- Java_BookmarksBridge_create( |
- env, j_result_obj, node->id(), |
+ |
+ return Java_BookmarksBridge_create( |
+ env, |
+ node->id(), |
ConvertUTF16ToJavaString(env, node->GetTitle()).obj(), |
ConvertUTF8ToJavaString(env, url).obj(), |
- node->is_folder(), parent_id, IsEditable(node)); |
+ node->is_folder(), |
+ parent_id, |
+ IsEditable(node)); |
+} |
+ |
+void BookmarksBridge::ExtractBookmarkNodeInformation( |
+ const BookmarkNode* node, |
+ jobject j_result_obj) { |
+ JNIEnv* env = AttachCurrentThread(); |
+ Java_BookmarksBridge_addToList( |
+ env, |
+ j_result_obj, |
+ CreateJavaBookmark(node).obj()); |
} |
const BookmarkNode* BookmarksBridge::GetFolderNodeFromId(jlong folder_id) { |
@@ -162,3 +176,91 @@ void BookmarksBridge::BookmarkModelBeingDeleted(BookmarkModel* model) { |
return; |
Java_BookmarksBridge_bookmarkModelDeleted(env, obj.obj()); |
} |
+ |
+void BookmarksBridge::BookmarkNodeMoved(BookmarkModel* model, |
+ const BookmarkNode* old_parent, |
+ int old_index, |
+ const BookmarkNode* new_parent, |
+ int new_index) { |
+ JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); |
+ if (obj.is_null()) |
+ return; |
+ Java_BookmarksBridge_bookmarkNodeMoved( |
+ env, |
+ obj.obj(), |
+ CreateJavaBookmark(old_parent).obj(), |
+ old_index, |
+ CreateJavaBookmark(new_parent).obj(), |
+ new_index); |
+} |
+ |
+void BookmarksBridge::BookmarkNodeAdded(BookmarkModel* model, |
+ const BookmarkNode* parent, |
+ int index) { |
+ JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); |
+ if (obj.is_null()) |
+ return; |
+ Java_BookmarksBridge_bookmarkNodeAdded( |
+ env, |
+ obj.obj(), |
+ CreateJavaBookmark(parent).obj(), |
+ index); |
+} |
+ |
+void BookmarksBridge::BookmarkNodeRemoved(BookmarkModel* model, |
+ const BookmarkNode* parent, |
+ int old_index, |
+ const BookmarkNode* node) { |
+ JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); |
+ if (obj.is_null()) |
+ return; |
+ Java_BookmarksBridge_bookmarkNodeRemoved( |
+ env, |
+ obj.obj(), |
+ CreateJavaBookmark(parent).obj(), |
+ old_index, |
+ CreateJavaBookmark(node).obj()); |
+} |
+ |
+void BookmarksBridge::BookmarkNodeChanged(BookmarkModel* model, |
+ const BookmarkNode* node) { |
+ JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); |
+ if (obj.is_null()) |
+ return; |
+ Java_BookmarksBridge_bookmarkNodeChanged( |
+ env, |
+ obj.obj(), |
+ CreateJavaBookmark(node).obj()); |
+} |
+ |
+void BookmarksBridge::BookmarkNodeChildrenReordered(BookmarkModel* model, |
+ const BookmarkNode* node) { |
+ JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); |
+ if (obj.is_null()) |
+ return; |
+ Java_BookmarksBridge_bookmarkNodeChildrenReordered( |
+ env, |
+ obj.obj(), |
+ CreateJavaBookmark(node).obj()); |
+} |
+ |
+void BookmarksBridge::ExtensiveBookmarkChangesBeginning(BookmarkModel* model) { |
+ JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); |
+ if (obj.is_null()) |
+ return; |
+ Java_BookmarksBridge_extensiveBookmarkChangesBeginning(env, obj.obj()); |
+} |
+ |
+void BookmarksBridge::ExtensiveBookmarkChangesEnded(BookmarkModel* model) { |
+ JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); |
+ if (obj.is_null()) |
+ return; |
+ Java_BookmarksBridge_extensiveBookmarkChangesEnded(env, obj.obj()); |
+} |