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

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

Issue 2105933002: NTP: Fix metrics recording crash by plumbing the necessary data to Java. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address treib@ comments. Created 4 years, 5 months 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
« no previous file with comments | « chrome/browser/android/ntp/most_visited_sites_bridge.h ('k') | components/ntp_tiles.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 18 matching lines...) Expand all
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
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
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 }
OLDNEW
« no previous file with comments | « chrome/browser/android/ntp/most_visited_sites_bridge.h ('k') | components/ntp_tiles.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698