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

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

Powered by Google App Engine
This is Rietveld 408576698