Chromium Code Reviews| Index: chrome/browser/android/ntp/ntp_snippets_bridge.cc |
| diff --git a/chrome/browser/android/ntp/ntp_snippets_bridge.cc b/chrome/browser/android/ntp/ntp_snippets_bridge.cc |
| index 939435eba8b2a60d840dfae30e1cad96a0af49e6..b61791e57f7eb02b96a957c9d7a0cf4fe251f8fb 100644 |
| --- a/chrome/browser/android/ntp/ntp_snippets_bridge.cc |
| +++ b/chrome/browser/android/ntp/ntp_snippets_bridge.cc |
| @@ -5,6 +5,7 @@ |
| #include "chrome/browser/android/ntp/ntp_snippets_bridge.h" |
| #include <jni.h> |
| +#include <algorithm> |
| #include <utility> |
| #include <vector> |
| @@ -13,6 +14,7 @@ |
| #include "base/android/jni_array.h" |
| #include "base/android/jni_string.h" |
| #include "base/callback.h" |
| +#include "base/stl_util.h" |
| #include "base/time/time.h" |
| #include "chrome/browser/history/history_service_factory.h" |
| #include "chrome/browser/ntp_snippets/content_suggestions_service_factory.h" |
| @@ -107,6 +109,16 @@ ntp_snippets::RemoteSuggestionsScheduler* GetRemoteSuggestionsScheduler() { |
| return content_suggestions_service->remote_suggestions_scheduler(); |
| } |
| +int GetCategoryPosition( |
| + Category category, |
| + const ntp_snippets::ContentSuggestionsService* service) { |
| + std::vector<Category> ordered_categories = service->GetCategories(); |
| + DCHECK(base::ContainsValue(ordered_categories, category)); |
| + auto it = |
| + std::find(ordered_categories.begin(), ordered_categories.end(), category); |
| + return it - ordered_categories.begin(); |
| +} |
|
noyau (Ping after 24h)
2017/01/05 14:38:04
Can this lookup can be done by the metrics code in
vitaliii
2017/01/05 15:16:59
Done.
jkrcal
2017/01/05 15:18:08
I am not sure this is the right way, since metrics
vitaliii
2017/01/05 15:47:37
Acknowledged.
|
| + |
| } // namespace |
| static jlong Init(JNIEnv* env, |
| @@ -264,7 +276,7 @@ void NTPSnippetsBridge::DismissSuggestion( |
| const JavaParamRef<jstring>& jurl, |
| jint global_position, |
| jint j_category_id, |
| - jint category_position, |
| + jint position_in_category, |
| const JavaParamRef<jstring>& id_within_category) { |
| Category category = Category::FromIDValue(j_category_id); |
| @@ -274,14 +286,14 @@ void NTPSnippetsBridge::DismissSuggestion( |
| history_service_->QueryURL( |
| GURL(ConvertJavaStringToUTF8(env, jurl)), /*want_visits=*/false, |
| base::Bind( |
| - [](int global_position, Category category, int category_position, |
| + [](int global_position, Category category, int position_in_category, |
| bool success, const history::URLRow& row, |
| const history::VisitVector& visit_vector) { |
| bool visited = success && row.visit_count() != 0; |
| ntp_snippets::metrics::OnSuggestionDismissed( |
| - global_position, category, category_position, visited); |
| + global_position, category, position_in_category, visited); |
| }, |
| - global_position, category, category_position), |
| + global_position, category, position_in_category), |
| &tracker_); |
| } |
| @@ -327,7 +339,7 @@ void NTPSnippetsBridge::OnSuggestionShown(JNIEnv* env, |
| const JavaParamRef<jobject>& obj, |
| jint global_position, |
| jint j_category_id, |
| - jint category_position, |
| + jint position_in_category, |
| jlong publish_timestamp_ms, |
| jfloat score) { |
| PrefService* pref_service = ProfileManager::GetLastUsedProfile()->GetPrefs(); |
| @@ -336,8 +348,8 @@ void NTPSnippetsBridge::OnSuggestionShown(JNIEnv* env, |
| ntp_snippets::prefs::kLastSuccessfulBackgroundFetchTime)); |
| ntp_snippets::metrics::OnSuggestionShown( |
| - global_position, Category::FromIDValue(j_category_id), category_position, |
| - base::Time::FromJavaTime(publish_timestamp_ms), |
| + global_position, Category::FromIDValue(j_category_id), |
| + position_in_category, base::Time::FromJavaTime(publish_timestamp_ms), |
| last_background_fetch_time, score); |
| if (global_position == 0) { |
| content_suggestions_service_->user_classifier()->OnEvent( |
| @@ -349,19 +361,20 @@ void NTPSnippetsBridge::OnSuggestionOpened(JNIEnv* env, |
| const JavaParamRef<jobject>& obj, |
| jint global_position, |
| jint j_category_id, |
| - jint category_position, |
| + jint position_in_category, |
| jlong publish_timestamp_ms, |
| jfloat score, |
| int windowOpenDisposition) { |
| + const Category category = Category::FromIDValue(j_category_id); |
| ntp_snippets::metrics::OnSuggestionOpened( |
| - global_position, Category::FromIDValue(j_category_id), category_position, |
| - base::Time::FromJavaTime(publish_timestamp_ms), score, |
| - static_cast<WindowOpenDisposition>(windowOpenDisposition)); |
| + global_position, category, |
| + GetCategoryPosition(category, content_suggestions_service_), |
| + position_in_category, base::Time::FromJavaTime(publish_timestamp_ms), |
| + score, static_cast<WindowOpenDisposition>(windowOpenDisposition)); |
| // TODO(vitaliii): Add ContentSuggestionsService::OnSuggestionOpened and |
| // notify the ranker and the classifier there instead. Do not expose both of |
| // them at all. See crbug.com/674080. |
| - content_suggestions_service_->category_ranker()->OnSuggestionOpened( |
| - Category::FromIDValue(j_category_id)); |
| + content_suggestions_service_->category_ranker()->OnSuggestionOpened(category); |
| content_suggestions_service_->user_classifier()->OnEvent( |
| ntp_snippets::UserClassifier::Metric::SUGGESTIONS_USED); |
| } |
| @@ -370,12 +383,13 @@ void NTPSnippetsBridge::OnSuggestionMenuOpened(JNIEnv* env, |
| const JavaParamRef<jobject>& obj, |
| jint global_position, |
| jint j_category_id, |
| - jint category_position, |
| + jint position_in_category, |
| jlong publish_timestamp_ms, |
| jfloat score) { |
| ntp_snippets::metrics::OnSuggestionMenuOpened( |
| - global_position, Category::FromIDValue(j_category_id), category_position, |
| - base::Time::FromJavaTime(publish_timestamp_ms), score); |
| + global_position, Category::FromIDValue(j_category_id), |
| + position_in_category, base::Time::FromJavaTime(publish_timestamp_ms), |
| + score); |
| } |
| void NTPSnippetsBridge::OnMoreButtonShown(JNIEnv* env, |