OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/ntp/most_visited_sites_bridge.h" | 5 #include "chrome/browser/android/ntp/most_visited_sites_bridge.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/android/jni_android.h" | 9 #include "base/android/jni_android.h" |
10 #include "base/android/jni_array.h" | 10 #include "base/android/jni_array.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 #include "content/public/browser/url_data_source.h" | 29 #include "content/public/browser/url_data_source.h" |
30 #include "jni/MostVisitedSites_jni.h" | 30 #include "jni/MostVisitedSites_jni.h" |
31 #include "ui/gfx/android/java_bitmap.h" | 31 #include "ui/gfx/android/java_bitmap.h" |
32 #include "url/gurl.h" | 32 #include "url/gurl.h" |
33 | 33 |
34 using base::android::AttachCurrentThread; | 34 using base::android::AttachCurrentThread; |
35 using base::android::ConvertJavaStringToUTF8; | 35 using base::android::ConvertJavaStringToUTF8; |
36 using base::android::ScopedJavaGlobalRef; | 36 using base::android::ScopedJavaGlobalRef; |
37 using base::android::ScopedJavaLocalRef; | 37 using base::android::ScopedJavaLocalRef; |
38 using base::android::ToJavaArrayOfStrings; | 38 using base::android::ToJavaArrayOfStrings; |
| 39 using base::android::ToJavaIntArray; |
39 using content::BrowserThread; | 40 using content::BrowserThread; |
40 using ntp_tiles::MostVisitedSites; | 41 using ntp_tiles::MostVisitedSites; |
41 using ntp_tiles::MostVisitedSitesSupervisor; | 42 using ntp_tiles::MostVisitedSitesSupervisor; |
42 using suggestions::SuggestionsServiceFactory; | 43 using suggestions::SuggestionsServiceFactory; |
43 | 44 |
44 MostVisitedSitesBridge::SupervisorBridge::SupervisorBridge(Profile* profile) | 45 MostVisitedSitesBridge::SupervisorBridge::SupervisorBridge(Profile* profile) |
45 : profile_(profile), | 46 : profile_(profile), |
46 supervisor_observer_(nullptr), | 47 supervisor_observer_(nullptr), |
47 register_observer_(this) { | 48 register_observer_(this) { |
48 register_observer_.Add(SupervisedUserServiceFactory::GetForProfile(profile_)); | 49 register_observer_.Add(SupervisedUserServiceFactory::GetForProfile(profile_)); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 JNIEnv* env, | 112 JNIEnv* env, |
112 const JavaParamRef<jobject>& obj) | 113 const JavaParamRef<jobject>& obj) |
113 : observer_(env, obj) {} | 114 : observer_(env, obj) {} |
114 | 115 |
115 void MostVisitedSitesBridge::JavaObserver::OnMostVisitedURLsAvailable( | 116 void MostVisitedSitesBridge::JavaObserver::OnMostVisitedURLsAvailable( |
116 const MostVisitedSites::SuggestionsVector& suggestions) { | 117 const MostVisitedSites::SuggestionsVector& suggestions) { |
117 JNIEnv* env = AttachCurrentThread(); | 118 JNIEnv* env = AttachCurrentThread(); |
118 std::vector<base::string16> titles; | 119 std::vector<base::string16> titles; |
119 std::vector<std::string> urls; | 120 std::vector<std::string> urls; |
120 std::vector<std::string> whitelist_icon_paths; | 121 std::vector<std::string> whitelist_icon_paths; |
| 122 std::vector<int> sources; |
| 123 std::vector<int> provider_indexes; |
| 124 |
121 titles.reserve(suggestions.size()); | 125 titles.reserve(suggestions.size()); |
122 urls.reserve(suggestions.size()); | 126 urls.reserve(suggestions.size()); |
123 whitelist_icon_paths.reserve(suggestions.size()); | 127 whitelist_icon_paths.reserve(suggestions.size()); |
| 128 sources.reserve(suggestions.size()); |
| 129 provider_indexes.reserve(suggestions.size()); |
124 for (const auto& suggestion : suggestions) { | 130 for (const auto& suggestion : suggestions) { |
125 titles.emplace_back(suggestion.title); | 131 titles.emplace_back(suggestion.title); |
126 urls.emplace_back(suggestion.url.spec()); | 132 urls.emplace_back(suggestion.url.spec()); |
127 whitelist_icon_paths.emplace_back(suggestion.whitelist_icon_path.value()); | 133 whitelist_icon_paths.emplace_back(suggestion.whitelist_icon_path.value()); |
| 134 sources.emplace_back(suggestion.source); |
| 135 provider_indexes.emplace_back(suggestion.provider_index); |
128 } | 136 } |
129 Java_MostVisitedURLsObserver_onMostVisitedURLsAvailable( | 137 Java_MostVisitedURLsObserver_onMostVisitedURLsAvailable( |
130 env, observer_.obj(), ToJavaArrayOfStrings(env, titles).obj(), | 138 env, observer_.obj(), ToJavaArrayOfStrings(env, titles).obj(), |
131 ToJavaArrayOfStrings(env, urls).obj(), | 139 ToJavaArrayOfStrings(env, urls).obj(), |
132 ToJavaArrayOfStrings(env, whitelist_icon_paths).obj()); | 140 ToJavaArrayOfStrings(env, whitelist_icon_paths).obj(), |
| 141 ToJavaIntArray(env, sources).obj(), |
| 142 ToJavaIntArray(env, provider_indexes).obj()); |
133 } | 143 } |
134 | 144 |
135 void MostVisitedSitesBridge::JavaObserver::OnPopularURLsAvailable( | 145 void MostVisitedSitesBridge::JavaObserver::OnPopularURLsAvailable( |
136 const MostVisitedSites::PopularSitesVector& sites) { | 146 const MostVisitedSites::PopularSitesVector& sites) { |
137 JNIEnv* env = AttachCurrentThread(); | 147 JNIEnv* env = AttachCurrentThread(); |
138 std::vector<std::string> urls; | 148 std::vector<std::string> urls; |
139 std::vector<std::string> favicon_urls; | 149 std::vector<std::string> favicon_urls; |
140 std::vector<std::string> large_icon_urls; | 150 std::vector<std::string> large_icon_urls; |
141 for (const auto& site : sites) { | 151 for (const auto& site : sites) { |
142 urls.emplace_back(site.url.spec()); | 152 urls.emplace_back(site.url.spec()); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 const JavaParamRef<jobject>& obj, | 196 const JavaParamRef<jobject>& obj, |
187 const JavaParamRef<jstring>& j_url, | 197 const JavaParamRef<jstring>& j_url, |
188 jboolean add_url) { | 198 jboolean add_url) { |
189 GURL url(ConvertJavaStringToUTF8(env, j_url)); | 199 GURL url(ConvertJavaStringToUTF8(env, j_url)); |
190 most_visited_.AddOrRemoveBlacklistedUrl(url, add_url); | 200 most_visited_.AddOrRemoveBlacklistedUrl(url, add_url); |
191 } | 201 } |
192 | 202 |
193 void MostVisitedSitesBridge::RecordTileTypeMetrics( | 203 void MostVisitedSitesBridge::RecordTileTypeMetrics( |
194 JNIEnv* env, | 204 JNIEnv* env, |
195 const JavaParamRef<jobject>& obj, | 205 const JavaParamRef<jobject>& obj, |
196 const JavaParamRef<jintArray>& jtile_types) { | 206 const JavaParamRef<jintArray>& jtile_types, |
| 207 const JavaParamRef<jintArray>& jsources, |
| 208 const JavaParamRef<jintArray>& jprovider_indices) { |
197 std::vector<int> tile_types; | 209 std::vector<int> tile_types; |
| 210 std::vector<int> sources; |
| 211 std::vector<int> provider_indices; |
| 212 |
198 base::android::JavaIntArrayToIntVector(env, jtile_types, &tile_types); | 213 base::android::JavaIntArrayToIntVector(env, jtile_types, &tile_types); |
199 most_visited_.RecordTileTypeMetrics(tile_types); | 214 base::android::JavaIntArrayToIntVector(env, jsources, &sources); |
| 215 base::android::JavaIntArrayToIntVector(env, jprovider_indices, |
| 216 &provider_indices); |
| 217 |
| 218 most_visited_.RecordTileTypeMetrics(tile_types, sources, provider_indices); |
200 } | 219 } |
201 | 220 |
202 void MostVisitedSitesBridge::RecordOpenedMostVisitedItem( | 221 void MostVisitedSitesBridge::RecordOpenedMostVisitedItem( |
203 JNIEnv* env, | 222 JNIEnv* env, |
204 const JavaParamRef<jobject>& obj, | 223 const JavaParamRef<jobject>& obj, |
205 jint index, | 224 jint index, |
206 jint tile_type) { | 225 jint tile_type) { |
207 most_visited_.RecordOpenedMostVisitedItem(index, tile_type); | 226 most_visited_.RecordOpenedMostVisitedItem(index, tile_type); |
208 } | 227 } |
209 | 228 |
210 // static | 229 // static |
211 bool MostVisitedSitesBridge::Register(JNIEnv* env) { | 230 bool MostVisitedSitesBridge::Register(JNIEnv* env) { |
212 return RegisterNativesImpl(env); | 231 return RegisterNativesImpl(env); |
213 } | 232 } |
214 | 233 |
215 static jlong Init(JNIEnv* env, | 234 static jlong Init(JNIEnv* env, |
216 const JavaParamRef<jobject>& obj, | 235 const JavaParamRef<jobject>& obj, |
217 const JavaParamRef<jobject>& jprofile) { | 236 const JavaParamRef<jobject>& jprofile) { |
218 MostVisitedSitesBridge* most_visited_sites = | 237 MostVisitedSitesBridge* most_visited_sites = |
219 new MostVisitedSitesBridge( | 238 new MostVisitedSitesBridge( |
220 ProfileAndroid::FromProfileAndroid(jprofile)); | 239 ProfileAndroid::FromProfileAndroid(jprofile)); |
221 return reinterpret_cast<intptr_t>(most_visited_sites); | 240 return reinterpret_cast<intptr_t>(most_visited_sites); |
222 } | 241 } |
OLD | NEW |