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

Unified Diff: components/translate/core/browser/translate_ranker_impl.cc

Issue 2697703004: Allow TranslateRanker to override decisions taken by heuristics. (Closed)
Patch Set: Make ShouldSuppressBubbleUI easier to read. Created 3 years, 8 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: components/translate/core/browser/translate_ranker_impl.cc
diff --git a/components/translate/core/browser/translate_ranker_impl.cc b/components/translate/core/browser/translate_ranker_impl.cc
index 7be53a8840ff34babda2bd91dbb3972f198c3878..906c498f964e219b6a57fecbed801ee529d65ae7 100644
--- a/components/translate/core/browser/translate_ranker_impl.cc
+++ b/components/translate/core/browser/translate_ranker_impl.cc
@@ -85,6 +85,9 @@ const base::Feature kTranslateRankerEnforcement{
const base::Feature kTranslateRankerLogging{"TranslateRankerLogging",
base::FEATURE_ENABLED_BY_DEFAULT};
+const base::Feature kTranslateRankerDecisionOverride{
+ "TranslateRankerDecisionOverride", base::FEATURE_DISABLED_BY_DEFAULT};
+
TranslateRankerFeatures::TranslateRankerFeatures() {}
TranslateRankerFeatures::TranslateRankerFeatures(int accepted,
@@ -143,8 +146,11 @@ TranslateRankerImpl::TranslateRankerImpl(const base::FilePath& model_path,
is_query_enabled_(base::FeatureList::IsEnabled(kTranslateRankerQuery)),
is_enforcement_enabled_(
base::FeatureList::IsEnabled(kTranslateRankerEnforcement)),
+ is_decision_override_enabled_(base::FeatureList::IsEnabled(
+ translate::kTranslateRankerDecisionOverride)),
weak_ptr_factory_(this) {
- if (IsQueryEnabled() || IsEnforcementEnabled()) {
+ if (is_query_enabled_ || is_enforcement_enabled_ ||
+ is_decision_override_enabled_) {
model_loader_ = base::MakeUnique<RankerModelLoader>(
base::Bind(&ValidateModel),
base::Bind(&TranslateRankerImpl::OnModelAvailable,
@@ -189,26 +195,15 @@ void TranslateRankerImpl::EnableLogging(bool value) {
is_logging_enabled_ = value;
}
-bool TranslateRankerImpl::IsLoggingEnabled() {
- return is_logging_enabled_;
-}
-
-bool TranslateRankerImpl::IsQueryEnabled() {
- return is_query_enabled_;
-}
-
-bool TranslateRankerImpl::IsEnforcementEnabled() {
- return is_enforcement_enabled_;
-}
-
-int TranslateRankerImpl::GetModelVersion() const {
+uint32_t TranslateRankerImpl::GetModelVersion() const {
return model_ ? model_->proto().translate().version() : 0;
}
bool TranslateRankerImpl::ShouldOfferTranslation(
const TranslatePrefs& translate_prefs,
const std::string& src_lang,
- const std::string& dst_lang) {
+ const std::string& dst_lang,
+ metrics::TranslateEventProto* translate_event) {
DCHECK(sequence_checker_.CalledOnValidSequence());
// The ranker is a gate in the "show a translation prompt" flow. To retain
// the pre-existing functionality, it defaults to returning true in the
@@ -217,11 +212,24 @@ bool TranslateRankerImpl::ShouldOfferTranslation(
// (or become False).
const bool kDefaultResponse = true;
+ translate_event->set_ranker_request_timestamp_sec(
+ (base::TimeTicks::Now() - base::TimeTicks()).InSeconds());
+ translate_event->set_ranker_version(GetModelVersion());
+
+ if (!is_query_enabled_ && !is_enforcement_enabled_ &&
+ !is_decision_override_enabled_) {
+ translate_event->set_ranker_response(
+ metrics::TranslateEventProto::NOT_QUERIED);
+ return kDefaultResponse;
+ }
+
if (model_loader_)
model_loader_->NotifyOfRankerActivity();
// If we don't have a model, request one and return the default.
if (model_ == nullptr) {
+ translate_event->set_ranker_response(
+ metrics::TranslateEventProto::NOT_QUERIED);
return kDefaultResponse;
}
@@ -245,6 +253,14 @@ bool TranslateRankerImpl::ShouldOfferTranslation(
UMA_HISTOGRAM_BOOLEAN("Translate.Ranker.QueryResult", result);
+ translate_event->set_ranker_response(
+ result ? metrics::TranslateEventProto::SHOW
+ : metrics::TranslateEventProto::DONT_SHOW);
+
+ if (!is_enforcement_enabled_ && !is_decision_override_enabled_) {
+ return kDefaultResponse;
+ }
+
return result;
}
@@ -311,7 +327,7 @@ void TranslateRankerImpl::AddTranslateEvent(
const metrics::TranslateEventProto& event,
const GURL& url) {
DCHECK(sequence_checker_.CalledOnValidSequence());
- if (IsLoggingEnabled()) {
+ if (is_logging_enabled_) {
DVLOG(3) << "Adding translate ranker event.";
if (url.is_valid()) {
SendEventToUKM(event, url);
@@ -329,6 +345,34 @@ bool TranslateRankerImpl::CheckModelLoaderForTesting() {
return model_loader_ != nullptr;
}
+void TranslateRankerImpl::RecordTranslateEvent(
+ int event_type,
+ const GURL& url,
+ metrics::TranslateEventProto* translate_event) {
+ DCHECK(metrics::TranslateEventProto::EventType_IsValid(event_type));
+ translate_event->set_event_type(
+ static_cast<metrics::TranslateEventProto::EventType>(event_type));
+ translate_event->set_event_timestamp_sec(
+ (base::TimeTicks::Now() - base::TimeTicks()).InSeconds());
+ AddTranslateEvent(*translate_event, url);
+}
+
+bool TranslateRankerImpl::ShouldOverrideDecision(
+ int event_type,
+ const GURL& url,
+ metrics::TranslateEventProto* translate_event) {
+ DCHECK(metrics::TranslateEventProto::EventType_IsValid(event_type));
+ if (is_decision_override_enabled_) {
+ translate_event->add_decision_overrides(
+ static_cast<metrics::TranslateEventProto::EventType>(event_type));
+ DVLOG(3) << "Overriding decision of type: " << event_type;
+ return true;
+ } else {
+ RecordTranslateEvent(event_type, url, translate_event);
+ return false;
+ }
+}
+
} // namespace translate
std::ostream& operator<<(std::ostream& stream,

Powered by Google App Engine
This is Rietveld 408576698