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) { |
|
groby-ooo-7-16
2016/04/27 19:08:25
Can we get unit tests?
| |
| 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 |
| 257 | |
|
groby-ooo-7-16
2016/04/27 19:08:25
nit:Please remove
ftang
2016/04/27 21:43:16
Done.
| |
| 252 void TranslateUIDelegate::SetLanguageBlocked(bool value) { | 258 void TranslateUIDelegate::SetLanguageBlocked(bool value) { |
| 253 if (value) { | 259 if (value) { |
| 254 prefs_->BlockLanguage(GetOriginalLanguageCode()); | 260 prefs_->BlockLanguage(GetOriginalLanguageCode()); |
| 255 if (translate_manager_) { | 261 if (!base::FeatureList::IsEnabled(kTranslateUI2016Q2)) { |
| 256 translate_manager_->GetLanguageState().SetTranslateEnabled(false); | 262 if (translate_manager_) { |
|
groby-ooo-7-16
2016/04/27 19:08:25
Why are we not resetting TranslateEnabled for the
ftang
2016/04/27 21:43:16
In the new ui, the omnibar icon is always shown, r
groby-ooo-7-16
2016/04/29 05:26:14
Ah, I understand - thanks for the explanation. Wou
| |
| 263 translate_manager_->GetLanguageState().SetTranslateEnabled(false); | |
| 264 } | |
| 257 } | 265 } |
| 258 } else { | 266 } else { |
| 259 prefs_->UnblockLanguage(GetOriginalLanguageCode()); | 267 prefs_->UnblockLanguage(GetOriginalLanguageCode()); |
| 260 } | 268 } |
| 261 | 269 |
| 262 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateLang, true); | 270 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateLang, true); |
| 263 } | 271 } |
| 264 | 272 |
| 265 bool TranslateUIDelegate::IsSiteBlacklisted() { | 273 bool TranslateUIDelegate::IsSiteBlacklisted() { |
| 266 std::string host = GetPageHost(); | 274 std::string host = GetPageHost(); |
| 267 return !host.empty() && prefs_->IsSiteBlacklisted(host); | 275 return !host.empty() && prefs_->IsSiteBlacklisted(host); |
| 268 } | 276 } |
| 269 | 277 |
| 270 void TranslateUIDelegate::SetSiteBlacklist(bool value) { | 278 void TranslateUIDelegate::SetSiteBlacklist(bool value) { |
| 271 std::string host = GetPageHost(); | 279 std::string host = GetPageHost(); |
| 272 if (host.empty()) | 280 if (host.empty()) |
| 273 return; | 281 return; |
| 274 | 282 |
| 275 if (value) { | 283 if (value) { |
| 276 prefs_->BlacklistSite(host); | 284 prefs_->BlacklistSite(host); |
| 277 if (translate_manager_) { | 285 if (!base::FeatureList::IsEnabled(kTranslateUI2016Q2)) { |
| 278 translate_manager_->GetLanguageState().SetTranslateEnabled(false); | 286 if (translate_manager_) { |
| 287 translate_manager_->GetLanguageState().SetTranslateEnabled(false); | |
| 288 } | |
| 279 } | 289 } |
| 280 } else { | 290 } else { |
| 281 prefs_->RemoveSiteFromBlacklist(host); | 291 prefs_->RemoveSiteFromBlacklist(host); |
| 282 } | 292 } |
| 283 | 293 |
| 284 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateSite, true); | 294 UMA_HISTOGRAM_BOOLEAN(kNeverTranslateSite, true); |
| 285 } | 295 } |
| 286 | 296 |
| 287 bool TranslateUIDelegate::ShouldAlwaysTranslate() { | 297 bool TranslateUIDelegate::ShouldAlwaysTranslate() { |
| 288 return prefs_->IsLanguagePairWhitelisted(GetOriginalLanguageCode(), | 298 return prefs_->IsLanguagePairWhitelisted(GetOriginalLanguageCode(), |
| 289 GetTargetLanguageCode()); | 299 GetTargetLanguageCode()); |
| 290 } | 300 } |
| 291 | 301 |
| 302 bool TranslateUIDelegate::ShowAlwaysTranslateChecked() { | |
| 303 return ShouldAlwaysTranslate() || | |
| 304 // After 2 clicks on Translate for the same language. | |
| 305 // it is == 2 not >2 because if the user translate with always on | |
| 306 // the next time the bubble won't show up. So the only chance the | |
| 307 // bubble will show up is if the user uncheck the Always translate, | |
| 308 // but in that case since user explictly uncheck, we should show | |
| 309 // as uncheck. | |
| 310 prefs_->GetTranslationAcceptedCount(GetOriginalLanguageCode()) == 3; | |
| 311 } | |
| 312 | |
| 292 void TranslateUIDelegate::SetAlwaysTranslate(bool value) { | 313 void TranslateUIDelegate::SetAlwaysTranslate(bool value) { |
| 293 const std::string& original_lang = GetOriginalLanguageCode(); | 314 const std::string& original_lang = GetOriginalLanguageCode(); |
| 294 const std::string& target_lang = GetTargetLanguageCode(); | 315 const std::string& target_lang = GetTargetLanguageCode(); |
| 295 if (value) | 316 if (value) |
| 296 prefs_->WhitelistLanguagePair(original_lang, target_lang); | 317 prefs_->WhitelistLanguagePair(original_lang, target_lang); |
| 297 else | 318 else |
| 298 prefs_->RemoveLanguagePairFromWhitelist(original_lang, target_lang); | 319 prefs_->RemoveLanguagePairFromWhitelist(original_lang, target_lang); |
| 299 | 320 |
| 300 UMA_HISTOGRAM_BOOLEAN(kAlwaysTranslateLang, true); | 321 UMA_HISTOGRAM_BOOLEAN(kAlwaysTranslateLang, true); |
| 301 } | 322 } |
| 302 | 323 |
| 303 std::string TranslateUIDelegate::GetPageHost() { | 324 std::string TranslateUIDelegate::GetPageHost() { |
| 304 if (!translate_driver_->HasCurrentPage()) | 325 if (!translate_driver_->HasCurrentPage()) |
| 305 return std::string(); | 326 return std::string(); |
| 306 return translate_driver_->GetLastCommittedURL().HostNoBrackets(); | 327 return translate_driver_->GetLastCommittedURL().HostNoBrackets(); |
| 307 } | 328 } |
| 308 | 329 |
| 309 } // namespace translate | 330 } // namespace translate |
| OLD | NEW |