summaryrefslogtreecommitdiffstats
path: root/chrome/browser/translate
diff options
context:
space:
mode:
authorkuan@chromium.org <kuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-15 21:48:50 +0000
committerkuan@chromium.org <kuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-15 21:48:50 +0000
commitd7f380f4fbedb93a528307fa2cec4068cbba8901 (patch)
treebe8de266418feb1415ee2642385896ce5a10a020 /chrome/browser/translate
parent1d3afeaeea04c5545883ce9bfd47b5686d41b73f (diff)
downloadchromium_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.cc12
-rw-r--r--chrome/browser/translate/translate_infobars_delegates.h7
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_;