Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(714)

Unified Diff: chrome/browser/translate/translate_manager.cc

Issue 227043005: Eliminate TranslateManager listening to //chrome-level notifications. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/translate/translate_manager.h ('k') | chrome/browser/translate/translate_tab_helper.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
}
« no previous file with comments | « chrome/browser/translate/translate_manager.h ('k') | chrome/browser/translate/translate_tab_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698