summaryrefslogtreecommitdiffstats
path: root/chrome/browser/translate
diff options
context:
space:
mode:
authorkuan@chromium.org <kuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-13 00:24:30 +0000
committerkuan@chromium.org <kuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-13 00:24:30 +0000
commit6cc630bdddda2daa5f62161ca9edb11d2b93d5b6 (patch)
tree96857a63b084095233552c04d0cf2807ddde240e /chrome/browser/translate
parentd548038fe283179094d2e7d761e92176c80c2700 (diff)
downloadchromium_src-6cc630bdddda2daa5f62161ca9edb11d2b93d5b6.zip
chromium_src-6cc630bdddda2daa5f62161ca9edb11d2b93d5b6.tar.gz
chromium_src-6cc630bdddda2daa5f62161ca9edb11d2b93d5b6.tar.bz2
implement improvements for translate infobar
- add "Show original" button to revert translated page (backend is currently a TODO for jay) - modify state machine of translate infobar to show "Translating..." when subsequent translations are triggered for a page i.e. when the user modifies the source or target languages - remove obsolete strings (introduced when privacy dialog was thought to be needed) BUG=35553,36682 TEST=verify per bug reports. Review URL: http://codereview.chromium.org/845006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41510 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 948e337..174ca08 100644
--- a/chrome/browser/translate/translate_infobars_delegates.cc
+++ b/chrome/browser/translate/translate_infobars_delegates.cc
@@ -42,6 +42,7 @@ void TranslateInfoBarDelegate::InfoBarClosed() {
// TranslateInfoBarDelegate: public: -------------------------------------------
void TranslateInfoBarDelegate::UpdateState(TranslateState new_state) {
+ translation_pending_ = false;
if (state_ != new_state)
state_ = new_state;
}
@@ -67,11 +68,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_(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 ce8cede..30e4346 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);
void Translate();
+ void RevertTranslation();
void TranslationDeclined();
bool IsLanguageBlacklisted();
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.
@@ -110,6 +116,7 @@ class TranslateInfoBarDelegate : public InfoBarDelegate {
TabContents* tab_contents_; // Weak.
TranslatePrefs prefs_;
TranslateState state_;
+ bool translation_pending_;
std::string site_;
int original_lang_index_;
int target_lang_index_;