Chromium Code Reviews| Index: chrome/browser/translate/translate_manager.cc |
| diff --git a/chrome/browser/translate/translate_manager.cc b/chrome/browser/translate/translate_manager.cc |
| index 638a5ac9121d037263aaaf22347ad26419d69f29..6e450b0257e36b880d38b70c5c0f441559d30810 100644 |
| --- a/chrome/browser/translate/translate_manager.cc |
| +++ b/chrome/browser/translate/translate_manager.cc |
| @@ -165,37 +165,6 @@ void TranslateManager::Observe(int type, |
| 0)); |
| break; |
| } |
| - case chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED: { |
| - const LanguageDetectionDetails* lang_det_details = |
| - content::Details<const LanguageDetectionDetails>(details).ptr(); |
| - |
| - WebContents* tab = content::Source<WebContents>(source).ptr(); |
| - DCHECK_EQ(translate_tab_helper_->GetWebContents(), tab); |
| - |
| - if (!translate_tab_helper_->GetWebContents()) |
| - return; |
| - |
| - // We may get this notifications multiple times. Make sure to translate |
| - // only once. |
| - LanguageState& language_state = translate_driver_->GetLanguageState(); |
| - if (language_state.page_needs_translation() && |
| - !language_state.translation_pending() && |
| - !language_state.translation_declined() && |
| - !language_state.IsPageTranslated()) { |
| - std::string language = lang_det_details->adopted_language; |
| - InitiateTranslation(language); |
| - } |
| - break; |
| - } |
| - case chrome::NOTIFICATION_PAGE_TRANSLATED: { |
| - // Only add translate infobar if it doesn't exist; if it already exists, |
| - // just update the state, the actual infobar would have received the same |
| - // notification and update the visual display accordingly. |
| - PageTranslatedDetails* page_translated_details = |
| - content::Details<PageTranslatedDetails>(details).ptr(); |
| - PageTranslated(page_translated_details); |
| - break; |
| - } |
| default: |
| NOTREACHED(); |
| } |
| @@ -225,15 +194,19 @@ TranslateManager::TranslateManager( |
| notification_registrar_.Add( |
| this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
| content::Source<NavigationController>(&web_contents->GetController())); |
| - notification_registrar_.Add(this, |
| - chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED, |
| - content::Source<WebContents>(web_contents)); |
| - notification_registrar_.Add(this, |
| - chrome::NOTIFICATION_PAGE_TRANSLATED, |
| - content::Source<WebContents>(web_contents)); |
| } |
| void TranslateManager::InitiateTranslation(const std::string& page_lang) { |
| + // Short-circuit out if not in a state where initiating translation makes |
|
droger
2014/04/07 09:09:54
Nit: maybe keep the comment about this being calle
blundell
2014/04/08 05:25:22
Done.
|
| + // sense. |
| + LanguageState& language_state = translate_driver_->GetLanguageState(); |
| + if (!language_state.page_needs_translation() || |
| + language_state.translation_pending() || |
| + language_state.translation_declined() || |
| + language_state.IsPageTranslated()) { |
| + return; |
| + } |
| + |
| PrefService* prefs = translate_client_->GetPrefs(); |
| if (!prefs->GetBoolean(prefs::kEnableTranslate)) { |
| TranslateBrowserMetrics::ReportInitiationStatus( |
| @@ -332,7 +305,6 @@ void TranslateManager::InitiateTranslation(const std::string& page_lang) { |
| } |
| } |
| - LanguageState& language_state = translate_driver_->GetLanguageState(); |
| std::string auto_translate_to = language_state.AutoTranslateTo(); |
| if (!auto_translate_to.empty()) { |
| // This page was navigated through a click from a translated page. |
| @@ -485,29 +457,31 @@ void TranslateManager::DoTranslatePage(const std::string& translate_script, |
| translate_script, source_lang, target_lang)); |
| } |
| -void TranslateManager::PageTranslated(PageTranslatedDetails* details) { |
| - if ((details->error_type == TranslateErrors::NONE) && |
| - details->source_language != translate::kUnknownLanguageCode && |
| - !TranslateDownloadManager::IsSupportedLanguage( |
| - details->source_language)) { |
| - details->error_type = TranslateErrors::UNSUPPORTED_LANGUAGE; |
| - } |
| +void TranslateManager::PageTranslated(const std::string& source_lang, |
| + const std::string& target_lang, |
| + TranslateErrors::Type error_type) { |
| + translate_driver_->GetLanguageState().SetCurrentLanguage(target_lang); |
| + translate_driver_->GetLanguageState().set_translation_pending(false); |
| - DCHECK(translate_tab_helper_->GetWebContents()); |
| + if ((error_type == TranslateErrors::NONE) && |
| + source_lang != translate::kUnknownLanguageCode && |
| + !TranslateDownloadManager::IsSupportedLanguage(source_lang)) { |
| + error_type = TranslateErrors::UNSUPPORTED_LANGUAGE; |
| + } |
| translate_tab_helper_->ShowTranslateUI(TranslateTabHelper::AFTER_TRANSLATE, |
| - details->source_language, |
| - details->target_language, |
| - details->error_type, |
| + source_lang, |
| + target_lang, |
| + error_type, |
| false); |
| WebContents* web_contents = translate_tab_helper_->GetWebContents(); |
| - if (details->error_type != TranslateErrors::NONE && |
| + if (error_type != TranslateErrors::NONE && |
| !web_contents->GetBrowserContext()->IsOffTheRecord()) { |
| TranslateErrorDetails error_details; |
| error_details.time = base::Time::Now(); |
| error_details.url = web_contents->GetLastCommittedURL(); |
| - error_details.error = details->error_type; |
| + error_details.error = error_type; |
| NotifyTranslateError(error_details); |
| } |
| } |