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

Side by Side Diff: components/translate/core/browser/translate_ui_delegate.cc

Issue 2400503002: [Translate] Integrate TranslateEventProto UMA logging into TranslateManager. (Closed)
Patch Set: review candidate Created 4 years, 2 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/translate/core/browser/translate_ui_delegate.h" 5 #include "components/translate/core/browser/translate_ui_delegate.h"
6 6
7 #include "base/i18n/string_compare.h" 7 #include "base/i18n/string_compare.h"
8 #include "base/metrics/histogram_macros.h" 8 #include "base/metrics/histogram_macros.h"
9 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
10 #include "components/translate/core/browser/language_state.h" 10 #include "components/translate/core/browser/language_state.h"
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 142
143 UMA_HISTOGRAM_BOOLEAN(kModifyOriginalLang, true); 143 UMA_HISTOGRAM_BOOLEAN(kModifyOriginalLang, true);
144 original_language_index_ = language_index; 144 original_language_index_ = language_index;
145 } 145 }
146 146
147 void TranslateUIDelegate::UpdateOriginalLanguage( 147 void TranslateUIDelegate::UpdateOriginalLanguage(
148 const std::string& language_code) { 148 const std::string& language_code) {
149 for (size_t i = 0; i < languages_.size(); ++i) { 149 for (size_t i = 0; i < languages_.size(); ++i) {
150 if (languages_[i].first.compare(language_code) == 0) { 150 if (languages_[i].first.compare(language_code) == 0) {
151 UpdateOriginalLanguageIndex(i); 151 UpdateOriginalLanguageIndex(i);
152 if (translate_manager_) {
153 translate_manager_->mutable_translate_event()
154 ->set_modified_source_language(language_code);
155 }
152 return; 156 return;
153 } 157 }
154 } 158 }
155 } 159 }
156 160
157 size_t TranslateUIDelegate::GetTargetLanguageIndex() const { 161 size_t TranslateUIDelegate::GetTargetLanguageIndex() const {
158 return target_language_index_; 162 return target_language_index_;
159 } 163 }
160 164
161 void TranslateUIDelegate::UpdateTargetLanguageIndex(size_t language_index) { 165 void TranslateUIDelegate::UpdateTargetLanguageIndex(size_t language_index) {
162 if (target_language_index_ == language_index) 166 if (target_language_index_ == language_index)
163 return; 167 return;
164 168
165 DCHECK_LT(language_index, GetNumberOfLanguages()); 169 DCHECK_LT(language_index, GetNumberOfLanguages());
166 UMA_HISTOGRAM_BOOLEAN(kModifyTargetLang, true); 170 UMA_HISTOGRAM_BOOLEAN(kModifyTargetLang, true);
167 target_language_index_ = language_index; 171 target_language_index_ = language_index;
168 } 172 }
169 173
170 void TranslateUIDelegate::UpdateTargetLanguage( 174 void TranslateUIDelegate::UpdateTargetLanguage(
171 const std::string& language_code) { 175 const std::string& language_code) {
172 for (size_t i = 0; i < languages_.size(); ++i) { 176 for (size_t i = 0; i < languages_.size(); ++i) {
173 if (languages_[i].first.compare(language_code) == 0) { 177 if (languages_[i].first.compare(language_code) == 0) {
174 UpdateTargetLanguageIndex(i); 178 UpdateTargetLanguageIndex(i);
179 if (translate_manager_) {
180 translate_manager_->mutable_translate_event()
181 ->set_modified_target_language(language_code);
182 }
175 return; 183 return;
176 } 184 }
177 } 185 }
178 } 186 }
179 187
180 std::string TranslateUIDelegate::GetLanguageCodeAt(size_t index) const { 188 std::string TranslateUIDelegate::GetLanguageCodeAt(size_t index) const {
181 DCHECK_LT(index, GetNumberOfLanguages()); 189 DCHECK_LT(index, GetNumberOfLanguages());
182 return languages_[index].first; 190 return languages_[index].first;
183 } 191 }
184 192
(...skipping 17 matching lines...) Expand all
202 } 210 }
203 211
204 void TranslateUIDelegate::Translate() { 212 void TranslateUIDelegate::Translate() {
205 if (!translate_driver_->IsOffTheRecord()) { 213 if (!translate_driver_->IsOffTheRecord()) {
206 prefs_->ResetTranslationDeniedCount(GetOriginalLanguageCode()); 214 prefs_->ResetTranslationDeniedCount(GetOriginalLanguageCode());
207 prefs_->ResetTranslationIgnoredCount(GetOriginalLanguageCode()); 215 prefs_->ResetTranslationIgnoredCount(GetOriginalLanguageCode());
208 prefs_->IncrementTranslationAcceptedCount(GetOriginalLanguageCode()); 216 prefs_->IncrementTranslationAcceptedCount(GetOriginalLanguageCode());
209 } 217 }
210 218
211 if (translate_manager_) { 219 if (translate_manager_) {
220 translate_manager_->RecordTranslateEvent(
221 metrics::TranslateEventProto::USER_ACCEPT);
212 translate_manager_->TranslatePage(GetOriginalLanguageCode(), 222 translate_manager_->TranslatePage(GetOriginalLanguageCode(),
213 GetTargetLanguageCode(), false); 223 GetTargetLanguageCode(), false);
214 UMA_HISTOGRAM_BOOLEAN(kPerformTranslate, true); 224 UMA_HISTOGRAM_BOOLEAN(kPerformTranslate, true);
215 } 225 }
216 } 226 }
217 227
218 void TranslateUIDelegate::RevertTranslation() { 228 void TranslateUIDelegate::RevertTranslation() {
219 if (translate_manager_) { 229 if (translate_manager_) {
220 translate_manager_->RevertTranslation(); 230 translate_manager_->RevertTranslation();
221 UMA_HISTOGRAM_BOOLEAN(kRevertTranslation, true); 231 UMA_HISTOGRAM_BOOLEAN(kRevertTranslation, true);
(...skipping 10 matching lines...) Expand all
232 } else { 242 } else {
233 prefs_->IncrementTranslationIgnoredCount(language); 243 prefs_->IncrementTranslationIgnoredCount(language);
234 } 244 }
235 } 245 }
236 246
237 // Remember that the user declined the translation so as to prevent showing a 247 // Remember that the user declined the translation so as to prevent showing a
238 // translate UI for that page again. (TranslateManager initiates translations 248 // translate UI for that page again. (TranslateManager initiates translations
239 // when getting a LANGUAGE_DETERMINED from the page, which happens when a load 249 // when getting a LANGUAGE_DETERMINED from the page, which happens when a load
240 // stops. That could happen multiple times, including after the user already 250 // stops. That could happen multiple times, including after the user already
241 // declined the translation.) 251 // declined the translation.)
242 if (explicitly_closed && translate_manager_) { 252 if (translate_manager_) {
243 translate_manager_->GetLanguageState().set_translation_declined(true); 253 translate_manager_->RecordTranslateEvent(
244 UMA_HISTOGRAM_BOOLEAN(kDeclineTranslate, true); 254 explicitly_closed ? metrics::TranslateEventProto::USER_DECLINE
255 : metrics::TranslateEventProto::USER_IGNORE);
256 if (explicitly_closed)
257 translate_manager_->GetLanguageState().set_translation_declined(true);
245 } 258 }
246 259
247 if (!explicitly_closed) { 260 UMA_HISTOGRAM_BOOLEAN(
248 UMA_HISTOGRAM_BOOLEAN(kDeclineTranslateDismissUI, true); 261 (explicitly_closed ? kDeclineTranslate : kDeclineTranslateDismissUI),
249 } 262 true);
250 } 263 }
251 264
252 bool TranslateUIDelegate::IsLanguageBlocked() { 265 bool TranslateUIDelegate::IsLanguageBlocked() {
253 return prefs_->IsBlockedLanguage(GetOriginalLanguageCode()); 266 return prefs_->IsBlockedLanguage(GetOriginalLanguageCode());
254 } 267 }
255 268
256 void TranslateUIDelegate::SetLanguageBlocked(bool value) { 269 void TranslateUIDelegate::SetLanguageBlocked(bool value) {
257 if (value) { 270 if (value) {
258 prefs_->BlockLanguage(GetOriginalLanguageCode()); 271 prefs_->BlockLanguage(GetOriginalLanguageCode());
259 if (translate_manager_) { 272 if (translate_manager_) {
260 translate_manager_->GetLanguageState().SetTranslateEnabled(false); 273 translate_manager_->GetLanguageState().SetTranslateEnabled(false);
274 // Translation has been blocked for this language. Capture that in the
275 // metrics. Note that we don't capture a language being unblocked... which
276 // is not the same as accepting a given translation for this language.
277 translate_manager_->RecordTranslateEvent(
278 metrics::TranslateEventProto::USER_NEVER_TRANSLATE_LANGUAGE);
261 } 279 }
262 } else { 280 } else {
263 prefs_->UnblockLanguage(GetOriginalLanguageCode()); 281 prefs_->UnblockLanguage(GetOriginalLanguageCode());
264 } 282 }
265 283
266 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateLang, value); 284 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateLang, value);
267 } 285 }
268 286
269 bool TranslateUIDelegate::IsSiteBlacklisted() { 287 bool TranslateUIDelegate::IsSiteBlacklisted() {
270 std::string host = GetPageHost(); 288 std::string host = GetPageHost();
271 return !host.empty() && prefs_->IsSiteBlacklisted(host); 289 return !host.empty() && prefs_->IsSiteBlacklisted(host);
272 } 290 }
273 291
274 void TranslateUIDelegate::SetSiteBlacklist(bool value) { 292 void TranslateUIDelegate::SetSiteBlacklist(bool value) {
275 std::string host = GetPageHost(); 293 std::string host = GetPageHost();
276 if (host.empty()) 294 if (host.empty())
277 return; 295 return;
278 296
279 if (value) { 297 if (value) {
280 prefs_->BlacklistSite(host); 298 prefs_->BlacklistSite(host);
281 if (translate_manager_) { 299 if (translate_manager_) {
282 translate_manager_->GetLanguageState().SetTranslateEnabled(false); 300 translate_manager_->GetLanguageState().SetTranslateEnabled(false);
301 // Translation has been blocked for this site. Capture that in the metrics
302 // Note that we don't capture a language being unblocked... which is not
303 // the same as accepting a given translation for this site.
304 translate_manager_->RecordTranslateEvent(
305 metrics::TranslateEventProto::USER_NEVER_TRANSLATE_SITE);
283 } 306 }
284 } else { 307 } else {
285 prefs_->RemoveSiteFromBlacklist(host); 308 prefs_->RemoveSiteFromBlacklist(host);
286 } 309 }
287 310
288 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateSite, value); 311 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateSite, value);
289 } 312 }
290 313
291 bool TranslateUIDelegate::ShouldAlwaysTranslate() { 314 bool TranslateUIDelegate::ShouldAlwaysTranslate() {
292 return prefs_->IsLanguagePairWhitelisted(GetOriginalLanguageCode(), 315 return prefs_->IsLanguagePairWhitelisted(GetOriginalLanguageCode(),
(...skipping 20 matching lines...) Expand all
313 // The only chance the bubble will show up is after the user manually unchecks 336 // The only chance the bubble will show up is after the user manually unchecks
314 // "Always do this?". In that case, since it is after user explictly unchecks, 337 // "Always do this?". In that case, since it is after user explictly unchecks,
315 // we should show as it as unchecked so we only check == N instead of >= N. 338 // we should show as it as unchecked so we only check == N instead of >= N.
316 return prefs_->GetTranslationAcceptedCount(GetOriginalLanguageCode()) == 339 return prefs_->GetTranslationAcceptedCount(GetOriginalLanguageCode()) ==
317 threshold; 340 threshold;
318 } 341 }
319 342
320 void TranslateUIDelegate::SetAlwaysTranslate(bool value) { 343 void TranslateUIDelegate::SetAlwaysTranslate(bool value) {
321 const std::string& original_lang = GetOriginalLanguageCode(); 344 const std::string& original_lang = GetOriginalLanguageCode();
322 const std::string& target_lang = GetTargetLanguageCode(); 345 const std::string& target_lang = GetTargetLanguageCode();
323 if (value) 346 if (value) {
324 prefs_->WhitelistLanguagePair(original_lang, target_lang); 347 prefs_->WhitelistLanguagePair(original_lang, target_lang);
325 else 348 // A default translation mapping has been accepted for this language.
349 // Capture that in the metrics. Note that we don't capture a language being
350 // unmapped... which is not the same as accepting some other translation
351 // for this language.
352 if (translate_manager_) {
353 translate_manager_->RecordTranslateEvent(
354 metrics::TranslateEventProto::USER_ALWAYS_TRANSLATE_LANGUAGE);
355 }
356 } else {
326 prefs_->RemoveLanguagePairFromWhitelist(original_lang, target_lang); 357 prefs_->RemoveLanguagePairFromWhitelist(original_lang, target_lang);
358 }
327 359
328 UMA_HISTOGRAM_BOOLEAN(kAlwaysTranslateLang, value); 360 UMA_HISTOGRAM_BOOLEAN(kAlwaysTranslateLang, value);
329 } 361 }
330 362
331 std::string TranslateUIDelegate::GetPageHost() { 363 std::string TranslateUIDelegate::GetPageHost() {
332 if (!translate_driver_->HasCurrentPage()) 364 if (!translate_driver_->HasCurrentPage())
333 return std::string(); 365 return std::string();
334 return translate_driver_->GetLastCommittedURL().HostNoBrackets(); 366 return translate_driver_->GetLastCommittedURL().HostNoBrackets();
335 } 367 }
336 368
337 } // namespace translate 369 } // namespace translate
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698