Index: chrome/browser/translate/translate_infobar_delegate.cc |
=================================================================== |
--- chrome/browser/translate/translate_infobar_delegate.cc (revision 72158) |
+++ chrome/browser/translate/translate_infobar_delegate.cc (working copy) |
@@ -1,4 +1,4 @@ |
-// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
@@ -24,7 +24,7 @@ |
TabContents* tab_contents, |
const std::string& original_language, |
const std::string& target_language) { |
- DCHECK(type != TRANSLATION_ERROR); |
+ DCHECK_NE(TRANSLATION_ERROR, type); |
// The original language can only be "unknown" for the "translating" |
// infobar, which is the case when the user started a translation from the |
// context menu. |
@@ -32,14 +32,12 @@ |
original_language != chrome::kUnknownLanguageCode); |
if ((original_language != chrome::kUnknownLanguageCode && |
!TranslateManager::IsSupportedLanguage(original_language)) || |
- !TranslateManager::IsSupportedLanguage(target_language)) { |
+ !TranslateManager::IsSupportedLanguage(target_language)) |
return NULL; |
- } |
TranslateInfoBarDelegate* delegate = |
- new TranslateInfoBarDelegate(type, TranslateErrors::NONE, |
- tab_contents, |
+ new TranslateInfoBarDelegate(type, TranslateErrors::NONE, tab_contents, |
original_language, target_language); |
- DCHECK(delegate->target_language_index() != -1); |
+ DCHECK_NE(-1, delegate->target_language_index()); |
return delegate; |
} |
@@ -52,76 +50,24 @@ |
original_language, target_language); |
} |
-TranslateInfoBarDelegate::TranslateInfoBarDelegate( |
- Type type, |
- TranslateErrors::Type error, |
- TabContents* tab_contents, |
- const std::string& original_language, |
- const std::string& target_language) |
- : InfoBarDelegate(tab_contents), |
- type_(type), |
- background_animation_(NONE), |
- tab_contents_(tab_contents), |
- original_language_index_(-1), |
- initial_original_language_index_(-1), |
- target_language_index_(-1), |
- error_(error), |
- infobar_view_(NULL), |
- prefs_(tab_contents_->profile()->GetPrefs()) { |
- DCHECK((type_ != TRANSLATION_ERROR && error == TranslateErrors::NONE) || |
- (type_ == TRANSLATION_ERROR && error != TranslateErrors::NONE)); |
- |
- std::vector<std::string> language_codes; |
- TranslateManager::GetSupportedLanguages(&language_codes); |
- |
- 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 = GetLanguageDisplayableName(language_code); |
- // Insert the language in languages_ in alphabetical order. |
- std::vector<LanguageNamePair>::iterator iter2; |
- for (iter2 = languages_.begin(); iter2 != languages_.end(); ++iter2) { |
- if (language_name.compare(iter2->second) < 0) |
- break; |
- } |
- 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(); |
- } |
+TranslateInfoBarDelegate::~TranslateInfoBarDelegate() { |
} |
-TranslateInfoBarDelegate::~TranslateInfoBarDelegate() {} |
- |
-int TranslateInfoBarDelegate::GetLanguageCount() const { |
- return static_cast<int>(languages_.size()); |
-} |
- |
-std::string TranslateInfoBarDelegate::GetLanguageCodeAt( |
- int index) const { |
- DCHECK(index >=0 && index < GetLanguageCount()); |
+std::string TranslateInfoBarDelegate::GetLanguageCodeAt(int index) const { |
+ DCHECK(index >= 0 && index < GetLanguageCount()); |
return languages_[index].first; |
} |
string16 TranslateInfoBarDelegate::GetLanguageDisplayableNameAt( |
int index) const { |
- DCHECK(index >=0 && index < GetLanguageCount()); |
+ DCHECK(index >= 0 && index < GetLanguageCount()); |
return languages_[index].second; |
} |
std::string TranslateInfoBarDelegate::GetOriginalLanguageCode() const { |
- if (original_language_index() == -1) |
- return chrome::kUnknownLanguageCode; |
- return GetLanguageCodeAt(original_language_index()); |
+ return (original_language_index() == -1) ? |
+ chrome::kUnknownLanguageCode : |
+ GetLanguageCodeAt(original_language_index()); |
} |
std::string TranslateInfoBarDelegate::GetTargetLanguageCode() const { |
@@ -129,7 +75,7 @@ |
} |
void TranslateInfoBarDelegate::SetOriginalLanguage(int language_index) { |
- DCHECK(language_index < static_cast<int>(languages_.size())); |
+ DCHECK_LT(language_index, GetLanguageCount()); |
original_language_index_ = language_index; |
if (infobar_view_) |
infobar_view_->OriginalLanguageChanged(); |
@@ -138,7 +84,7 @@ |
} |
void TranslateInfoBarDelegate::SetTargetLanguage(int language_index) { |
- DCHECK(language_index < static_cast<int>(languages_.size())); |
+ DCHECK_LT(language_index, GetLanguageCount()); |
target_language_index_ = language_index; |
if (infobar_view_) |
infobar_view_->TargetLanguageChanged(); |
@@ -146,10 +92,6 @@ |
Translate(); |
} |
-bool TranslateInfoBarDelegate::IsError() { |
- return type_ == TRANSLATION_ERROR; |
-} |
- |
void TranslateInfoBarDelegate::Translate() { |
const std::string& original_language_code = GetOriginalLanguageCode(); |
if (!tab_contents()->profile()->IsOffTheRecord()) { |
@@ -157,8 +99,7 @@ |
prefs_.IncrementTranslationAcceptedCount(original_language_code); |
} |
- TranslateManager::GetInstance()->TranslatePage( |
- tab_contents_, |
+ TranslateManager::GetInstance()->TranslatePage(tab_contents_, |
GetLanguageCodeAt(original_language_index()), |
GetLanguageCodeAt(target_language_index())); |
} |
@@ -169,8 +110,7 @@ |
} |
void TranslateInfoBarDelegate::ReportLanguageDetectionError() { |
- TranslateManager::GetInstance()-> |
- ReportLanguageDetectionError(tab_contents_); |
+ TranslateManager::GetInstance()->ReportLanguageDetectionError(tab_contents_); |
} |
void TranslateInfoBarDelegate::TranslationDeclined() { |
@@ -188,34 +128,6 @@ |
tab_contents_->language_state().set_translation_declined(true); |
} |
-void TranslateInfoBarDelegate::InfoBarDismissed() { |
- if (type_ != BEFORE_TRANSLATE) |
- return; |
- |
- // The user closed the infobar without clicking the translate button. |
- TranslationDeclined(); |
- UMA_HISTOGRAM_COUNTS("Translate.DeclineTranslateCloseInfobar", 1); |
-} |
- |
-void TranslateInfoBarDelegate::InfoBarClosed() { |
- delete this; |
-} |
- |
-SkBitmap* TranslateInfoBarDelegate::GetIcon() const { |
- return ResourceBundle::GetSharedInstance().GetBitmapNamed( |
- IDR_INFOBAR_TRANSLATE); |
-} |
- |
-InfoBarDelegate::Type TranslateInfoBarDelegate::GetInfoBarType() { |
- return InfoBarDelegate::PAGE_ACTION_TYPE; |
-} |
- |
-TranslateInfoBarDelegate* |
-TranslateInfoBarDelegate::AsTranslateInfoBarDelegate() { |
- return this; |
-} |
- |
- |
bool TranslateInfoBarDelegate::IsLanguageBlacklisted() { |
return prefs_.IsLanguageBlacklisted(GetOriginalLanguageCode()); |
} |
@@ -278,35 +190,31 @@ |
} |
string16 TranslateInfoBarDelegate::GetMessageInfoBarText() { |
- switch (type_) { |
- case TRANSLATING: |
+ if (type_ == TRANSLATING) { |
+ return l10n_util::GetStringFUTF16(IDS_TRANSLATE_INFOBAR_TRANSLATING_TO, |
+ GetLanguageDisplayableNameAt(target_language_index_)); |
+ } |
+ |
+ DCHECK_EQ(TRANSLATION_ERROR, type_); |
+ switch (error_) { |
+ case TranslateErrors::NETWORK: |
+ return l10n_util::GetStringUTF16( |
+ IDS_TRANSLATE_INFOBAR_ERROR_CANT_CONNECT); |
+ case TranslateErrors::INITIALIZATION_ERROR: |
+ case TranslateErrors::TRANSLATION_ERROR: |
+ return l10n_util::GetStringUTF16( |
+ IDS_TRANSLATE_INFOBAR_ERROR_CANT_TRANSLATE); |
+ case TranslateErrors::UNKNOWN_LANGUAGE: |
+ return l10n_util::GetStringUTF16( |
+ IDS_TRANSLATE_INFOBAR_UNKNOWN_PAGE_LANGUAGE); |
+ case TranslateErrors::UNSUPPORTED_LANGUAGE: |
return l10n_util::GetStringFUTF16( |
- IDS_TRANSLATE_INFOBAR_TRANSLATING_TO, |
+ IDS_TRANSLATE_INFOBAR_UNSUPPORTED_PAGE_LANGUAGE, |
GetLanguageDisplayableNameAt(target_language_index_)); |
- case TRANSLATION_ERROR: |
- switch (error_) { |
- case TranslateErrors::NETWORK: |
- return l10n_util::GetStringUTF16( |
- IDS_TRANSLATE_INFOBAR_ERROR_CANT_CONNECT); |
- case TranslateErrors::INITIALIZATION_ERROR: |
- case TranslateErrors::TRANSLATION_ERROR: |
- return l10n_util::GetStringUTF16( |
- IDS_TRANSLATE_INFOBAR_ERROR_CANT_TRANSLATE); |
- case TranslateErrors::UNKNOWN_LANGUAGE: |
- return l10n_util::GetStringUTF16( |
- IDS_TRANSLATE_INFOBAR_UNKNOWN_PAGE_LANGUAGE); |
- case TranslateErrors::UNSUPPORTED_LANGUAGE: |
- return l10n_util::GetStringFUTF16( |
- IDS_TRANSLATE_INFOBAR_UNSUPPORTED_PAGE_LANGUAGE, |
- GetLanguageDisplayableNameAt(target_language_index_)); |
- case TranslateErrors::IDENTICAL_LANGUAGES: |
- return l10n_util::GetStringFUTF16( |
- IDS_TRANSLATE_INFOBAR_ERROR_SAME_LANGUAGE, |
- GetLanguageDisplayableNameAt(target_language_index_)); |
- default: |
- NOTREACHED(); |
- return string16(); |
- } |
+ case TranslateErrors::IDENTICAL_LANGUAGES: |
+ return l10n_util::GetStringFUTF16( |
+ IDS_TRANSLATE_INFOBAR_ERROR_SAME_LANGUAGE, |
+ GetLanguageDisplayableNameAt(target_language_index_)); |
default: |
NOTREACHED(); |
return string16(); |
@@ -314,33 +222,26 @@ |
} |
string16 TranslateInfoBarDelegate::GetMessageInfoBarButtonText() { |
- switch (type_) { |
- case TRANSLATING: |
- return string16(); |
- case TRANSLATION_ERROR: |
- if (error_ == TranslateErrors::IDENTICAL_LANGUAGES || |
- error_ == TranslateErrors::UNKNOWN_LANGUAGE) { |
- // No retry button, we would fail again with the same error. |
- return string16(); |
- } |
- if (error_ == TranslateErrors::UNSUPPORTED_LANGUAGE) |
- return l10n_util::GetStringUTF16(IDS_TRANSLATE_INFOBAR_REVERT); |
- return l10n_util::GetStringUTF16(IDS_TRANSLATE_INFOBAR_RETRY); |
- default: |
- NOTREACHED(); |
- return string16(); |
+ if (type_ != TRANSLATION_ERROR) { |
+ DCHECK_EQ(TRANSLATING, type_); |
+ } else if ((error_ != TranslateErrors::IDENTICAL_LANGUAGES) && |
+ (error_ != TranslateErrors::UNKNOWN_LANGUAGE)) { |
+ return l10n_util::GetStringUTF16( |
+ (error_ == TranslateErrors::UNSUPPORTED_LANGUAGE) ? |
+ IDS_TRANSLATE_INFOBAR_REVERT : IDS_TRANSLATE_INFOBAR_RETRY); |
} |
+ return string16(); |
} |
void TranslateInfoBarDelegate::MessageInfoBarButtonPressed() { |
- DCHECK(type_ == TRANSLATION_ERROR); |
+ DCHECK_EQ(TRANSLATION_ERROR, type_); |
if (error_ == TranslateErrors::UNSUPPORTED_LANGUAGE) { |
RevertTranslation(); |
return; |
} |
// This is the "Try again..." case. |
- TranslateManager::GetInstance()->TranslatePage( |
- tab_contents_, GetOriginalLanguageCode(), GetTargetLanguageCode()); |
+ TranslateManager::GetInstance()->TranslatePage(tab_contents_, |
+ GetOriginalLanguageCode(), GetTargetLanguageCode()); |
} |
bool TranslateInfoBarDelegate::ShouldShowMessageInfoBarButton() { |
@@ -348,33 +249,25 @@ |
} |
bool TranslateInfoBarDelegate::ShouldShowNeverTranslateButton() { |
- DCHECK(type_ == BEFORE_TRANSLATE); |
- if (tab_contents()->profile()->IsOffTheRecord()) |
- return false; |
- return prefs_.GetTranslationDeniedCount(GetOriginalLanguageCode()) >= 3; |
+ DCHECK_EQ(BEFORE_TRANSLATE, type_); |
+ return !tab_contents()->profile()->IsOffTheRecord() && |
+ (prefs_.GetTranslationDeniedCount(GetOriginalLanguageCode()) >= 3); |
} |
bool TranslateInfoBarDelegate::ShouldShowAlwaysTranslateButton() { |
- DCHECK(type_ == BEFORE_TRANSLATE); |
- if (tab_contents()->profile()->IsOffTheRecord()) |
- return false; |
- return prefs_.GetTranslationAcceptedCount(GetOriginalLanguageCode()) >= 3; |
+ DCHECK_EQ(BEFORE_TRANSLATE, type_); |
+ return !tab_contents()->profile()->IsOffTheRecord() && |
+ (prefs_.GetTranslationAcceptedCount(GetOriginalLanguageCode()) >= 3); |
} |
void TranslateInfoBarDelegate::UpdateBackgroundAnimation( |
TranslateInfoBarDelegate* previous_infobar) { |
- if (!previous_infobar || previous_infobar->IsError() == IsError()) { |
+ if (!previous_infobar || previous_infobar->IsError() == IsError()) |
background_animation_ = NONE; |
- return; |
- } |
- background_animation_ = IsError() ? NORMAL_TO_ERROR: ERROR_TO_NORMAL; |
+ else |
+ background_animation_ = IsError() ? NORMAL_TO_ERROR : ERROR_TO_NORMAL; |
} |
-std::string TranslateInfoBarDelegate::GetPageHost() { |
- NavigationEntry* entry = tab_contents_->controller().GetActiveEntry(); |
- return entry ? entry->url().HostNoBrackets() : std::string(); |
-} |
- |
// static |
string16 TranslateInfoBarDelegate::GetLanguageDisplayableName( |
const std::string& language_code) { |
@@ -392,17 +285,92 @@ |
string16 text = |
l10n_util::GetStringFUTF16(IDS_TRANSLATE_INFOBAR_AFTER_MESSAGE, |
string16(), string16(), &offsets); |
- DCHECK(offsets.size() == 2U); |
+ DCHECK_EQ(2U, offsets.size()); |
- if (offsets[0] > offsets[1]) { |
- // Target language comes before source. |
+ *swap_languages = (offsets[0] > offsets[1]); |
+ if (*swap_languages) |
std::swap(offsets[0], offsets[1]); |
- *swap_languages = true; |
- } else { |
- *swap_languages = false; |
- } |
strings->push_back(text.substr(0, offsets[0])); |
strings->push_back(text.substr(offsets[0], offsets[1] - offsets[0])); |
strings->push_back(text.substr(offsets[1])); |
} |
+ |
+TranslateInfoBarDelegate::TranslateInfoBarDelegate( |
+ Type type, |
+ TranslateErrors::Type error, |
+ TabContents* tab_contents, |
+ const std::string& original_language, |
+ const std::string& target_language) |
+ : InfoBarDelegate(tab_contents), |
+ type_(type), |
+ background_animation_(NONE), |
+ tab_contents_(tab_contents), |
+ original_language_index_(-1), |
+ initial_original_language_index_(-1), |
+ target_language_index_(-1), |
+ error_(error), |
+ infobar_view_(NULL), |
+ prefs_(tab_contents_->profile()->GetPrefs()) { |
+ DCHECK_NE((type_ == TRANSLATION_ERROR), (error == TranslateErrors::NONE)); |
+ |
+ std::vector<std::string> language_codes; |
+ TranslateManager::GetSupportedLanguages(&language_codes); |
+ |
+ 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 = GetLanguageDisplayableName(language_code); |
+ // Insert the language in languages_ in alphabetical order. |
+ std::vector<LanguageNamePair>::iterator iter2; |
+ for (iter2 = languages_.begin(); iter2 != languages_.end(); ++iter2) { |
+ if (language_name.compare(iter2->second) < 0) |
+ break; |
+ } |
+ 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(); |
+ } |
+} |
+ |
+void TranslateInfoBarDelegate::InfoBarDismissed() { |
+ if (type_ != BEFORE_TRANSLATE) |
+ return; |
+ |
+ // The user closed the infobar without clicking the translate button. |
+ TranslationDeclined(); |
+ UMA_HISTOGRAM_COUNTS("Translate.DeclineTranslateCloseInfobar", 1); |
+} |
+ |
+void TranslateInfoBarDelegate::InfoBarClosed() { |
+ delete this; |
+} |
+ |
+SkBitmap* TranslateInfoBarDelegate::GetIcon() const { |
+ return ResourceBundle::GetSharedInstance().GetBitmapNamed( |
+ IDR_INFOBAR_TRANSLATE); |
+} |
+ |
+InfoBarDelegate::Type TranslateInfoBarDelegate::GetInfoBarType() const { |
+ return InfoBarDelegate::PAGE_ACTION_TYPE; |
+} |
+ |
+TranslateInfoBarDelegate* |
+ TranslateInfoBarDelegate::AsTranslateInfoBarDelegate() { |
+ return this; |
+} |
+ |
+std::string TranslateInfoBarDelegate::GetPageHost() { |
+ NavigationEntry* entry = tab_contents_->controller().GetActiveEntry(); |
+ return entry ? entry->url().HostNoBrackets() : std::string(); |
+} |