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