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

Unified Diff: chrome/browser/android/ntp/ntp_snippets_bridge.cc

Issue 2609413005: [NTP::SectionOrder] Add category position metric for opened suggestions. (Closed)
Patch Set: Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
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,
« no previous file with comments | « chrome/browser/android/ntp/ntp_snippets_bridge.h ('k') | components/ntp_snippets/content_suggestions_metrics.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698