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_bridge.h" | 5 #include "chrome/browser/android/bookmarks_bridge.h" |
6 | 6 |
7 #include "base/android/jni_string.h" | 7 #include "base/android/jni_string.h" |
8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
9 #include "chrome/browser/bookmarks/bookmark_model.h" | 9 #include "chrome/browser/bookmarks/bookmark_model.h" |
10 #include "chrome/browser/bookmarks/bookmark_model_factory.h" | 10 #include "chrome/browser/bookmarks/bookmark_model_factory.h" |
11 #include "chrome/browser/profiles/profile.h" | 11 #include "chrome/browser/profiles/profile.h" |
12 #include "chrome/browser/profiles/profile_android.h" | 12 #include "chrome/browser/profiles/profile_android.h" |
13 #include "chrome/common/pref_names.h" | 13 #include "chrome/common/pref_names.h" |
14 #include "content/public/browser/browser_thread.h" | 14 #include "content/public/browser/browser_thread.h" |
15 #include "jni/BookmarksBridge_jni.h" | 15 #include "jni/BookmarksBridge_jni.h" |
16 | 16 |
17 using base::android::AttachCurrentThread; | 17 using base::android::AttachCurrentThread; |
18 using base::android::ConvertUTF8ToJavaString; | 18 using base::android::ConvertUTF8ToJavaString; |
19 using base::android::ConvertUTF16ToJavaString; | 19 using base::android::ConvertUTF16ToJavaString; |
20 using base::android::ScopedJavaLocalRef; | |
20 using base::android::ScopedJavaGlobalRef; | 21 using base::android::ScopedJavaGlobalRef; |
21 using content::BrowserThread; | 22 using content::BrowserThread; |
22 | 23 |
23 BookmarksBridge::BookmarksBridge(JNIEnv* env, | 24 BookmarksBridge::BookmarksBridge(JNIEnv* env, |
24 jobject obj, | 25 jobject obj, |
25 jobject j_profile) | 26 jobject j_profile) |
26 : weak_java_ref_(env, obj) { | 27 : weak_java_ref_(env, obj) { |
27 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 28 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
28 Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile); | 29 Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile); |
29 bookmark_model_ = BookmarkModelFactory::GetForProfile(profile); | 30 bookmark_model_ = BookmarkModelFactory::GetForProfile(profile); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
97 const BookmarkNode* node = bookmark_model_->GetNodeByID(bookmark_id); | 98 const BookmarkNode* node = bookmark_model_->GetNodeByID(bookmark_id); |
98 if (!IsEditable(node)) { | 99 if (!IsEditable(node)) { |
99 NOTREACHED(); | 100 NOTREACHED(); |
100 return; | 101 return; |
101 } | 102 } |
102 | 103 |
103 const BookmarkNode* parent_node = node->parent(); | 104 const BookmarkNode* parent_node = node->parent(); |
104 bookmark_model_->Remove(parent_node, parent_node->GetIndexOf(node)); | 105 bookmark_model_->Remove(parent_node, parent_node->GetIndexOf(node)); |
105 } | 106 } |
106 | 107 |
108 ScopedJavaLocalRef<jobject> BookmarksBridge::CreateJavaBookmark( | |
109 const BookmarkNode* node) { | |
110 JNIEnv* env = AttachCurrentThread(); | |
111 | |
112 const BookmarkNode* parent = node->parent(); | |
113 int64 parent_id = -1; | |
newt (away)
2013/09/06 22:06:33
maybe:
int64 parent_id = parent ? parent->id(
Ted C
2013/09/06 22:14:27
Done.
| |
114 if (parent) | |
115 parent_id = node->parent()->id(); | |
116 | |
117 std::string url; | |
118 if (node->is_url()) | |
119 url = node->url().spec(); | |
120 | |
121 return Java_BookmarksBridge_create( | |
122 env, | |
123 node->id(), | |
124 ConvertUTF16ToJavaString(env, node->GetTitle()).obj(), | |
125 ConvertUTF8ToJavaString(env, url).obj(), | |
126 node->is_folder(), | |
127 parent_id, | |
128 IsEditable(node)); | |
129 } | |
130 | |
107 void BookmarksBridge::ExtractBookmarkNodeInformation( | 131 void BookmarksBridge::ExtractBookmarkNodeInformation( |
108 const BookmarkNode* node, | 132 const BookmarkNode* node, |
109 jobject j_result_obj) { | 133 jobject j_result_obj) { |
110 JNIEnv* env = AttachCurrentThread(); | 134 JNIEnv* env = AttachCurrentThread(); |
111 const BookmarkNode* parent = node->parent(); | 135 Java_BookmarksBridge_addToList( |
112 int64 parent_id = -1; | 136 env, |
113 if (parent) | 137 j_result_obj, |
114 parent_id = node->parent()->id(); | 138 CreateJavaBookmark(node).obj()); |
115 std::string url; | |
116 if (node->is_url()) | |
117 url = node->url().spec(); | |
118 Java_BookmarksBridge_create( | |
119 env, j_result_obj, node->id(), | |
120 ConvertUTF16ToJavaString(env, node->GetTitle()).obj(), | |
121 ConvertUTF8ToJavaString(env, url).obj(), | |
122 node->is_folder(), parent_id, IsEditable(node)); | |
123 } | 139 } |
124 | 140 |
125 const BookmarkNode* BookmarksBridge::GetFolderNodeFromId(jlong folder_id) { | 141 const BookmarkNode* BookmarksBridge::GetFolderNodeFromId(jlong folder_id) { |
126 const BookmarkNode* folder; | 142 const BookmarkNode* folder; |
127 if (folder_id == -1) { | 143 if (folder_id == -1) { |
128 folder = bookmark_model_->mobile_node(); | 144 folder = bookmark_model_->mobile_node(); |
129 } else { | 145 } else { |
130 folder = bookmark_model_->GetNodeByID( | 146 folder = bookmark_model_->GetNodeByID( |
131 static_cast<int64>(folder_id)); | 147 static_cast<int64>(folder_id)); |
132 } | 148 } |
(...skipping 22 matching lines...) Expand all Loading... | |
155 Java_BookmarksBridge_bookmarkModelLoaded(env, obj.obj()); | 171 Java_BookmarksBridge_bookmarkModelLoaded(env, obj.obj()); |
156 } | 172 } |
157 | 173 |
158 void BookmarksBridge::BookmarkModelBeingDeleted(BookmarkModel* model) { | 174 void BookmarksBridge::BookmarkModelBeingDeleted(BookmarkModel* model) { |
159 JNIEnv* env = AttachCurrentThread(); | 175 JNIEnv* env = AttachCurrentThread(); |
160 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); | 176 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); |
161 if (obj.is_null()) | 177 if (obj.is_null()) |
162 return; | 178 return; |
163 Java_BookmarksBridge_bookmarkModelDeleted(env, obj.obj()); | 179 Java_BookmarksBridge_bookmarkModelDeleted(env, obj.obj()); |
164 } | 180 } |
181 | |
182 void BookmarksBridge::BookmarkNodeMoved(BookmarkModel* model, | |
183 const BookmarkNode* old_parent, | |
184 int old_index, | |
185 const BookmarkNode* new_parent, | |
186 int new_index) { | |
187 JNIEnv* env = AttachCurrentThread(); | |
188 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); | |
189 if (obj.is_null()) | |
190 return; | |
191 Java_BookmarksBridge_bookmarkNodeMoved( | |
192 env, | |
193 obj.obj(), | |
194 CreateJavaBookmark(old_parent).obj(), | |
195 old_index, | |
196 CreateJavaBookmark(new_parent).obj(), | |
197 new_index); | |
198 } | |
199 | |
200 void BookmarksBridge::BookmarkNodeAdded(BookmarkModel* model, | |
201 const BookmarkNode* parent, | |
202 int index) { | |
203 JNIEnv* env = AttachCurrentThread(); | |
204 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); | |
205 if (obj.is_null()) | |
206 return; | |
207 Java_BookmarksBridge_bookmarkNodeAdded( | |
newt (away)
2013/09/06 22:06:33
indent
Ted C
2013/09/06 22:14:27
Done.
| |
208 env, | |
209 obj.obj(), | |
210 CreateJavaBookmark(parent).obj(), | |
211 index); | |
212 } | |
213 | |
214 void BookmarksBridge::BookmarkNodeRemoved(BookmarkModel* model, | |
215 const BookmarkNode* parent, | |
216 int old_index, | |
217 const BookmarkNode* node) { | |
218 JNIEnv* env = AttachCurrentThread(); | |
219 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); | |
220 if (obj.is_null()) | |
221 return; | |
222 Java_BookmarksBridge_bookmarkNodeRemoved( | |
223 env, | |
224 obj.obj(), | |
225 CreateJavaBookmark(parent).obj(), | |
226 old_index, | |
227 CreateJavaBookmark(node).obj()); | |
228 } | |
229 | |
230 void BookmarksBridge::BookmarkNodeChanged(BookmarkModel* model, | |
231 const BookmarkNode* node) { | |
232 JNIEnv* env = AttachCurrentThread(); | |
233 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); | |
234 if (obj.is_null()) | |
235 return; | |
236 Java_BookmarksBridge_bookmarkNodeChanged( | |
newt (away)
2013/09/06 22:06:33
indent
Ted C
2013/09/06 22:14:27
Done.
| |
237 env, | |
238 obj.obj(), | |
239 CreateJavaBookmark(node).obj()); | |
240 } | |
241 | |
242 void BookmarksBridge::BookmarkNodeChildrenReordered(BookmarkModel* model, | |
243 const BookmarkNode* node) { | |
244 JNIEnv* env = AttachCurrentThread(); | |
245 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); | |
246 if (obj.is_null()) | |
247 return; | |
248 Java_BookmarksBridge_bookmarkNodeChildrenReordered( | |
249 env, | |
newt (away)
2013/09/06 22:06:33
indent
Ted C
2013/09/06 22:14:27
Done.
| |
250 obj.obj(), | |
251 CreateJavaBookmark(node).obj()); | |
252 } | |
253 | |
254 void BookmarksBridge::ExtensiveBookmarkChangesBeginning(BookmarkModel* model) { | |
255 JNIEnv* env = AttachCurrentThread(); | |
256 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); | |
257 if (obj.is_null()) | |
258 return; | |
259 Java_BookmarksBridge_extensiveBookmarkChangesBeginning(env, obj.obj()); | |
260 } | |
261 | |
262 void BookmarksBridge::ExtensiveBookmarkChangesEnded(BookmarkModel* model) { | |
263 JNIEnv* env = AttachCurrentThread(); | |
264 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); | |
265 if (obj.is_null()) | |
266 return; | |
267 Java_BookmarksBridge_extensiveBookmarkChangesEnded(env, obj.obj()); | |
268 } | |
OLD | NEW |