| 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 13 matching lines...) Expand all Loading... |
| 24 #include "chrome/browser/search_engines/template_url_service_factory.h" | 24 #include "chrome/browser/search_engines/template_url_service_factory.h" |
| 25 #include "chrome/browser/supervised_user/supervised_user_service.h" | 25 #include "chrome/browser/supervised_user/supervised_user_service.h" |
| 26 #include "chrome/browser/supervised_user/supervised_user_service_factory.h" | 26 #include "chrome/browser/supervised_user/supervised_user_service_factory.h" |
| 27 #include "chrome/browser/supervised_user/supervised_user_url_filter.h" | 27 #include "chrome/browser/supervised_user/supervised_user_url_filter.h" |
| 28 #include "chrome/browser/thumbnails/thumbnail_list_source.h" | 28 #include "chrome/browser/thumbnails/thumbnail_list_source.h" |
| 29 #include "components/history/core/browser/top_sites.h" | 29 #include "components/history/core/browser/top_sites.h" |
| 30 #include "components/image_fetcher/image_fetcher_impl.h" | 30 #include "components/image_fetcher/image_fetcher_impl.h" |
| 31 #include "components/ntp_tiles/icon_cacher.h" | 31 #include "components/ntp_tiles/icon_cacher.h" |
| 32 #include "components/ntp_tiles/metrics.h" | 32 #include "components/ntp_tiles/metrics.h" |
| 33 #include "components/ntp_tiles/popular_sites.h" | 33 #include "components/ntp_tiles/popular_sites.h" |
| 34 #include "components/rappor/rappor_service_impl.h" |
| 34 #include "components/safe_json/safe_json_parser.h" | 35 #include "components/safe_json/safe_json_parser.h" |
| 35 #include "content/public/browser/browser_thread.h" | 36 #include "content/public/browser/browser_thread.h" |
| 36 #include "content/public/browser/url_data_source.h" | 37 #include "content/public/browser/url_data_source.h" |
| 37 #include "jni/MostVisitedSites_jni.h" | 38 #include "jni/MostVisitedSites_jni.h" |
| 38 #include "ui/gfx/android/java_bitmap.h" | 39 #include "ui/gfx/android/java_bitmap.h" |
| 39 #include "url/gurl.h" | 40 #include "url/gurl.h" |
| 40 | 41 |
| 41 using base::android::AttachCurrentThread; | 42 using base::android::AttachCurrentThread; |
| 42 using base::android::ConvertJavaStringToUTF8; | 43 using base::android::ConvertJavaStringToUTF8; |
| 43 using base::android::ConvertUTF8ToJavaString; | 44 using base::android::ConvertUTF8ToJavaString; |
| 44 using base::android::JavaParamRef; | 45 using base::android::JavaParamRef; |
| 45 using base::android::ScopedJavaGlobalRef; | 46 using base::android::ScopedJavaGlobalRef; |
| 46 using base::android::ScopedJavaLocalRef; | 47 using base::android::ScopedJavaLocalRef; |
| 47 using base::android::ToJavaArrayOfStrings; | 48 using base::android::ToJavaArrayOfStrings; |
| 48 using base::android::ToJavaIntArray; | 49 using base::android::ToJavaIntArray; |
| 49 using content::BrowserThread; | 50 using content::BrowserThread; |
| 50 using ntp_tiles::metrics::MostVisitedTileType; | 51 using ntp_tiles::metrics::MostVisitedTileType; |
| 52 using ntp_tiles::metrics::TileImpression; |
| 51 using ntp_tiles::MostVisitedSites; | 53 using ntp_tiles::MostVisitedSites; |
| 52 using ntp_tiles::MostVisitedSitesSupervisor; | 54 using ntp_tiles::MostVisitedSitesSupervisor; |
| 53 using ntp_tiles::NTPTileSource; | 55 using ntp_tiles::NTPTileSource; |
| 54 using suggestions::SuggestionsServiceFactory; | 56 using suggestions::SuggestionsServiceFactory; |
| 55 | 57 |
| 56 MostVisitedSitesBridge::SupervisorBridge::SupervisorBridge(Profile* profile) | 58 MostVisitedSitesBridge::SupervisorBridge::SupervisorBridge(Profile* profile) |
| 57 : profile_(profile), | 59 : profile_(profile), |
| 58 supervisor_observer_(nullptr), | 60 supervisor_observer_(nullptr), |
| 59 register_observer_(this) { | 61 register_observer_(this) { |
| 60 register_observer_.Add(SupervisedUserServiceFactory::GetForProfile(profile_)); | 62 register_observer_.Add(SupervisedUserServiceFactory::GetForProfile(profile_)); |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 196 const JavaParamRef<jstring>& j_url, | 198 const JavaParamRef<jstring>& j_url, |
| 197 jboolean add_url) { | 199 jboolean add_url) { |
| 198 GURL url(ConvertJavaStringToUTF8(env, j_url)); | 200 GURL url(ConvertJavaStringToUTF8(env, j_url)); |
| 199 most_visited_.AddOrRemoveBlacklistedUrl(url, add_url); | 201 most_visited_.AddOrRemoveBlacklistedUrl(url, add_url); |
| 200 } | 202 } |
| 201 | 203 |
| 202 void MostVisitedSitesBridge::RecordPageImpression( | 204 void MostVisitedSitesBridge::RecordPageImpression( |
| 203 JNIEnv* env, | 205 JNIEnv* env, |
| 204 const JavaParamRef<jobject>& obj, | 206 const JavaParamRef<jobject>& obj, |
| 205 const JavaParamRef<jintArray>& jtile_types, | 207 const JavaParamRef<jintArray>& jtile_types, |
| 206 const JavaParamRef<jintArray>& jsources) { | 208 const JavaParamRef<jintArray>& jsources, |
| 209 const JavaParamRef<jobjectArray>& jtile_urls) { |
| 207 std::vector<int> int_sources; | 210 std::vector<int> int_sources; |
| 208 base::android::JavaIntArrayToIntVector(env, jsources, &int_sources); | 211 base::android::JavaIntArrayToIntVector(env, jsources, &int_sources); |
| 209 std::vector<int> int_tile_types; | 212 std::vector<int> int_tile_types; |
| 210 base::android::JavaIntArrayToIntVector(env, jtile_types, &int_tile_types); | 213 base::android::JavaIntArrayToIntVector(env, jtile_types, &int_tile_types); |
| 214 std::vector<std::string> string_tile_urls; |
| 215 base::android::AppendJavaStringArrayToStringVector(env, jtile_urls, |
| 216 &string_tile_urls); |
| 211 | 217 |
| 212 DCHECK_EQ(int_sources.size(), int_tile_types.size()); | 218 DCHECK_EQ(int_sources.size(), int_tile_types.size()); |
| 219 DCHECK_EQ(int_sources.size(), string_tile_urls.size()); |
| 213 | 220 |
| 214 std::vector<std::pair<NTPTileSource, MostVisitedTileType>> tiles; | 221 std::vector<TileImpression> tiles; |
| 215 for (size_t i = 0; i < int_sources.size(); i++) { | 222 for (size_t i = 0; i < int_sources.size(); i++) { |
| 216 NTPTileSource source = static_cast<NTPTileSource>(int_sources[i]); | 223 NTPTileSource source = static_cast<NTPTileSource>(int_sources[i]); |
| 217 MostVisitedTileType tile_type = | 224 MostVisitedTileType tile_type = |
| 218 static_cast<MostVisitedTileType>(int_tile_types[i]); | 225 static_cast<MostVisitedTileType>(int_tile_types[i]); |
| 219 tiles.emplace_back(source, tile_type); | 226 |
| 227 tiles.emplace_back(source, tile_type, GURL(string_tile_urls[i])); |
| 220 } | 228 } |
| 221 ntp_tiles::metrics::RecordPageImpression(tiles); | 229 ntp_tiles::metrics::RecordPageImpression(tiles, |
| 230 g_browser_process->rappor_service()); |
| 222 } | 231 } |
| 223 | 232 |
| 224 void MostVisitedSitesBridge::RecordOpenedMostVisitedItem( | 233 void MostVisitedSitesBridge::RecordOpenedMostVisitedItem( |
| 225 JNIEnv* env, | 234 JNIEnv* env, |
| 226 const JavaParamRef<jobject>& obj, | 235 const JavaParamRef<jobject>& obj, |
| 227 jint index, | 236 jint index, |
| 228 jint tile_type, | 237 jint tile_type, |
| 229 jint source) { | 238 jint source) { |
| 230 ntp_tiles::metrics::RecordTileClick( | 239 ntp_tiles::metrics::RecordTileClick( |
| 231 index, static_cast<NTPTileSource>(source), | 240 index, static_cast<NTPTileSource>(source), |
| 232 static_cast<MostVisitedTileType>(tile_type)); | 241 static_cast<MostVisitedTileType>(tile_type)); |
| 233 } | 242 } |
| 234 | 243 |
| 235 // static | 244 // static |
| 236 bool MostVisitedSitesBridge::Register(JNIEnv* env) { | 245 bool MostVisitedSitesBridge::Register(JNIEnv* env) { |
| 237 return RegisterNativesImpl(env); | 246 return RegisterNativesImpl(env); |
| 238 } | 247 } |
| 239 | 248 |
| 240 static jlong Init(JNIEnv* env, | 249 static jlong Init(JNIEnv* env, |
| 241 const JavaParamRef<jobject>& obj, | 250 const JavaParamRef<jobject>& obj, |
| 242 const JavaParamRef<jobject>& jprofile) { | 251 const JavaParamRef<jobject>& jprofile) { |
| 243 MostVisitedSitesBridge* most_visited_sites = | 252 MostVisitedSitesBridge* most_visited_sites = |
| 244 new MostVisitedSitesBridge( | 253 new MostVisitedSitesBridge( |
| 245 ProfileAndroid::FromProfileAndroid(jprofile)); | 254 ProfileAndroid::FromProfileAndroid(jprofile)); |
| 246 return reinterpret_cast<intptr_t>(most_visited_sites); | 255 return reinterpret_cast<intptr_t>(most_visited_sites); |
| 247 } | 256 } |
| OLD | NEW |