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

Side by Side Diff: chrome/browser/android/enhanced_bookmarks/enhanced_bookmarks_bridge.cc

Issue 637323005: Add Search Service in Enhanced Bookmark Bridge (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 years, 1 month 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/enhanced_bookmarks/enhanced_bookmarks_bridge.h" 5 #include "chrome/browser/android/enhanced_bookmarks/enhanced_bookmarks_bridge.h"
6 6
7 #include "base/android/jni_array.h" 7 #include "base/android/jni_array.h"
8 #include "base/android/jni_string.h" 8 #include "base/android/jni_string.h"
9 #include "base/prefs/pref_service.h" 9 #include "base/prefs/pref_service.h"
10 #include "chrome/browser/bookmarks/bookmark_model_factory.h" 10 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
11 #include "chrome/browser/enhanced_bookmarks/chrome_bookmark_server_cluster_servi ce.h" 11 #include "chrome/browser/enhanced_bookmarks/chrome_bookmark_server_cluster_servi ce.h"
12 #include "chrome/browser/enhanced_bookmarks/chrome_bookmark_server_cluster_servi ce_factory.h" 12 #include "chrome/browser/enhanced_bookmarks/chrome_bookmark_server_cluster_servi ce_factory.h"
13 #include "chrome/browser/enhanced_bookmarks/enhanced_bookmark_model_factory.h" 13 #include "chrome/browser/enhanced_bookmarks/enhanced_bookmark_model_factory.h"
14 #include "chrome/browser/profiles/profile_android.h" 14 #include "chrome/browser/profiles/profile_android.h"
15 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
16 #include "chrome/browser/signin/signin_manager_factory.h"
15 #include "chrome/common/chrome_version_info.h" 17 #include "chrome/common/chrome_version_info.h"
16 #include "chrome/common/pref_names.h" 18 #include "chrome/common/pref_names.h"
17 #include "components/bookmarks/browser/bookmark_model.h" 19 #include "components/bookmarks/browser/bookmark_model.h"
18 #include "components/bookmarks/browser/bookmark_utils.h" 20 #include "components/bookmarks/browser/bookmark_utils.h"
19 #include "components/bookmarks/common/android/bookmark_id.h" 21 #include "components/bookmarks/common/android/bookmark_id.h"
20 #include "components/bookmarks/common/android/bookmark_type.h" 22 #include "components/bookmarks/common/android/bookmark_type.h"
21 #include "components/enhanced_bookmarks/enhanced_bookmark_model.h" 23 #include "components/enhanced_bookmarks/enhanced_bookmark_model.h"
24 #include "components/signin/core/browser/signin_manager.h"
22 #include "content/public/browser/browser_thread.h" 25 #include "content/public/browser/browser_thread.h"
23 #include "jni/EnhancedBookmarksBridge_jni.h" 26 #include "jni/EnhancedBookmarksBridge_jni.h"
24 27
25 using base::android::AttachCurrentThread; 28 using base::android::AttachCurrentThread;
26 using bookmarks::android::JavaBookmarkIdCreateBookmarkId; 29 using bookmarks::android::JavaBookmarkIdCreateBookmarkId;
27 using bookmarks::android::JavaBookmarkIdGetId; 30 using bookmarks::android::JavaBookmarkIdGetId;
28 using bookmarks::android::JavaBookmarkIdGetType; 31 using bookmarks::android::JavaBookmarkIdGetType;
29 using bookmarks::BookmarkType; 32 using bookmarks::BookmarkType;
30 using content::BrowserThread; 33 using content::BrowserThread;
31 34
32 namespace enhanced_bookmarks { 35 namespace enhanced_bookmarks {
33 namespace android { 36 namespace android {
34 37
35 EnhancedBookmarksBridge::EnhancedBookmarksBridge(JNIEnv* env, 38 EnhancedBookmarksBridge::EnhancedBookmarksBridge(JNIEnv* env,
36 jobject obj, 39 jobject obj,
37 Profile* profile) : weak_java_ref_(env, obj) { 40 Profile* profile) : weak_java_ref_(env, obj) {
38 profile_ = profile; 41 profile_ = profile;
39 enhanced_bookmark_model_ = 42 enhanced_bookmark_model_ =
40 EnhancedBookmarkModelFactory::GetForBrowserContext(profile_); 43 EnhancedBookmarkModelFactory::GetForBrowserContext(profile_);
41 enhanced_bookmark_model_->SetVersionSuffix(chrome::VersionInfo().OSType()); 44 enhanced_bookmark_model_->SetVersionSuffix(chrome::VersionInfo().OSType());
42 cluster_service_ = 45 cluster_service_ =
43 ChromeBookmarkServerClusterServiceFactory::GetForBrowserContext(profile_); 46 ChromeBookmarkServerClusterServiceFactory::GetForBrowserContext(profile_);
44 cluster_service_->AddObserver(this); 47 cluster_service_->AddObserver(this);
48 search_service_.reset(new BookmarkServerSearchService(
49 profile_->GetRequestContext(),
50 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_),
51 SigninManagerFactory::GetForProfile(profile_),
52 EnhancedBookmarkModelFactory::GetForBrowserContext(profile_)));
53 search_service_->AddObserver(this);
45 } 54 }
46 55
47 EnhancedBookmarksBridge::~EnhancedBookmarksBridge() { 56 EnhancedBookmarksBridge::~EnhancedBookmarksBridge() {
48 cluster_service_->RemoveObserver(this); 57 cluster_service_->RemoveObserver(this);
58 search_service_->RemoveObserver(this);
49 } 59 }
50 60
51 void EnhancedBookmarksBridge::Destroy(JNIEnv*, jobject) { 61 void EnhancedBookmarksBridge::Destroy(JNIEnv*, jobject) {
52 delete this; 62 delete this;
53 } 63 }
54 64
55 ScopedJavaLocalRef<jstring> EnhancedBookmarksBridge::GetBookmarkDescription( 65 ScopedJavaLocalRef<jstring> EnhancedBookmarksBridge::GetBookmarkDescription(
56 JNIEnv* env, jobject obj, jlong id, jint type) { 66 JNIEnv* env, jobject obj, jlong id, jint type) {
57 DCHECK(enhanced_bookmark_model_->loaded()); 67 DCHECK(enhanced_bookmark_model_->loaded());
58 DCHECK_EQ(BookmarkType::BOOKMARK_TYPE_NORMAL, type); 68 DCHECK_EQ(BookmarkType::BOOKMARK_TYPE_NORMAL, type);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 for (const BookmarkNode* node : bookmarks) { 102 for (const BookmarkNode* node : bookmarks) {
93 Java_EnhancedBookmarksBridge_addToBookmarkIdList( 103 Java_EnhancedBookmarksBridge_addToBookmarkIdList(
94 env, j_result_obj, node->id(), node->type()); 104 env, j_result_obj, node->id(), node->type());
95 } 105 }
96 } 106 }
97 107
98 ScopedJavaLocalRef<jobjectArray> EnhancedBookmarksBridge::GetFilters( 108 ScopedJavaLocalRef<jobjectArray> EnhancedBookmarksBridge::GetFilters(
99 JNIEnv* env, 109 JNIEnv* env,
100 jobject obj) { 110 jobject obj) {
101 DCHECK(enhanced_bookmark_model_->loaded()); 111 DCHECK(enhanced_bookmark_model_->loaded());
102 const std::vector<std::string> filters = 112 const std::vector<std::string> filters = cluster_service_->GetClusters();
103 cluster_service_->GetClusters();
104 return base::android::ToJavaArrayOfStrings(env, filters); 113 return base::android::ToJavaArrayOfStrings(env, filters);
105 } 114 }
106 115
107 ScopedJavaLocalRef<jobject> EnhancedBookmarksBridge::AddFolder(JNIEnv* env, 116 ScopedJavaLocalRef<jobject> EnhancedBookmarksBridge::AddFolder(JNIEnv* env,
108 jobject obj, 117 jobject obj,
109 jobject j_parent_id_obj, 118 jobject j_parent_id_obj,
110 jint index, 119 jint index,
111 jstring j_title) { 120 jstring j_title) {
112 DCHECK(enhanced_bookmark_model_->loaded()); 121 DCHECK(enhanced_bookmark_model_->loaded());
113 long bookmark_id = JavaBookmarkIdGetId(env, j_parent_id_obj); 122 long bookmark_id = JavaBookmarkIdGetId(env, j_parent_id_obj);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 base::Time::Now()); 178 base::Time::Now());
170 if (!new_node) { 179 if (!new_node) {
171 NOTREACHED(); 180 NOTREACHED();
172 return ScopedJavaLocalRef<jobject>(); 181 return ScopedJavaLocalRef<jobject>();
173 } 182 }
174 ScopedJavaLocalRef<jobject> new_java_obj = 183 ScopedJavaLocalRef<jobject> new_java_obj =
175 JavaBookmarkIdCreateBookmarkId(env, new_node->id(), new_node->type()); 184 JavaBookmarkIdCreateBookmarkId(env, new_node->id(), new_node->type());
176 return new_java_obj; 185 return new_java_obj;
177 } 186 }
178 187
188 void EnhancedBookmarksBridge::SendSearchRequest(JNIEnv* env,
189 jobject obj,
190 jstring j_query) {
191 search_service_->Search(base::android::ConvertJavaStringToUTF8(env, j_query));
192 }
193
194 ScopedJavaLocalRef<jobject> EnhancedBookmarksBridge::GetSearchResults(
195 JNIEnv* env,
196 jobject obj,
197 jstring j_query) {
198 DCHECK(enhanced_bookmark_model_->loaded());
199
200 ScopedJavaLocalRef<jobject> j_list =
201 Java_EnhancedBookmarksBridge_createBookmarkIdList(env);
202 scoped_ptr<std::vector<const BookmarkNode*>> results =
203 search_service_->ResultForQuery(
204 base::android::ConvertJavaStringToUTF8(env, j_query));
205
206 // If result is null, return a null java reference.
207 if (!results.get())
208 return ScopedJavaLocalRef<jobject>();
209
210 for (const BookmarkNode* node : *results) {
211 Java_EnhancedBookmarksBridge_addToBookmarkIdList(env, j_list.obj(),
212 node->id(), node->type());
213 }
214 return j_list;
215 }
216
179 void EnhancedBookmarksBridge::OnChange(BookmarkServerService* service) { 217 void EnhancedBookmarksBridge::OnChange(BookmarkServerService* service) {
180 DCHECK(enhanced_bookmark_model_->loaded()); 218 DCHECK(enhanced_bookmark_model_->loaded());
181 JNIEnv* env = AttachCurrentThread(); 219 JNIEnv* env = AttachCurrentThread();
182 220
183 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); 221 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
184 if (obj.is_null()) 222 if (obj.is_null())
185 return; 223 return;
186 224
187 Java_EnhancedBookmarksBridge_onFiltersChanged(env, obj.obj()); 225 if (service == cluster_service_) {
226 Java_EnhancedBookmarksBridge_onFiltersChanged(env, obj.obj());
227 } else if (service == search_service_.get()){
228 Java_EnhancedBookmarksBridge_onSearchResultReturned(env, obj.obj());
229 }
188 } 230 }
189 231
190 bool EnhancedBookmarksBridge::IsEditable(const BookmarkNode* node) const { 232 bool EnhancedBookmarksBridge::IsEditable(const BookmarkNode* node) const {
191 if (!node || (node->type() != BookmarkNode::FOLDER && 233 if (!node || (node->type() != BookmarkNode::FOLDER &&
192 node->type() != BookmarkNode::URL)) { 234 node->type() != BookmarkNode::URL)) {
193 return false; 235 return false;
194 } 236 }
195 return profile_->GetPrefs()->GetBoolean( 237 return profile_->GetPrefs()->GetBoolean(
196 bookmarks::prefs::kEditBookmarksEnabled); 238 bookmarks::prefs::kEditBookmarksEnabled);
197 } 239 }
198 240
199 static jlong Init(JNIEnv* env, jobject obj, jobject j_profile) { 241 static jlong Init(JNIEnv* env, jobject obj, jobject j_profile) {
200 return reinterpret_cast<jlong>(new EnhancedBookmarksBridge( 242 return reinterpret_cast<jlong>(new EnhancedBookmarksBridge(
201 env, obj, ProfileAndroid::FromProfileAndroid(j_profile))); 243 env, obj, ProfileAndroid::FromProfileAndroid(j_profile)));
202 } 244 }
203 245
204 bool RegisterEnhancedBookmarksBridge(JNIEnv* env) { 246 bool RegisterEnhancedBookmarksBridge(JNIEnv* env) {
205 return RegisterNativesImpl(env); 247 return RegisterNativesImpl(env);
206 } 248 }
207 249
208 } // namespace android 250 } // namespace android
209 } // namespace enhanced_bookmarks 251 } // namespace enhanced_bookmarks
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698