| 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 |