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/common/chrome_version_info.h" | 14 #include "chrome/common/chrome_version_info.h" |
15 #include "components/bookmarks/browser/bookmark_model.h" | 15 #include "components/bookmarks/browser/bookmark_model.h" |
16 #include "components/bookmarks/browser/bookmark_utils.h" | 16 #include "components/bookmarks/browser/bookmark_utils.h" |
17 #include "components/bookmarks/common/android/bookmark_type.h" | 17 #include "components/bookmarks/common/android/bookmark_type.h" |
18 #include "components/enhanced_bookmarks/enhanced_bookmark_model.h" | 18 #include "components/enhanced_bookmarks/enhanced_bookmark_model.h" |
19 #include "components/enhanced_bookmarks/metadata_accessor.h" | |
20 #include "jni/EnhancedBookmarksBridge_jni.h" | 19 #include "jni/EnhancedBookmarksBridge_jni.h" |
21 | 20 |
22 using base::android::AttachCurrentThread; | 21 using base::android::AttachCurrentThread; |
23 using bookmarks::BookmarkType; | 22 using bookmarks::BookmarkType; |
24 | 23 |
25 namespace enhanced_bookmarks { | 24 namespace enhanced_bookmarks { |
26 namespace android { | 25 namespace android { |
27 | 26 |
28 EnhancedBookmarksBridge::EnhancedBookmarksBridge(JNIEnv* env, | 27 EnhancedBookmarksBridge::EnhancedBookmarksBridge(JNIEnv* env, |
29 jobject obj, | 28 jobject obj, |
30 Profile* profile) : weak_java_ref_(env, obj) { | 29 Profile* profile) : weak_java_ref_(env, obj) { |
31 profile_ = profile; | 30 profile_ = profile; |
32 bookmark_model_ = BookmarkModelFactory::GetForProfile(profile_); | 31 enhanced_bookmark_model_ = |
33 EnhancedBookmarkModelFactory::GetForBrowserContext(profile_)-> | 32 EnhancedBookmarkModelFactory::GetForBrowserContext(profile_); |
34 SetVersionSuffix(chrome::VersionInfo().OSType()); | 33 enhanced_bookmark_model_->SetVersionSuffix(chrome::VersionInfo().OSType()); |
35 cluster_service_ = | 34 cluster_service_ = |
36 ChromeBookmarkServerClusterServiceFactory::GetForBrowserContext(profile_); | 35 ChromeBookmarkServerClusterServiceFactory::GetForBrowserContext(profile_); |
37 cluster_service_->AddObserver(this); | 36 cluster_service_->AddObserver(this); |
38 } | 37 } |
39 | 38 |
40 EnhancedBookmarksBridge::~EnhancedBookmarksBridge() { | 39 EnhancedBookmarksBridge::~EnhancedBookmarksBridge() { |
41 cluster_service_->RemoveObserver(this); | 40 cluster_service_->RemoveObserver(this); |
42 } | 41 } |
43 | 42 |
44 void EnhancedBookmarksBridge::Destroy(JNIEnv*, jobject) { | 43 void EnhancedBookmarksBridge::Destroy(JNIEnv*, jobject) { |
45 delete this; | 44 delete this; |
46 } | 45 } |
47 | 46 |
48 ScopedJavaLocalRef<jstring> EnhancedBookmarksBridge::GetBookmarkDescription( | 47 ScopedJavaLocalRef<jstring> EnhancedBookmarksBridge::GetBookmarkDescription( |
49 JNIEnv* env, jobject obj, jlong id, jint type) { | 48 JNIEnv* env, jobject obj, jlong id, jint type) { |
50 DCHECK(bookmark_model_->loaded()); | 49 DCHECK(enhanced_bookmark_model_->loaded()); |
51 DCHECK_EQ(BookmarkType::BOOKMARK_TYPE_NORMAL, type); | 50 DCHECK_EQ(BookmarkType::BOOKMARK_TYPE_NORMAL, type); |
52 | 51 |
53 const BookmarkNode* node = bookmarks::GetBookmarkNodeByID( | 52 const BookmarkNode* node = bookmarks::GetBookmarkNodeByID( |
54 bookmark_model_, static_cast<int64>(id)); | 53 enhanced_bookmark_model_->bookmark_model(), static_cast<int64>(id)); |
55 | 54 |
56 return node ? | 55 return node ? base::android::ConvertUTF8ToJavaString( |
57 base::android::ConvertUTF8ToJavaString( | 56 env, enhanced_bookmark_model_->GetDescription(node)) |
58 env, enhanced_bookmarks::DescriptionFromBookmark(node)) : | 57 : ScopedJavaLocalRef<jstring>(); |
59 ScopedJavaLocalRef<jstring>(); | |
60 } | 58 } |
61 | 59 |
62 void EnhancedBookmarksBridge::SetBookmarkDescription(JNIEnv* env, | 60 void EnhancedBookmarksBridge::SetBookmarkDescription(JNIEnv* env, |
63 jobject obj, | 61 jobject obj, |
64 jlong id, | 62 jlong id, |
65 jint type, | 63 jint type, |
66 jstring description) { | 64 jstring description) { |
67 DCHECK(bookmark_model_->loaded()); | 65 DCHECK(enhanced_bookmark_model_->loaded()); |
68 DCHECK_EQ(type, BookmarkType::BOOKMARK_TYPE_NORMAL); | 66 DCHECK_EQ(type, BookmarkType::BOOKMARK_TYPE_NORMAL); |
69 | 67 |
70 const BookmarkNode* node = bookmarks::GetBookmarkNodeByID( | 68 const BookmarkNode* node = bookmarks::GetBookmarkNodeByID( |
71 bookmark_model_, static_cast<int64>(id)); | 69 enhanced_bookmark_model_->bookmark_model(), static_cast<int64>(id)); |
72 | 70 |
73 enhanced_bookmarks::SetDescriptionForBookmark( | 71 enhanced_bookmark_model_->SetDescription( |
74 bookmark_model_, node, | 72 node, base::android::ConvertJavaStringToUTF8(env, description)); |
75 base::android::ConvertJavaStringToUTF8(env, description)); | |
76 } | 73 } |
77 | 74 |
78 void EnhancedBookmarksBridge::GetBookmarksForFilter(JNIEnv* env, | 75 void EnhancedBookmarksBridge::GetBookmarksForFilter(JNIEnv* env, |
79 jobject obj, | 76 jobject obj, |
80 jstring j_filter, | 77 jstring j_filter, |
81 jobject j_result_obj) { | 78 jobject j_result_obj) { |
82 DCHECK(bookmark_model_->loaded()); | 79 DCHECK(enhanced_bookmark_model_->loaded()); |
83 const std::string title = | 80 const std::string title = |
84 base::android::ConvertJavaStringToUTF8(env, j_filter); | 81 base::android::ConvertJavaStringToUTF8(env, j_filter); |
85 const std::vector<const BookmarkNode*> bookmarks = | 82 const std::vector<const BookmarkNode*> bookmarks = |
86 cluster_service_->BookmarksForClusterNamed(title); | 83 cluster_service_->BookmarksForClusterNamed(title); |
87 for (const BookmarkNode* node : bookmarks) { | 84 for (const BookmarkNode* node : bookmarks) { |
88 Java_EnhancedBookmarksBridge_addToBookmarkIdList( | 85 Java_EnhancedBookmarksBridge_addToBookmarkIdList( |
89 env, j_result_obj, node->id(), node->type()); | 86 env, j_result_obj, node->id(), node->type()); |
90 } | 87 } |
91 } | 88 } |
92 | 89 |
93 ScopedJavaLocalRef<jobjectArray> EnhancedBookmarksBridge::GetFilters( | 90 ScopedJavaLocalRef<jobjectArray> EnhancedBookmarksBridge::GetFilters( |
94 JNIEnv* env, | 91 JNIEnv* env, |
95 jobject obj) { | 92 jobject obj) { |
96 DCHECK(bookmark_model_->loaded()); | 93 DCHECK(enhanced_bookmark_model_->loaded()); |
97 const std::vector<std::string> filters = | 94 const std::vector<std::string> filters = |
98 cluster_service_->GetClusters(); | 95 cluster_service_->GetClusters(); |
99 return base::android::ToJavaArrayOfStrings(env, filters); | 96 return base::android::ToJavaArrayOfStrings(env, filters); |
100 } | 97 } |
101 | 98 |
102 void EnhancedBookmarksBridge::OnChange(BookmarkServerService* service) { | 99 void EnhancedBookmarksBridge::OnChange(BookmarkServerService* service) { |
103 DCHECK(bookmark_model_->loaded()); | 100 DCHECK(enhanced_bookmark_model_->loaded()); |
104 JNIEnv* env = AttachCurrentThread(); | 101 JNIEnv* env = AttachCurrentThread(); |
105 | 102 |
106 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); | 103 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); |
107 if (obj.is_null()) | 104 if (obj.is_null()) |
108 return; | 105 return; |
109 | 106 |
110 Java_EnhancedBookmarksBridge_onFiltersChanged(env, obj.obj()); | 107 Java_EnhancedBookmarksBridge_onFiltersChanged(env, obj.obj()); |
111 } | 108 } |
112 | 109 |
113 static jlong Init(JNIEnv* env, jobject obj, jobject j_profile) { | 110 static jlong Init(JNIEnv* env, jobject obj, jobject j_profile) { |
114 return reinterpret_cast<jlong>(new EnhancedBookmarksBridge( | 111 return reinterpret_cast<jlong>(new EnhancedBookmarksBridge( |
115 env, obj, ProfileAndroid::FromProfileAndroid(j_profile))); | 112 env, obj, ProfileAndroid::FromProfileAndroid(j_profile))); |
116 } | 113 } |
117 | 114 |
118 bool RegisterEnhancedBookmarksBridge(JNIEnv* env) { | 115 bool RegisterEnhancedBookmarksBridge(JNIEnv* env) { |
119 return RegisterNativesImpl(env); | 116 return RegisterNativesImpl(env); |
120 } | 117 } |
121 | 118 |
122 } // namespace android | 119 } // namespace android |
123 } // namespace enhanced_bookmarks | 120 } // namespace enhanced_bookmarks |
OLD | NEW |