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

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

Issue 11644059: Change infobar creation to use a public static Create() method on the infobar delegate classes. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 11 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/ui/auto_login_info_bar_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/translate/translate_manager.cc
===================================================================
--- chrome/browser/translate/translate_manager.cc (revision 175396)
+++ chrome/browser/translate/translate_manager.cc (working copy)
@@ -465,16 +465,14 @@
if (error) {
Profile* profile =
Profile::FromBrowserContext(web_contents->GetBrowserContext());
- InfoBarService* infobar_service =
- InfoBarService::FromWebContents(web_contents);
- ShowInfoBar(
- web_contents,
- TranslateInfoBarDelegate::CreateErrorDelegate(
- TranslateErrors::NETWORK,
- infobar_service,
- profile->GetPrefs(),
- request.source_lang,
- request.target_lang));
+ TranslateInfoBarDelegate::Create(
+ InfoBarService::FromWebContents(web_contents),
+ true,
+ TranslateInfoBarDelegate::TRANSLATION_ERROR,
+ TranslateErrors::NETWORK,
+ profile->GetPrefs(),
+ request.source_lang,
+ request.target_lang);
} else {
// Translate the page.
DoTranslatePage(web_contents, translate_script_,
@@ -495,11 +493,6 @@
}
}
-// static
-bool TranslateManager::IsShowingTranslateInfobar(WebContents* web_contents) {
- return GetTranslateInfoBarDelegate(web_contents) != NULL;
-}
-
TranslateManager::TranslateManager()
: ALLOW_THIS_IN_INITIALIZER_LIST(weak_method_factory_(this)),
translate_script_expiration_delay_(
@@ -539,10 +532,6 @@
return;
}
- // If there is already a translate infobar showing, don't show another one.
- if (GetTranslateInfoBarDelegate(web_contents))
- return;
-
std::string target_lang = GetTargetLanguage(prefs);
std::string language_code = GetLanguageCode(page_lang);
// Nothing to do if either the language Chrome is in or the language of the
@@ -592,13 +581,11 @@
return;
}
- InfoBarService* infobar_service =
- InfoBarService::FromWebContents(web_contents);
// Prompts the user if he/she wants the page translated.
- infobar_service->AddInfoBar(
- TranslateInfoBarDelegate::CreateDelegate(
- TranslateInfoBarDelegate::BEFORE_TRANSLATE, infobar_service,
- profile->GetPrefs(), language_code, target_lang));
+ TranslateInfoBarDelegate::Create(
+ InfoBarService::FromWebContents(web_contents), false,
+ TranslateInfoBarDelegate::BEFORE_TRANSLATE, TranslateErrors::NONE,
+ profile->GetPrefs(), language_code, target_lang);
}
void TranslateManager::InitiateTranslationPosted(
@@ -628,11 +615,10 @@
Profile* profile =
Profile::FromBrowserContext(web_contents->GetBrowserContext());
- InfoBarService* infobar_service =
- InfoBarService::FromWebContents(web_contents);
- ShowInfoBar(web_contents, TranslateInfoBarDelegate::CreateDelegate(
- TranslateInfoBarDelegate::TRANSLATING, infobar_service,
- profile->GetPrefs(), source_lang, target_lang));
+ TranslateInfoBarDelegate::Create(
+ InfoBarService::FromWebContents(web_contents), true,
+ TranslateInfoBarDelegate::TRANSLATING, TranslateErrors::NONE,
+ profile->GetPrefs(), source_lang, target_lang);
if (!translate_script_.empty()) {
DoTranslatePage(web_contents, translate_script_, source_lang, target_lang);
@@ -721,35 +707,24 @@
void TranslateManager::PageTranslated(WebContents* web_contents,
PageTranslatedDetails* details) {
- InfoBarService* infobar_service =
- InfoBarService::FromWebContents(web_contents);
- Profile* profile =
- Profile::FromBrowserContext(web_contents->GetBrowserContext());
- PrefService* prefs = profile->GetPrefs();
-
- // Create the new infobar to display.
- TranslateInfoBarDelegate* infobar;
- if (details->error_type != TranslateErrors::NONE) {
- infobar = TranslateInfoBarDelegate::CreateErrorDelegate(
- details->error_type,
- infobar_service,
- prefs,
- details->source_language,
- details->target_language);
- } else if (!IsSupportedLanguage(details->source_language)) {
+ if ((details->error_type == TranslateErrors::NONE) &&
+ !IsSupportedLanguage(details->source_language)) {
// TODO(jcivelli): http://crbug.com/9390 We should change the "after
// translate" infobar to support unknown as the original
// language.
UMA_HISTOGRAM_COUNTS("Translate.ServerReportedUnsupportedLanguage", 1);
- infobar = TranslateInfoBarDelegate::CreateErrorDelegate(
- TranslateErrors::UNSUPPORTED_LANGUAGE, infobar_service,
- prefs, details->source_language, details->target_language);
- } else {
- infobar = TranslateInfoBarDelegate::CreateDelegate(
- TranslateInfoBarDelegate::AFTER_TRANSLATE, infobar_service,
- prefs, details->source_language, details->target_language);
+ details->error_type = TranslateErrors::UNSUPPORTED_LANGUAGE;
}
- ShowInfoBar(web_contents, infobar);
+ Profile* profile =
+ Profile::FromBrowserContext(web_contents->GetBrowserContext());
+ PrefService* prefs = profile->GetPrefs();
+ TranslateInfoBarDelegate::Create(
+ InfoBarService::FromWebContents(web_contents), true,
+ (details->error_type == TranslateErrors::NONE) ?
+ TranslateInfoBarDelegate::AFTER_TRANSLATE :
+ TranslateInfoBarDelegate::TRANSLATION_ERROR,
+ details->error_type, prefs, details->source_language,
+ details->target_language);
}
bool TranslateManager::IsAcceptLanguage(WebContents* web_contents,
@@ -868,24 +843,6 @@
translate_script_request_pending_->Start();
}
-void TranslateManager::ShowInfoBar(content::WebContents* web_contents,
- TranslateInfoBarDelegate* infobar) {
- DCHECK(infobar != NULL);
- TranslateInfoBarDelegate* old_infobar =
- GetTranslateInfoBarDelegate(web_contents);
- infobar->UpdateBackgroundAnimation(old_infobar);
- InfoBarService* infobar_service =
- InfoBarService::FromWebContents(web_contents);
- if (!infobar_service)
- return;
- if (old_infobar) {
- // There already is a translate infobar, simply replace it.
- infobar_service->ReplaceInfoBar(old_infobar, infobar);
- } else {
- infobar_service->AddInfoBar(infobar);
- }
-}
-
// static
std::string TranslateManager::GetTargetLanguage(PrefService* prefs) {
std::string ui_lang =
@@ -910,21 +867,3 @@
}
return std::string();
}
-
-// static
-TranslateInfoBarDelegate* TranslateManager::GetTranslateInfoBarDelegate(
- WebContents* web_contents) {
- InfoBarService* infobar_service =
- InfoBarService::FromWebContents(web_contents);
- if (!infobar_service)
- return NULL;
-
- for (size_t i = 0; i < infobar_service->GetInfoBarCount(); ++i) {
- TranslateInfoBarDelegate* delegate =
- infobar_service->GetInfoBarDelegateAt(i)->
- AsTranslateInfoBarDelegate();
- if (delegate)
- return delegate;
- }
- return NULL;
-}
« no previous file with comments | « chrome/browser/translate/translate_manager.h ('k') | chrome/browser/ui/auto_login_info_bar_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698