diff options
author | kuan@chromium.org <kuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-15 21:48:50 +0000 |
---|---|---|
committer | kuan@chromium.org <kuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-15 21:48:50 +0000 |
commit | d7f380f4fbedb93a528307fa2cec4068cbba8901 (patch) | |
tree | be8de266418feb1415ee2642385896ce5a10a020 /chrome/browser/translate | |
parent | 1d3afeaeea04c5545883ce9bfd47b5686d41b73f (diff) | |
download | chromium_src-d7f380f4fbedb93a528307fa2cec4068cbba8901.zip chromium_src-d7f380f4fbedb93a528307fa2cec4068cbba8901.tar.gz chromium_src-d7f380f4fbedb93a528307fa2cec4068cbba8901.tar.bz2 |
2nd attempt at landing cl to implement enhancements for translate infobar
- cl was previously committed at r41510 but reverted at r41520 - grd changes broke the buildbot.
- so this cl will revert r41520.
- this cl is the original cl which has been lgtm'ed, so i just tbr this.
BUG=35553,36682
TEST=verify per bug reports.
TBR=jcampan
Review URL: http://codereview.chromium.org/980001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41639 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/translate')
-rw-r--r-- | chrome/browser/translate/translate_infobars_delegates.cc | 12 | ||||
-rw-r--r-- | chrome/browser/translate/translate_infobars_delegates.h | 7 |
2 files changed, 17 insertions, 2 deletions
diff --git a/chrome/browser/translate/translate_infobars_delegates.cc b/chrome/browser/translate/translate_infobars_delegates.cc index 062eba8..aeaef50 100644 --- a/chrome/browser/translate/translate_infobars_delegates.cc +++ b/chrome/browser/translate/translate_infobars_delegates.cc @@ -48,6 +48,7 @@ string16 TranslateInfoBarDelegate::GetDisplayNameForLocale( } void TranslateInfoBarDelegate::UpdateState(TranslateState new_state) { + translation_pending_ = false; if (state_ != new_state) state_ = new_state; } @@ -73,11 +74,17 @@ void TranslateInfoBarDelegate::GetAvailableTargetLanguages( } void TranslateInfoBarDelegate::Translate() { - if (state_ == kBeforeTranslate) - UpdateState(kTranslating); + // We only really send page for translation if original and target languages + // are different, so only in this case is translation really pending. + if (original_lang_index_ != target_lang_index_) + translation_pending_ = true; tab_contents_->TranslatePage(original_lang_code(), target_lang_code()); } +void TranslateInfoBarDelegate::RevertTranslation() { + tab_contents_->RevertTranslatedPage(); +} + void TranslateInfoBarDelegate::TranslationDeclined() { // Remember that the user declined the translation so as to prevent showing a // translate infobar for that page again. (TranslateManager initiates @@ -224,6 +231,7 @@ TranslateInfoBarDelegate::TranslateInfoBarDelegate(TabContents* tab_contents, tab_contents_(tab_contents), prefs_(new TranslatePrefs(user_prefs)), state_(state), + translation_pending_(false), site_(url.HostNoBrackets()), original_lang_index_(original_lang_index), target_lang_index_(target_lang_index), diff --git a/chrome/browser/translate/translate_infobars_delegates.h b/chrome/browser/translate/translate_infobars_delegates.h index 74753a8..2d14724 100644 --- a/chrome/browser/translate/translate_infobars_delegates.h +++ b/chrome/browser/translate/translate_infobars_delegates.h @@ -16,6 +16,8 @@ class TranslateInfoBarDelegate : public InfoBarDelegate { public: enum TranslateState { kBeforeTranslate = 1, + // TODO(playmobil or erg): remove kTranslating state when mac and linux code + // have been updated to use transaction_pending() instead. kTranslating, kAfterTranslate, kTranslationFailed, @@ -36,6 +38,7 @@ class TranslateInfoBarDelegate : public InfoBarDelegate { void ModifyOriginalLanguage(int lang_index); void ModifyTargetLanguage(int lang_index); virtual void Translate(); + virtual void RevertTranslation(); virtual void TranslationDeclined(); virtual bool IsLanguageBlacklisted(); virtual void ToggleLanguageBlacklist(); @@ -65,6 +68,9 @@ class TranslateInfoBarDelegate : public InfoBarDelegate { TranslateState state() const { return state_; } + bool translation_pending() const { + return translation_pending_; + } // Retrieve the text for the toolbar label. The toolbar label is a bit // strange since we need to place popup menus inside the string in question. @@ -122,6 +128,7 @@ class TranslateInfoBarDelegate : public InfoBarDelegate { TabContents* tab_contents_; // Weak. scoped_ptr<TranslatePrefs> prefs_; TranslateState state_; + bool translation_pending_; std::string site_; int original_lang_index_; int target_lang_index_; |