Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(305)

Side by Side Diff: chrome/browser/android/ntp/most_visited_sites_bridge.cc

Issue 2557513007: ntp_tiles::metrics: Add rappor metrics for impression URLs per icon type. (Closed)
Patch Set: Rebased. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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 }
OLDNEW
« no previous file with comments | « chrome/browser/android/ntp/most_visited_sites_bridge.h ('k') | chrome/browser/ui/webui/ntp/ntp_user_data_logger.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698