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/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: A few nits 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 "chrome/browser/bookmarks/bookmark_model_factory.h" 9 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
10 #include "chrome/browser/enhanced_bookmarks/chrome_bookmark_server_cluster_servi ce.h" 10 #include "chrome/browser/enhanced_bookmarks/chrome_bookmark_server_cluster_servi ce.h"
11 #include "chrome/browser/enhanced_bookmarks/chrome_bookmark_server_cluster_servi ce_factory.h" 11 #include "chrome/browser/enhanced_bookmarks/chrome_bookmark_server_cluster_servi ce_factory.h"
12 #include "chrome/browser/enhanced_bookmarks/enhanced_bookmark_model_factory.h" 12 #include "chrome/browser/enhanced_bookmarks/enhanced_bookmark_model_factory.h"
13 #include "chrome/browser/profiles/profile_android.h" 13 #include "chrome/browser/profiles/profile_android.h"
14 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
15 #include "chrome/browser/signin/signin_manager_factory.h"
14 #include "chrome/common/chrome_version_info.h" 16 #include "chrome/common/chrome_version_info.h"
15 #include "components/bookmarks/browser/bookmark_model.h" 17 #include "components/bookmarks/browser/bookmark_model.h"
16 #include "components/bookmarks/browser/bookmark_utils.h" 18 #include "components/bookmarks/browser/bookmark_utils.h"
17 #include "components/bookmarks/common/android/bookmark_type.h" 19 #include "components/bookmarks/common/android/bookmark_type.h"
18 #include "components/enhanced_bookmarks/enhanced_bookmark_model.h" 20 #include "components/enhanced_bookmarks/enhanced_bookmark_model.h"
21 #include "components/signin/core/browser/signin_manager.h"
19 #include "jni/EnhancedBookmarksBridge_jni.h" 22 #include "jni/EnhancedBookmarksBridge_jni.h"
20 23
21 using base::android::AttachCurrentThread; 24 using base::android::AttachCurrentThread;
22 using bookmarks::BookmarkType; 25 using bookmarks::BookmarkType;
23 26
24 namespace enhanced_bookmarks { 27 namespace enhanced_bookmarks {
25 namespace android { 28 namespace android {
26 29
27 EnhancedBookmarksBridge::EnhancedBookmarksBridge(JNIEnv* env, 30 EnhancedBookmarksBridge::EnhancedBookmarksBridge(JNIEnv* env,
28 jobject obj, 31 jobject obj,
29 Profile* profile) : weak_java_ref_(env, obj) { 32 Profile* profile) : weak_java_ref_(env, obj) {
30 profile_ = profile; 33 profile_ = profile;
31 enhanced_bookmark_model_ = 34 enhanced_bookmark_model_ =
32 EnhancedBookmarkModelFactory::GetForBrowserContext(profile_); 35 EnhancedBookmarkModelFactory::GetForBrowserContext(profile_);
33 enhanced_bookmark_model_->SetVersionSuffix(chrome::VersionInfo().OSType()); 36 enhanced_bookmark_model_->SetVersionSuffix(chrome::VersionInfo().OSType());
34 cluster_service_ = 37 cluster_service_ =
35 ChromeBookmarkServerClusterServiceFactory::GetForBrowserContext(profile_); 38 ChromeBookmarkServerClusterServiceFactory::GetForBrowserContext(profile_);
36 cluster_service_->AddObserver(this); 39 cluster_service_->AddObserver(this);
40 search_service_.reset(new BookmarkServerSearchService(
41 profile_->GetRequestContext(),
42 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_),
43 SigninManagerFactory::GetForProfile(profile_),
44 EnhancedBookmarkModelFactory::GetForBrowserContext(profile_)));
45 search_service_->AddObserver(this);
37 } 46 }
38 47
39 EnhancedBookmarksBridge::~EnhancedBookmarksBridge() { 48 EnhancedBookmarksBridge::~EnhancedBookmarksBridge() {
40 cluster_service_->RemoveObserver(this); 49 cluster_service_->RemoveObserver(this);
50 search_service_->RemoveObserver(this);
41 } 51 }
42 52
43 void EnhancedBookmarksBridge::Destroy(JNIEnv*, jobject) { 53 void EnhancedBookmarksBridge::Destroy(JNIEnv*, jobject) {
44 delete this; 54 delete this;
45 } 55 }
46 56
47 ScopedJavaLocalRef<jstring> EnhancedBookmarksBridge::GetBookmarkDescription( 57 ScopedJavaLocalRef<jstring> EnhancedBookmarksBridge::GetBookmarkDescription(
48 JNIEnv* env, jobject obj, jlong id, jint type) { 58 JNIEnv* env, jobject obj, jlong id, jint type) {
49 DCHECK(enhanced_bookmark_model_->loaded()); 59 DCHECK(enhanced_bookmark_model_->loaded());
50 DCHECK_EQ(BookmarkType::BOOKMARK_TYPE_NORMAL, type); 60 DCHECK_EQ(BookmarkType::BOOKMARK_TYPE_NORMAL, type);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 for (const BookmarkNode* node : bookmarks) { 94 for (const BookmarkNode* node : bookmarks) {
85 Java_EnhancedBookmarksBridge_addToBookmarkIdList( 95 Java_EnhancedBookmarksBridge_addToBookmarkIdList(
86 env, j_result_obj, node->id(), node->type()); 96 env, j_result_obj, node->id(), node->type());
87 } 97 }
88 } 98 }
89 99
90 ScopedJavaLocalRef<jobjectArray> EnhancedBookmarksBridge::GetFilters( 100 ScopedJavaLocalRef<jobjectArray> EnhancedBookmarksBridge::GetFilters(
91 JNIEnv* env, 101 JNIEnv* env,
92 jobject obj) { 102 jobject obj) {
93 DCHECK(enhanced_bookmark_model_->loaded()); 103 DCHECK(enhanced_bookmark_model_->loaded());
94 const std::vector<std::string> filters = 104 const std::vector<std::string> filters = cluster_service_->GetClusters();
95 cluster_service_->GetClusters();
96 return base::android::ToJavaArrayOfStrings(env, filters); 105 return base::android::ToJavaArrayOfStrings(env, filters);
97 } 106 }
98 107
108 void EnhancedBookmarksBridge::SendSearchRequest(JNIEnv* env,
109 jobject obj,
110 jstring j_query) {
111 search_service_->Search(base::android::ConvertJavaStringToUTF8(env, j_query));
112 }
113
114 ScopedJavaLocalRef<jobject> EnhancedBookmarksBridge::GetSearchResults(
115 JNIEnv* env,
116 jobject obj,
117 jstring j_query) {
118 DCHECK(enhanced_bookmark_model_->loaded());
119
120 ScopedJavaLocalRef<jobject> j_list =
121 Java_EnhancedBookmarksBridge_createBookmarkIdList(env);
122 scoped_ptr<std::vector<const BookmarkNode*>> results =
123 search_service_->ResultForQuery(
124 base::android::ConvertJavaStringToUTF8(env, j_query));
125
126 // If result is null, return a null java reference.
127 if (!results.get())
128 return ScopedJavaLocalRef<jobject>();
129
130 for (const BookmarkNode* node : *results) {
131 Java_EnhancedBookmarksBridge_addToBookmarkIdList(env, j_list.obj(),
132 node->id(), node->type());
133 }
134 return j_list;
135 }
136
99 void EnhancedBookmarksBridge::OnChange(BookmarkServerService* service) { 137 void EnhancedBookmarksBridge::OnChange(BookmarkServerService* service) {
100 DCHECK(enhanced_bookmark_model_->loaded()); 138 DCHECK(enhanced_bookmark_model_->loaded());
101 JNIEnv* env = AttachCurrentThread(); 139 JNIEnv* env = AttachCurrentThread();
102 140
103 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); 141 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
104 if (obj.is_null()) 142 if (obj.is_null())
105 return; 143 return;
106 144
107 Java_EnhancedBookmarksBridge_onFiltersChanged(env, obj.obj()); 145 if (service == cluster_service_) {
146 Java_EnhancedBookmarksBridge_onFiltersChanged(env, obj.obj());
147 } else if (service == search_service_.get()){
148 Java_EnhancedBookmarksBridge_onSearchResultReturned(env, obj.obj());
149 }
108 } 150 }
109 151
110 static jlong Init(JNIEnv* env, jobject obj, jobject j_profile) { 152 static jlong Init(JNIEnv* env, jobject obj, jobject j_profile) {
111 return reinterpret_cast<jlong>(new EnhancedBookmarksBridge( 153 return reinterpret_cast<jlong>(new EnhancedBookmarksBridge(
112 env, obj, ProfileAndroid::FromProfileAndroid(j_profile))); 154 env, obj, ProfileAndroid::FromProfileAndroid(j_profile)));
113 } 155 }
114 156
115 bool RegisterEnhancedBookmarksBridge(JNIEnv* env) { 157 bool RegisterEnhancedBookmarksBridge(JNIEnv* env) {
116 return RegisterNativesImpl(env); 158 return RegisterNativesImpl(env);
117 } 159 }
118 160
119 } // namespace android 161 } // namespace android
120 } // namespace enhanced_bookmarks 162 } // namespace enhanced_bookmarks
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698