OLD | NEW |
---|---|
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 Loading... | |
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 |
OLD | NEW |