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

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

Issue 23849003: Add support for java side bookmark model observers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 months 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/android/bookmarks_bridge.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_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
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
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 }
OLDNEW
« no previous file with comments | « chrome/browser/android/bookmarks_bridge.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698