diff options
author | kuan@chromium.org <kuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-13 00:24:30 +0000 |
---|---|---|
committer | kuan@chromium.org <kuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-13 00:24:30 +0000 |
commit | 6cc630bdddda2daa5f62161ca9edb11d2b93d5b6 (patch) | |
tree | 96857a63b084095233552c04d0cf2807ddde240e /chrome/browser/translate | |
parent | d548038fe283179094d2e7d761e92176c80c2700 (diff) | |
download | chromium_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.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 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_; |