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

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: Address newt@ comments 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 = parent ? parent->id() : -1;
114
115 std::string url;
116 if (node->is_url())
117 url = node->url().spec();
118
119 return Java_BookmarksBridge_create(
120 env,
121 node->id(),
122 ConvertUTF16ToJavaString(env, node->GetTitle()).obj(),
123 ConvertUTF8ToJavaString(env, url).obj(),
124 node->is_folder(),
125 parent_id,
126 IsEditable(node));
127 }
128
107 void BookmarksBridge::ExtractBookmarkNodeInformation( 129 void BookmarksBridge::ExtractBookmarkNodeInformation(
108 const BookmarkNode* node, 130 const BookmarkNode* node,
109 jobject j_result_obj) { 131 jobject j_result_obj) {
110 JNIEnv* env = AttachCurrentThread(); 132 JNIEnv* env = AttachCurrentThread();
111 const BookmarkNode* parent = node->parent(); 133 Java_BookmarksBridge_addToList(
112 int64 parent_id = -1; 134 env,
113 if (parent) 135 j_result_obj,
114 parent_id = node->parent()->id(); 136 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 } 137 }
124 138
125 const BookmarkNode* BookmarksBridge::GetFolderNodeFromId(jlong folder_id) { 139 const BookmarkNode* BookmarksBridge::GetFolderNodeFromId(jlong folder_id) {
126 const BookmarkNode* folder; 140 const BookmarkNode* folder;
127 if (folder_id == -1) { 141 if (folder_id == -1) {
128 folder = bookmark_model_->mobile_node(); 142 folder = bookmark_model_->mobile_node();
129 } else { 143 } else {
130 folder = bookmark_model_->GetNodeByID( 144 folder = bookmark_model_->GetNodeByID(
131 static_cast<int64>(folder_id)); 145 static_cast<int64>(folder_id));
132 } 146 }
(...skipping 22 matching lines...) Expand all
155 Java_BookmarksBridge_bookmarkModelLoaded(env, obj.obj()); 169 Java_BookmarksBridge_bookmarkModelLoaded(env, obj.obj());
156 } 170 }
157 171
158 void BookmarksBridge::BookmarkModelBeingDeleted(BookmarkModel* model) { 172 void BookmarksBridge::BookmarkModelBeingDeleted(BookmarkModel* model) {
159 JNIEnv* env = AttachCurrentThread(); 173 JNIEnv* env = AttachCurrentThread();
160 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); 174 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
161 if (obj.is_null()) 175 if (obj.is_null())
162 return; 176 return;
163 Java_BookmarksBridge_bookmarkModelDeleted(env, obj.obj()); 177 Java_BookmarksBridge_bookmarkModelDeleted(env, obj.obj());
164 } 178 }
179
180 void BookmarksBridge::BookmarkNodeMoved(BookmarkModel* model,
181 const BookmarkNode* old_parent,
182 int old_index,
183 const BookmarkNode* new_parent,
184 int new_index) {
185 JNIEnv* env = AttachCurrentThread();
186 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
187 if (obj.is_null())
188 return;
189 Java_BookmarksBridge_bookmarkNodeMoved(
190 env,
191 obj.obj(),
192 CreateJavaBookmark(old_parent).obj(),
193 old_index,
194 CreateJavaBookmark(new_parent).obj(),
195 new_index);
196 }
197
198 void BookmarksBridge::BookmarkNodeAdded(BookmarkModel* model,
199 const BookmarkNode* parent,
200 int index) {
201 JNIEnv* env = AttachCurrentThread();
202 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
203 if (obj.is_null())
204 return;
205 Java_BookmarksBridge_bookmarkNodeAdded(
206 env,
207 obj.obj(),
208 CreateJavaBookmark(parent).obj(),
209 index);
210 }
211
212 void BookmarksBridge::BookmarkNodeRemoved(BookmarkModel* model,
213 const BookmarkNode* parent,
214 int old_index,
215 const BookmarkNode* node) {
216 JNIEnv* env = AttachCurrentThread();
217 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
218 if (obj.is_null())
219 return;
220 Java_BookmarksBridge_bookmarkNodeRemoved(
221 env,
222 obj.obj(),
223 CreateJavaBookmark(parent).obj(),
224 old_index,
225 CreateJavaBookmark(node).obj());
226 }
227
228 void BookmarksBridge::BookmarkNodeChanged(BookmarkModel* model,
229 const BookmarkNode* node) {
230 JNIEnv* env = AttachCurrentThread();
231 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
232 if (obj.is_null())
233 return;
234 Java_BookmarksBridge_bookmarkNodeChanged(
235 env,
236 obj.obj(),
237 CreateJavaBookmark(node).obj());
238 }
239
240 void BookmarksBridge::BookmarkNodeChildrenReordered(BookmarkModel* model,
241 const BookmarkNode* node) {
242 JNIEnv* env = AttachCurrentThread();
243 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
244 if (obj.is_null())
245 return;
246 Java_BookmarksBridge_bookmarkNodeChildrenReordered(
247 env,
248 obj.obj(),
249 CreateJavaBookmark(node).obj());
250 }
251
252 void BookmarksBridge::ExtensiveBookmarkChangesBeginning(BookmarkModel* model) {
253 JNIEnv* env = AttachCurrentThread();
254 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
255 if (obj.is_null())
256 return;
257 Java_BookmarksBridge_extensiveBookmarkChangesBeginning(env, obj.obj());
258 }
259
260 void BookmarksBridge::ExtensiveBookmarkChangesEnded(BookmarkModel* model) {
261 JNIEnv* env = AttachCurrentThread();
262 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
263 if (obj.is_null())
264 return;
265 Java_BookmarksBridge_extensiveBookmarkChangesEnded(env, obj.obj());
266 }
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