Index: chrome/browser/android/enhanced_bookmarks/enhanced_bookmarks_bridge.cc |
diff --git a/chrome/browser/android/enhanced_bookmarks/enhanced_bookmarks_bridge.cc b/chrome/browser/android/enhanced_bookmarks/enhanced_bookmarks_bridge.cc |
index 3f803e3b7a3aa93ac37302e11b8bdc5eadcc11d6..ed4016aa764a1910a4c61f4883f1da126a30c0bb 100644 |
--- a/chrome/browser/android/enhanced_bookmarks/enhanced_bookmarks_bridge.cc |
+++ b/chrome/browser/android/enhanced_bookmarks/enhanced_bookmarks_bridge.cc |
@@ -12,6 +12,8 @@ |
#include "chrome/browser/enhanced_bookmarks/chrome_bookmark_server_cluster_service_factory.h" |
#include "chrome/browser/enhanced_bookmarks/enhanced_bookmark_model_factory.h" |
#include "chrome/browser/profiles/profile_android.h" |
+#include "chrome/browser/signin/profile_oauth2_token_service_factory.h" |
+#include "chrome/browser/signin/signin_manager_factory.h" |
#include "chrome/common/chrome_version_info.h" |
#include "chrome/common/pref_names.h" |
#include "components/bookmarks/browser/bookmark_model.h" |
@@ -19,6 +21,7 @@ |
#include "components/bookmarks/common/android/bookmark_id.h" |
#include "components/bookmarks/common/android/bookmark_type.h" |
#include "components/enhanced_bookmarks/enhanced_bookmark_model.h" |
+#include "components/signin/core/browser/signin_manager.h" |
#include "content/public/browser/browser_thread.h" |
#include "jni/EnhancedBookmarksBridge_jni.h" |
@@ -42,10 +45,17 @@ EnhancedBookmarksBridge::EnhancedBookmarksBridge(JNIEnv* env, |
cluster_service_ = |
ChromeBookmarkServerClusterServiceFactory::GetForBrowserContext(profile_); |
cluster_service_->AddObserver(this); |
+ search_service_.reset(new BookmarkServerSearchService( |
+ profile_->GetRequestContext(), |
+ ProfileOAuth2TokenServiceFactory::GetForProfile(profile_), |
+ SigninManagerFactory::GetForProfile(profile_), |
+ EnhancedBookmarkModelFactory::GetForBrowserContext(profile_))); |
+ search_service_->AddObserver(this); |
} |
EnhancedBookmarksBridge::~EnhancedBookmarksBridge() { |
cluster_service_->RemoveObserver(this); |
+ search_service_->RemoveObserver(this); |
} |
void EnhancedBookmarksBridge::Destroy(JNIEnv*, jobject) { |
@@ -99,8 +109,7 @@ ScopedJavaLocalRef<jobjectArray> EnhancedBookmarksBridge::GetFilters( |
JNIEnv* env, |
jobject obj) { |
DCHECK(enhanced_bookmark_model_->loaded()); |
- const std::vector<std::string> filters = |
- cluster_service_->GetClusters(); |
+ const std::vector<std::string> filters = cluster_service_->GetClusters(); |
return base::android::ToJavaArrayOfStrings(env, filters); |
} |
@@ -176,6 +185,35 @@ ScopedJavaLocalRef<jobject> EnhancedBookmarksBridge::AddBookmark( |
return new_java_obj; |
} |
+void EnhancedBookmarksBridge::SendSearchRequest(JNIEnv* env, |
+ jobject obj, |
+ jstring j_query) { |
+ search_service_->Search(base::android::ConvertJavaStringToUTF8(env, j_query)); |
+} |
+ |
+ScopedJavaLocalRef<jobject> EnhancedBookmarksBridge::GetSearchResults( |
+ JNIEnv* env, |
+ jobject obj, |
+ jstring j_query) { |
+ DCHECK(enhanced_bookmark_model_->loaded()); |
+ |
+ ScopedJavaLocalRef<jobject> j_list = |
+ Java_EnhancedBookmarksBridge_createBookmarkIdList(env); |
+ scoped_ptr<std::vector<const BookmarkNode*>> results = |
+ search_service_->ResultForQuery( |
+ base::android::ConvertJavaStringToUTF8(env, j_query)); |
+ |
+ // If result is null, return a null java reference. |
+ if (!results.get()) |
+ return ScopedJavaLocalRef<jobject>(); |
+ |
+ for (const BookmarkNode* node : *results) { |
+ Java_EnhancedBookmarksBridge_addToBookmarkIdList(env, j_list.obj(), |
+ node->id(), node->type()); |
+ } |
+ return j_list; |
+} |
+ |
void EnhancedBookmarksBridge::OnChange(BookmarkServerService* service) { |
DCHECK(enhanced_bookmark_model_->loaded()); |
JNIEnv* env = AttachCurrentThread(); |
@@ -184,7 +222,11 @@ void EnhancedBookmarksBridge::OnChange(BookmarkServerService* service) { |
if (obj.is_null()) |
return; |
- Java_EnhancedBookmarksBridge_onFiltersChanged(env, obj.obj()); |
+ if (service == cluster_service_) { |
+ Java_EnhancedBookmarksBridge_onFiltersChanged(env, obj.obj()); |
+ } else if (service == search_service_.get()){ |
+ Java_EnhancedBookmarksBridge_onSearchResultReturned(env, obj.obj()); |
+ } |
} |
bool EnhancedBookmarksBridge::IsEditable(const BookmarkNode* node) const { |