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

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

Issue 2872083003: Added translation policy API. (Closed)
Patch Set: don't expose index unnecessairly in translate_ui_delegate Created 3 years, 7 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/metrics/proto/translate_event.pb.h" 10 #include "components/metrics/proto/translate_event.pb.h"
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 return; 182 return;
183 } 183 }
184 } 184 }
185 } 185 }
186 186
187 std::string TranslateUIDelegate::GetLanguageCodeAt(size_t index) const { 187 std::string TranslateUIDelegate::GetLanguageCodeAt(size_t index) const {
188 DCHECK_LT(index, GetNumberOfLanguages()); 188 DCHECK_LT(index, GetNumberOfLanguages());
189 return languages_[index].first; 189 return languages_[index].first;
190 } 190 }
191 191
192 base::string16 TranslateUIDelegate::GetLanguageNameForLanguageCode(
193 const std::string& language_code) {
194 auto it = std::find_if(languages_.begin(), languages_.end(),
195 [&language_code](const LanguageNamePair& x) {
196 return x.first == language_code;
197 });
198 size_t index = it != languages_.end() ? it - languages_.begin() : kNoIndex;
199 return GetLanguageNameAt(index);
200 }
201
192 base::string16 TranslateUIDelegate::GetLanguageNameAt(size_t index) const { 202 base::string16 TranslateUIDelegate::GetLanguageNameAt(size_t index) const {
193 if (index == kNoIndex) 203 if (index == kNoIndex)
194 return base::string16(); 204 return base::string16();
195 DCHECK_LT(index, GetNumberOfLanguages()); 205 DCHECK_LT(index, GetNumberOfLanguages());
196 return languages_[index].second; 206 return languages_[index].second;
197 } 207 }
198 208
199 std::string TranslateUIDelegate::GetOriginalLanguageCode() const { 209 std::string TranslateUIDelegate::GetOriginalLanguageCode() const {
200 return (GetOriginalLanguageIndex() == kNoIndex) 210 return (GetOriginalLanguageIndex() == kNoIndex)
201 ? translate::kUnknownLanguageCode 211 ? translate::kUnknownLanguageCode
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 } 267 }
258 268
259 if (explicitly_closed) { 269 if (explicitly_closed) {
260 UMA_HISTOGRAM_BOOLEAN(kDeclineTranslate, true); 270 UMA_HISTOGRAM_BOOLEAN(kDeclineTranslate, true);
261 } else { 271 } else {
262 UMA_HISTOGRAM_BOOLEAN(kDeclineTranslateDismissUI, true); 272 UMA_HISTOGRAM_BOOLEAN(kDeclineTranslateDismissUI, true);
263 } 273 }
264 } 274 }
265 275
266 bool TranslateUIDelegate::IsLanguageBlocked() { 276 bool TranslateUIDelegate::IsLanguageBlocked() {
267 return prefs_->IsBlockedLanguage(GetOriginalLanguageCode()); 277 return IsLanguageBlocked(GetOriginalLanguageCode());
278 }
279
280 bool TranslateUIDelegate::IsLanguageBlocked(const std::string& language_code) {
281 return prefs_->IsBlockedLanguage(language_code);
268 } 282 }
269 283
270 void TranslateUIDelegate::SetLanguageBlocked(bool value) { 284 void TranslateUIDelegate::SetLanguageBlocked(bool value) {
285 SetLanguageBlocked(value, GetOriginalLanguageCode());
286 }
287
288 void TranslateUIDelegate::SetLanguageBlocked(bool value,
289 const std::string& language_code) {
271 if (value) { 290 if (value) {
272 prefs_->BlockLanguage(GetOriginalLanguageCode()); 291 prefs_->BlockLanguage(language_code);
273 if (translate_manager_) { 292 if (translate_manager_) {
274 translate_manager_->GetLanguageState().SetTranslateEnabled(false); 293 translate_manager_->GetLanguageState().SetTranslateEnabled(false);
275 // Translation has been blocked for this language. Capture that in the 294 // Translation has been blocked for this language. Capture that in the
276 // metrics. Note that we don't capture a language being unblocked... which 295 // metrics. Note that we don't capture a language being unblocked... which
277 // is not the same as accepting a given translation for this language. 296 // is not the same as accepting a given translation for this language.
278 translate_manager_->RecordTranslateEvent( 297 translate_manager_->RecordTranslateEvent(
279 metrics::TranslateEventProto::USER_NEVER_TRANSLATE_LANGUAGE); 298 metrics::TranslateEventProto::USER_NEVER_TRANSLATE_LANGUAGE);
280 } 299 }
281 } else { 300 } else {
282 prefs_->UnblockLanguage(GetOriginalLanguageCode()); 301 prefs_->UnblockLanguage(language_code);
283 } 302 }
284 303
285 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateLang, value); 304 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateLang, value);
286 } 305 }
287 306
288 bool TranslateUIDelegate::IsSiteBlacklisted() { 307 bool TranslateUIDelegate::IsSiteBlacklisted() {
289 std::string host = GetPageHost(); 308 return IsSiteBlacklisted(GetPageHost());
290 return !host.empty() && prefs_->IsSiteBlacklisted(host); 309 }
310
311 bool TranslateUIDelegate::IsSiteBlacklisted(const std::string& page_host) {
312 return !page_host.empty() && prefs_->IsSiteBlacklisted(page_host);
291 } 313 }
292 314
293 void TranslateUIDelegate::SetSiteBlacklist(bool value) { 315 void TranslateUIDelegate::SetSiteBlacklist(bool value) {
294 std::string host = GetPageHost(); 316 SetSiteBlacklist(value, GetPageHost());
michaeldo 2017/05/15 17:09:30 Since this is an existing method, you should leave
Eugene But (OOO till 7-30) 2017/05/15 17:22:41 Early return would be against Chromium Style Guide
jzw1 2017/05/16 03:42:12 I'm going to just keep the early returns to keep t
295 if (host.empty()) 317 }
296 return; 318
319 void TranslateUIDelegate::SetSiteBlacklist(bool value,
320 const std::string& page_host) {
321 DCHECK(!page_host.empty());
297 322
298 if (value) { 323 if (value) {
299 prefs_->BlacklistSite(host); 324 prefs_->BlacklistSite(page_host);
300 if (translate_manager_) { 325 if (translate_manager_) {
301 translate_manager_->GetLanguageState().SetTranslateEnabled(false); 326 translate_manager_->GetLanguageState().SetTranslateEnabled(false);
302 // Translation has been blocked for this site. Capture that in the metrics 327 // Translation has been blocked for this site. Capture that in the metrics
303 // Note that we don't capture a language being unblocked... which is not 328 // Note that we don't capture a language being unblocked... which is not
304 // the same as accepting a given translation for this site. 329 // the same as accepting a given translation for this site.
305 translate_manager_->RecordTranslateEvent( 330 translate_manager_->RecordTranslateEvent(
306 metrics::TranslateEventProto::USER_NEVER_TRANSLATE_SITE); 331 metrics::TranslateEventProto::USER_NEVER_TRANSLATE_SITE);
307 } 332 }
308 } else { 333 } else {
309 prefs_->RemoveSiteFromBlacklist(host); 334 prefs_->RemoveSiteFromBlacklist(page_host);
310 } 335 }
311 336
312 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateSite, value); 337 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateSite, value);
313 } 338 }
314 339
315 bool TranslateUIDelegate::ShouldAlwaysTranslate() { 340 bool TranslateUIDelegate::ShouldAlwaysTranslate() {
316 return prefs_->IsLanguagePairWhitelisted(GetOriginalLanguageCode(), 341 return prefs_->IsLanguagePairWhitelisted(GetOriginalLanguageCode(),
317 GetTargetLanguageCode()); 342 GetTargetLanguageCode());
318 } 343 }
319 344
345 std::string TranslateUIDelegate::GetAlwaysTranslateToLanguage(
346 const std::string& from_language) {
347 std::string auto_target_lang;
348 if (prefs_->ShouldAutoTranslate(from_language, &auto_target_lang)) {
349 return auto_target_lang;
350 }
351 return std::string();
352 }
353
320 bool TranslateUIDelegate::ShouldAlwaysTranslateBeCheckedByDefault() { 354 bool TranslateUIDelegate::ShouldAlwaysTranslateBeCheckedByDefault() {
321 if (ShouldAlwaysTranslate()) 355 if (ShouldAlwaysTranslate())
322 return true; 356 return true;
323 357
324 std::map<std::string, std::string> params; 358 std::map<std::string, std::string> params;
325 if (!variations::GetVariationParams(translate::kTranslateUI2016Q2TrialName, 359 if (!variations::GetVariationParams(translate::kTranslateUI2016Q2TrialName,
326 &params)) 360 &params))
327 return false; 361 return false;
328 int threshold = 0; 362 int threshold = 0;
329 base::StringToInt(params[translate::kAlwaysTranslateOfferThreshold], 363 base::StringToInt(params[translate::kAlwaysTranslateOfferThreshold],
330 &threshold); 364 &threshold);
331 if (threshold <= 0) 365 if (threshold <= 0)
332 return false; 366 return false;
333 367
334 // After N clicks on Translate for the same language. 368 // After N clicks on Translate for the same language.
335 // We check for == N instead of >= N because if the user translates with the 369 // We check for == N instead of >= N because if the user translates with the
336 // "Always do this?" on, then the next time the bubble won't show up. 370 // "Always do this?" on, then the next time the bubble won't show up.
337 // The only chance the bubble will show up is after the user manually unchecks 371 // The only chance the bubble will show up is after the user manually unchecks
338 // "Always do this?". In that case, since it is after user explictly unchecks, 372 // "Always do this?". In that case, since it is after user explictly unchecks,
339 // we should show as it as unchecked so we only check == N instead of >= N. 373 // we should show as it as unchecked so we only check == N instead of >= N.
340 return prefs_->GetTranslationAcceptedCount(GetOriginalLanguageCode()) == 374 return prefs_->GetTranslationAcceptedCount(GetOriginalLanguageCode()) ==
341 threshold; 375 threshold;
342 } 376 }
343 377
344 void TranslateUIDelegate::SetAlwaysTranslate(bool value) { 378 void TranslateUIDelegate::SetAlwaysTranslate(bool value) {
345 const std::string& original_lang = GetOriginalLanguageCode(); 379 const std::string& original_lang = GetOriginalLanguageCode();
346 const std::string& target_lang = GetTargetLanguageCode(); 380 const std::string& target_lang = GetTargetLanguageCode();
381 SetAlwaysTranslate(value, original_lang, target_lang);
382 }
383
384 void TranslateUIDelegate::SetAlwaysTranslate(bool value,
385 const std::string& from_language,
386 const std::string& to_language) {
347 if (value) { 387 if (value) {
348 prefs_->WhitelistLanguagePair(original_lang, target_lang); 388 prefs_->WhitelistLanguagePair(from_language, to_language);
349 // A default translation mapping has been accepted for this language. 389 // A default translation mapping has been accepted for this language.
350 // Capture that in the metrics. Note that we don't capture a language being 390 // Capture that in the metrics. Note that we don't capture a language being
351 // unmapped... which is not the same as accepting some other translation 391 // unmapped... which is not the same as accepting some other translation
352 // for this language. 392 // for this language.
353 if (translate_manager_) { 393 if (translate_manager_) {
354 translate_manager_->RecordTranslateEvent( 394 translate_manager_->RecordTranslateEvent(
355 metrics::TranslateEventProto::USER_ALWAYS_TRANSLATE_LANGUAGE); 395 metrics::TranslateEventProto::USER_ALWAYS_TRANSLATE_LANGUAGE);
356 } 396 }
357 } else { 397 } else {
358 prefs_->RemoveLanguagePairFromWhitelist(original_lang, target_lang); 398 prefs_->RemoveLanguagePairFromWhitelist(from_language, to_language);
359 } 399 }
360 400
361 UMA_HISTOGRAM_BOOLEAN(kAlwaysTranslateLang, value); 401 UMA_HISTOGRAM_BOOLEAN(kAlwaysTranslateLang, value);
362 } 402 }
363 403
364 std::string TranslateUIDelegate::GetPageHost() { 404 std::string TranslateUIDelegate::GetPageHost() {
365 if (!translate_driver_->HasCurrentPage()) 405 if (!translate_driver_->HasCurrentPage())
366 return std::string(); 406 return std::string();
367 return translate_driver_->GetLastCommittedURL().HostNoBrackets(); 407 return translate_driver_->GetLastCommittedURL().HostNoBrackets();
368 } 408 }
369 409
370 } // namespace translate 410 } // namespace translate
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698