Chromium Code Reviews| 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 655b785c71554c8d466ed5e5a0ff2b93cc14faa5..3d406cbbae01bc0b1826d48e074621d3e93be20a 100644 |
| --- a/chrome/browser/android/enhanced_bookmarks/enhanced_bookmarks_bridge.cc |
| +++ b/chrome/browser/android/enhanced_bookmarks/enhanced_bookmarks_bridge.cc |
| @@ -11,12 +11,15 @@ |
| #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 "components/bookmarks/browser/bookmark_model.h" |
| #include "components/bookmarks/browser/bookmark_utils.h" |
| #include "components/bookmarks/common/android/bookmark_type.h" |
| #include "components/enhanced_bookmarks/enhanced_bookmark_model.h" |
| #include "components/enhanced_bookmarks/metadata_accessor.h" |
| +#include "components/signin/core/browser/signin_manager.h" |
| #include "jni/EnhancedBookmarksBridge_jni.h" |
| using base::android::AttachCurrentThread; |
| @@ -35,10 +38,18 @@ EnhancedBookmarksBridge::EnhancedBookmarksBridge(JNIEnv* env, |
| cluster_service_ = |
| ChromeBookmarkServerClusterServiceFactory::GetForBrowserContext(profile_); |
| cluster_service_->AddObserver(this); |
| + search_service_ = 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); |
| + delete search_service_; |
|
noyau (Ping after 24h)
2014/10/29 12:49:48
There should be no delete in Chrome code, please u
Ian Wen
2014/10/29 21:54:36
Done.
|
| } |
| void EnhancedBookmarksBridge::Destroy(JNIEnv*, jobject) { |
| @@ -94,11 +105,16 @@ ScopedJavaLocalRef<jobjectArray> EnhancedBookmarksBridge::GetFilters( |
| JNIEnv* env, |
| jobject obj) { |
| DCHECK(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); |
| } |
| +void EnhancedBookmarksBridge::SendSearchRequest(JNIEnv* env, |
| + jobject obj, |
| + jstring j_query) { |
| + search_service_->Search(base::android::ConvertJavaStringToUTF8(env, j_query)); |
| +} |
| + |
| void EnhancedBookmarksBridge::OnChange(BookmarkServerService* service) { |
| DCHECK(bookmark_model_->loaded()); |
| JNIEnv* env = AttachCurrentThread(); |
| @@ -107,7 +123,23 @@ 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_){ |
| + ScopedJavaLocalRef<jobject> j_list = |
| + Java_EnhancedBookmarksBridge_createBookmarkIdList(env); |
| + std::vector<const BookmarkNode*> results = |
| + search_service_->ResultForQuery(); |
| + for (const BookmarkNode* node : results) { |
| + Java_EnhancedBookmarksBridge_addToBookmarkIdList( |
| + env, j_list.obj(), node->id(), node->type()); |
| + } |
| + Java_EnhancedBookmarksBridge_onSearchResultReturned( |
| + env, obj.obj(), |
| + base::android::ConvertUTF8ToJavaString( |
| + env, search_service_->GetCurrentQuery()).Release(), |
| + j_list.Release()); |
| + } |
| } |
| static jlong Init(JNIEnv* env, jobject obj, jobject j_profile) { |