Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "components/translate/core/browser/language_state.h" | 9 #include "components/translate/core/browser/language_state.h" |
| 10 #include "components/translate/core/browser/translate_client.h" | 10 #include "components/translate/core/browser/translate_client.h" |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 198 | 198 |
| 199 std::string TranslateUIDelegate::GetTargetLanguageCode() const { | 199 std::string TranslateUIDelegate::GetTargetLanguageCode() const { |
| 200 return (GetTargetLanguageIndex() == kNoIndex) | 200 return (GetTargetLanguageIndex() == kNoIndex) |
| 201 ? translate::kUnknownLanguageCode | 201 ? translate::kUnknownLanguageCode |
| 202 : GetLanguageCodeAt(GetTargetLanguageIndex()); | 202 : GetLanguageCodeAt(GetTargetLanguageIndex()); |
| 203 } | 203 } |
| 204 | 204 |
| 205 void TranslateUIDelegate::Translate() { | 205 void TranslateUIDelegate::Translate() { |
| 206 if (!translate_driver_->IsOffTheRecord()) { | 206 if (!translate_driver_->IsOffTheRecord()) { |
| 207 prefs_->ResetTranslationDeniedCount(GetOriginalLanguageCode()); | 207 prefs_->ResetTranslationDeniedCount(GetOriginalLanguageCode()); |
| 208 prefs_->ResetTranslationIgnoredCount(GetOriginalLanguageCode()); | |
| 208 prefs_->IncrementTranslationAcceptedCount(GetOriginalLanguageCode()); | 209 prefs_->IncrementTranslationAcceptedCount(GetOriginalLanguageCode()); |
| 209 } | 210 } |
| 210 | 211 |
| 211 if (translate_manager_) { | 212 if (translate_manager_) { |
| 212 translate_manager_->TranslatePage( | 213 translate_manager_->TranslatePage( |
| 213 GetOriginalLanguageCode(), GetTargetLanguageCode(), false); | 214 GetOriginalLanguageCode(), GetTargetLanguageCode(), false); |
| 214 UMA_HISTOGRAM_BOOLEAN(kPerformTranslate, true); | 215 UMA_HISTOGRAM_BOOLEAN(kPerformTranslate, true); |
| 215 } | 216 } |
| 216 } | 217 } |
| 217 | 218 |
| 218 void TranslateUIDelegate::RevertTranslation() { | 219 void TranslateUIDelegate::RevertTranslation() { |
| 219 if (translate_manager_) { | 220 if (translate_manager_) { |
| 220 translate_manager_->RevertTranslation(); | 221 translate_manager_->RevertTranslation(); |
| 221 UMA_HISTOGRAM_BOOLEAN(kRevertTranslation, true); | 222 UMA_HISTOGRAM_BOOLEAN(kRevertTranslation, true); |
| 222 } | 223 } |
| 223 } | 224 } |
| 224 | 225 |
| 225 void TranslateUIDelegate::TranslationDeclined(bool explicitly_closed) { | 226 void TranslateUIDelegate::TranslationDeclined(bool explicitly_closed) { |
| 226 if (explicitly_closed && !translate_driver_->IsOffTheRecord()) { | 227 if (!translate_driver_->IsOffTheRecord()) { |
| 227 const std::string& language = GetOriginalLanguageCode(); | 228 const std::string& language = GetOriginalLanguageCode(); |
| 228 prefs_->ResetTranslationAcceptedCount(language); | 229 if (explicitly_closed) { |
| 229 prefs_->IncrementTranslationDeniedCount(language); | 230 prefs_->ResetTranslationAcceptedCount(language); |
| 230 prefs_->UpdateLastDeniedTime(language); | 231 prefs_->IncrementTranslationDeniedCount(language); |
| 232 prefs_->UpdateLastDeniedTime(language); | |
| 233 } else { | |
| 234 prefs_->IncrementTranslationIgnoredCount(language); | |
| 235 } | |
| 231 } | 236 } |
| 232 | 237 |
| 233 // Remember that the user declined the translation so as to prevent showing a | 238 // Remember that the user declined the translation so as to prevent showing a |
| 234 // translate UI for that page again. (TranslateManager initiates translations | 239 // translate UI for that page again. (TranslateManager initiates translations |
| 235 // when getting a LANGUAGE_DETERMINED from the page, which happens when a load | 240 // when getting a LANGUAGE_DETERMINED from the page, which happens when a load |
| 236 // stops. That could happen multiple times, including after the user already | 241 // stops. That could happen multiple times, including after the user already |
| 237 // declined the translation.) | 242 // declined the translation.) |
| 238 if (explicitly_closed && translate_manager_) { | 243 if (explicitly_closed && translate_manager_) { |
| 239 translate_manager_->GetLanguageState().set_translation_declined(true); | 244 translate_manager_->GetLanguageState().set_translation_declined(true); |
| 240 UMA_HISTOGRAM_BOOLEAN(kDeclineTranslate, true); | 245 UMA_HISTOGRAM_BOOLEAN(kDeclineTranslate, true); |
| 241 } | 246 } |
| 242 | 247 |
| 243 if (!explicitly_closed) { | 248 if (!explicitly_closed) { |
| 244 UMA_HISTOGRAM_BOOLEAN(kDeclineTranslateDismissUI, true); | 249 UMA_HISTOGRAM_BOOLEAN(kDeclineTranslateDismissUI, true); |
| 245 } | 250 } |
| 246 } | 251 } |
| 247 | 252 |
| 248 bool TranslateUIDelegate::IsLanguageBlocked() { | 253 bool TranslateUIDelegate::IsLanguageBlocked() { |
| 249 return prefs_->IsBlockedLanguage(GetOriginalLanguageCode()); | 254 return prefs_->IsBlockedLanguage(GetOriginalLanguageCode()); |
| 250 } | 255 } |
| 251 | 256 |
| 252 void TranslateUIDelegate::SetLanguageBlocked(bool value) { | 257 void TranslateUIDelegate::SetLanguageBlocked(bool value) { |
| 253 if (value) { | 258 if (value) { |
| 254 prefs_->BlockLanguage(GetOriginalLanguageCode()); | 259 prefs_->BlockLanguage(GetOriginalLanguageCode()); |
| 255 if (translate_manager_) { | 260 if (!base::FeatureList::IsEnabled(kTranslateUI2016Q2)) { |
|
msw
2016/04/29 20:00:03
nit: combine nested if with &&
ftang
2016/04/29 22:37:03
Done.
| |
| 256 translate_manager_->GetLanguageState().SetTranslateEnabled(false); | 261 if (translate_manager_) { |
| 262 translate_manager_->GetLanguageState().SetTranslateEnabled(false); | |
| 263 } | |
| 257 } | 264 } |
| 258 } else { | 265 } else { |
| 259 prefs_->UnblockLanguage(GetOriginalLanguageCode()); | 266 prefs_->UnblockLanguage(GetOriginalLanguageCode()); |
| 260 } | 267 } |
| 261 | 268 |
| 262 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateLang, true); | 269 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateLang, true); |
| 263 } | 270 } |
| 264 | 271 |
| 265 bool TranslateUIDelegate::IsSiteBlacklisted() { | 272 bool TranslateUIDelegate::IsSiteBlacklisted() { |
| 266 std::string host = GetPageHost(); | 273 std::string host = GetPageHost(); |
| 267 return !host.empty() && prefs_->IsSiteBlacklisted(host); | 274 return !host.empty() && prefs_->IsSiteBlacklisted(host); |
| 268 } | 275 } |
| 269 | 276 |
| 270 void TranslateUIDelegate::SetSiteBlacklist(bool value) { | 277 void TranslateUIDelegate::SetSiteBlacklist(bool value) { |
| 271 std::string host = GetPageHost(); | 278 std::string host = GetPageHost(); |
| 272 if (host.empty()) | 279 if (host.empty()) |
| 273 return; | 280 return; |
| 274 | 281 |
| 275 if (value) { | 282 if (value) { |
| 276 prefs_->BlacklistSite(host); | 283 prefs_->BlacklistSite(host); |
| 277 if (translate_manager_) { | 284 if (!base::FeatureList::IsEnabled(kTranslateUI2016Q2)) { |
|
msw
2016/04/29 20:00:03
nit: combine nested if with &&
ftang
2016/04/29 22:37:03
Done.
| |
| 278 translate_manager_->GetLanguageState().SetTranslateEnabled(false); | 285 if (translate_manager_) { |
| 286 translate_manager_->GetLanguageState().SetTranslateEnabled(false); | |
| 287 } | |
| 279 } | 288 } |
| 280 } else { | 289 } else { |
| 281 prefs_->RemoveSiteFromBlacklist(host); | 290 prefs_->RemoveSiteFromBlacklist(host); |
| 282 } | 291 } |
| 283 | 292 |
| 284 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateSite, true); | 293 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateSite, true); |
| 285 } | 294 } |
| 286 | 295 |
| 287 bool TranslateUIDelegate::ShouldAlwaysTranslate() { | 296 bool TranslateUIDelegate::ShouldAlwaysTranslate() { |
| 288 return prefs_->IsLanguagePairWhitelisted(GetOriginalLanguageCode(), | 297 return prefs_->IsLanguagePairWhitelisted(GetOriginalLanguageCode(), |
| 289 GetTargetLanguageCode()); | 298 GetTargetLanguageCode()); |
| 290 } | 299 } |
| 291 | 300 |
| 301 bool TranslateUIDelegate::ShowAlwaysTranslateChecked() { | |
| 302 return ShouldAlwaysTranslate() || | |
| 303 // After 2 clicks on Translate for the same language. | |
|
msw
2016/04/29 20:00:03
Why does this comment reference 2, but the check i
ftang
2016/04/29 22:37:03
Done.
| |
| 304 // it is == 2 not >2 because if the user translate with always on | |
|
msw
2016/04/29 20:00:03
Capitalize 'it', '> 2'... 'translates'
ftang
2016/04/29 22:37:03
Done.
| |
| 305 // the next time the bubble won't show up. So the only chance the | |
| 306 // bubble will show up is if the user uncheck the Always translate, | |
|
msw
2016/04/29 20:00:03
unchecks
ftang
2016/04/29 22:37:03
Done.
| |
| 307 // but in that case since user explictly uncheck, we should show | |
|
msw
2016/04/29 20:00:03
'unchecked it', 'show it as unchecked'...
ftang
2016/04/29 22:37:03
Done.
| |
| 308 // as uncheck. | |
| 309 prefs_->GetTranslationAcceptedCount(GetOriginalLanguageCode()) == 3; | |
| 310 } | |
| 311 | |
| 292 void TranslateUIDelegate::SetAlwaysTranslate(bool value) { | 312 void TranslateUIDelegate::SetAlwaysTranslate(bool value) { |
| 293 const std::string& original_lang = GetOriginalLanguageCode(); | 313 const std::string& original_lang = GetOriginalLanguageCode(); |
| 294 const std::string& target_lang = GetTargetLanguageCode(); | 314 const std::string& target_lang = GetTargetLanguageCode(); |
| 295 if (value) | 315 if (value) |
| 296 prefs_->WhitelistLanguagePair(original_lang, target_lang); | 316 prefs_->WhitelistLanguagePair(original_lang, target_lang); |
| 297 else | 317 else |
| 298 prefs_->RemoveLanguagePairFromWhitelist(original_lang, target_lang); | 318 prefs_->RemoveLanguagePairFromWhitelist(original_lang, target_lang); |
| 299 | 319 |
| 300 UMA_HISTOGRAM_BOOLEAN(kAlwaysTranslateLang, true); | 320 UMA_HISTOGRAM_BOOLEAN(kAlwaysTranslateLang, true); |
| 301 } | 321 } |
| 302 | 322 |
| 303 std::string TranslateUIDelegate::GetPageHost() { | 323 std::string TranslateUIDelegate::GetPageHost() { |
| 304 if (!translate_driver_->HasCurrentPage()) | 324 if (!translate_driver_->HasCurrentPage()) |
| 305 return std::string(); | 325 return std::string(); |
| 306 return translate_driver_->GetLastCommittedURL().HostNoBrackets(); | 326 return translate_driver_->GetLastCommittedURL().HostNoBrackets(); |
| 307 } | 327 } |
| 308 | 328 |
| 309 } // namespace translate | 329 } // namespace translate |
| OLD | NEW |