Index: chrome/browser/translate/translate_ui_delegate.cc |
=================================================================== |
--- chrome/browser/translate/translate_ui_delegate.cc (revision 239110) |
+++ chrome/browser/translate/translate_ui_delegate.cc (working copy) |
@@ -8,7 +8,6 @@ |
#include "base/metrics/histogram.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/profiles/profile.h" |
-#include "chrome/browser/translate/translate_browser_metrics.h" |
#include "chrome/browser/translate/translate_manager.h" |
#include "chrome/browser/translate/translate_prefs.h" |
#include "chrome/browser/translate/translate_tab_helper.h" |
@@ -19,6 +18,19 @@ |
#include "third_party/icu/source/i18n/unicode/coll.h" |
#include "ui/base/l10n/l10n_util.h" |
+namespace { |
+ |
+const char kDeclineTranslate[] = "Translate.DeclineTranslate"; |
+const char kRevertTranslation[] = "Translate.RevertTranslation"; |
+const char kPerformTranslate[] = "Translate.Translate"; |
+const char kNeverTranslateLang[] = "Translate.NeverTranslateLang"; |
+const char kNeverTranslateSite[] = "Translate.NeverTranslateSite"; |
+const char kAlwaysTranslateLang[] = "Translate.AlwaysTranslateLang"; |
+const char kModifyOriginalLang[] = "Translate.ModifyOriginalLang"; |
+const char kModifyTargetLang[] = "Translate.ModifyTargetLang"; |
+ |
+} // namespace |
+ |
TranslateUIDelegate::TranslateUIDelegate(content::WebContents* web_contents, |
const std::string& original_language, |
const std::string& target_language, |
@@ -25,72 +37,55 @@ |
TranslateErrors::Type error_type) |
: web_contents_(web_contents), |
original_language_index_(NO_INDEX), |
+ initial_original_language_index_(NO_INDEX), |
target_language_index_(NO_INDEX), |
error_type_(error_type) { |
DCHECK(web_contents_); |
- languages_ = |
- GetSortedLanguageNames(g_browser_process->GetApplicationLocale()); |
- |
- for (std::vector<LanguageNamePair>::const_iterator iter = languages_.begin(); |
- iter != languages_.end(); ++iter) { |
- std::string language_code = iter->first; |
- if (language_code == original_language) |
- original_language_index_ = iter - languages_.begin(); |
- if (language_code == target_language) |
- target_language_index_ = iter - languages_.begin(); |
- } |
- |
- Profile* profile = |
- Profile::FromBrowserContext(web_contents_->GetBrowserContext()); |
- prefs_.reset(new TranslatePrefs(profile->GetPrefs())); |
-} |
- |
-TranslateUIDelegate::~TranslateUIDelegate() { |
-} |
- |
-// static |
-std::vector<TranslateUIDelegate::LanguageNamePair> |
- TranslateUIDelegate::GetSortedLanguageNames(const std::string& locale) { |
std::vector<std::string> language_codes; |
TranslateManager::GetSupportedLanguages(&language_codes); |
// Preparing for the alphabetical order in the locale. |
UErrorCode error = U_ZERO_ERROR; |
+ std::string locale = g_browser_process->GetApplicationLocale(); |
icu::Locale loc(locale.c_str()); |
scoped_ptr<icu::Collator> collator(icu::Collator::createInstance(loc, error)); |
collator->setStrength(icu::Collator::PRIMARY); |
- std::vector<LanguageNamePair> language_names; |
- language_names.reserve(language_codes.size()); |
+ languages_.reserve(language_codes.size()); |
for (std::vector<std::string>::const_iterator iter = language_codes.begin(); |
iter != language_codes.end(); ++iter) { |
std::string language_code = *iter; |
string16 language_name = l10n_util::GetDisplayNameForLocale( |
- language_code, locale, true); |
- // Insert the language in |language_names| in alphabetical order. |
+ language_code, g_browser_process->GetApplicationLocale(), true); |
+ // Insert the language in languages_ in alphabetical order. |
std::vector<LanguageNamePair>::iterator iter2; |
- for (iter2 = language_names.begin(); iter2 != language_names.end(); |
- ++iter2) { |
+ for (iter2 = languages_.begin(); iter2 != languages_.end(); ++iter2) { |
if (base::i18n::CompareString16WithCollator(collator.get(), |
language_name, iter2->second) == UCOL_LESS) { |
break; |
} |
} |
- language_names.insert(iter2, |
- LanguageNamePair(language_code, language_name)); |
+ languages_.insert(iter2, LanguageNamePair(language_code, language_name)); |
} |
+ for (std::vector<LanguageNamePair>::const_iterator iter = languages_.begin(); |
+ iter != languages_.end(); ++iter) { |
+ std::string language_code = iter->first; |
+ if (language_code == original_language) { |
+ original_language_index_ = iter - languages_.begin(); |
+ initial_original_language_index_ = original_language_index_; |
+ } |
+ if (language_code == target_language) |
+ target_language_index_ = iter - languages_.begin(); |
+ } |
- return language_names; |
+ Profile* profile = |
+ Profile::FromBrowserContext(web_contents_->GetBrowserContext()); |
+ prefs_.reset(new TranslatePrefs(profile->GetPrefs())); |
} |
-// static |
-std::string TranslateUIDelegate::GetPageHost( |
- content::WebContents* web_contents) { |
- content::NavigationEntry* entry = |
- web_contents->GetController().GetActiveEntry(); |
- return entry ? entry->GetURL().HostNoBrackets() : std::string(); |
+TranslateUIDelegate::~TranslateUIDelegate() { |
} |
size_t TranslateUIDelegate::GetNumberOfLanguages() const { |
@@ -105,8 +100,7 @@ |
if (original_language_index_ == language_index) |
return; |
- UMA_HISTOGRAM_BOOLEAN(TranslateBrowserMetrics::GetMetricsName( |
- TranslateBrowserMetrics::UMA_MODIFY_ORIGINAL_LANG), true); |
+ UMA_HISTOGRAM_BOOLEAN(kModifyOriginalLang, true); |
original_language_index_ = language_index; |
} |
@@ -119,8 +113,7 @@ |
return; |
DCHECK_LT(language_index, GetNumberOfLanguages()); |
- UMA_HISTOGRAM_BOOLEAN(TranslateBrowserMetrics::GetMetricsName( |
- TranslateBrowserMetrics::UMA_MODIFY_TARGET_LANG), true); |
+ UMA_HISTOGRAM_BOOLEAN(kModifyTargetLang, true); |
target_language_index_ = language_index; |
} |
@@ -156,15 +149,13 @@ |
GetOriginalLanguageCode(), |
GetTargetLanguageCode()); |
- UMA_HISTOGRAM_BOOLEAN(TranslateBrowserMetrics::GetMetricsName( |
- TranslateBrowserMetrics::UMA_PERFORM_TRANSLATE), true); |
+ UMA_HISTOGRAM_BOOLEAN(kPerformTranslate, true); |
} |
void TranslateUIDelegate::RevertTranslation() { |
TranslateManager::GetInstance()->RevertTranslation(web_contents()); |
- UMA_HISTOGRAM_BOOLEAN(TranslateBrowserMetrics::GetMetricsName( |
- TranslateBrowserMetrics::UMA_REVERT_TRANSLATION), true); |
+ UMA_HISTOGRAM_BOOLEAN(kRevertTranslation, true); |
} |
void TranslateUIDelegate::TranslationDeclined() { |
@@ -181,8 +172,7 @@ |
TranslateTabHelper::FromWebContents(web_contents())-> |
language_state().set_translation_declined(true); |
- UMA_HISTOGRAM_BOOLEAN(TranslateBrowserMetrics::GetMetricsName( |
- TranslateBrowserMetrics::UMA_DECLINE_TRANSLATE), true); |
+ UMA_HISTOGRAM_BOOLEAN(kDeclineTranslate, true); |
} |
bool TranslateUIDelegate::IsLanguageBlocked() { |
@@ -200,17 +190,16 @@ |
prefs_->UnblockLanguage(GetOriginalLanguageCode()); |
} |
- UMA_HISTOGRAM_BOOLEAN(TranslateBrowserMetrics::GetMetricsName( |
- TranslateBrowserMetrics::UMA_NEVER_TRANSLATE_LANG), true); |
+ UMA_HISTOGRAM_BOOLEAN(kNeverTranslateLang, true); |
} |
bool TranslateUIDelegate::IsSiteBlacklisted() { |
- std::string host = GetPageHost(web_contents()); |
+ std::string host = GetPageHost(); |
return !host.empty() && prefs_->IsSiteBlacklisted(host); |
} |
void TranslateUIDelegate::SetSiteBlacklist(bool value) { |
- std::string host = GetPageHost(web_contents()); |
+ std::string host = GetPageHost(); |
if (host.empty()) |
return; |
@@ -224,8 +213,7 @@ |
prefs_->RemoveSiteFromBlacklist(host); |
} |
- UMA_HISTOGRAM_BOOLEAN(TranslateBrowserMetrics::GetMetricsName( |
- TranslateBrowserMetrics::UMA_NEVER_TRANSLATE_SITE), true); |
+ UMA_HISTOGRAM_BOOLEAN(kNeverTranslateSite, true); |
} |
bool TranslateUIDelegate::ShouldAlwaysTranslate() { |
@@ -241,6 +229,11 @@ |
else |
prefs_->RemoveLanguagePairFromWhitelist(original_lang, target_lang); |
- UMA_HISTOGRAM_BOOLEAN(TranslateBrowserMetrics::GetMetricsName( |
- TranslateBrowserMetrics::UMA_ALWAYS_TRANSLATE_LANG), true); |
+ UMA_HISTOGRAM_BOOLEAN(kAlwaysTranslateLang, true); |
} |
+ |
+std::string TranslateUIDelegate::GetPageHost() { |
+ content::NavigationEntry* entry = |
+ web_contents()->GetController().GetActiveEntry(); |
+ return entry ? entry->GetURL().HostNoBrackets() : std::string(); |
+} |