Index: chrome/browser/translate/translate_infobar_delegate.cc |
diff --git a/chrome/browser/translate/translate_infobar_delegate.cc b/chrome/browser/translate/translate_infobar_delegate.cc |
index 3b8837484ce3c1e330e7339923962d0393af639f..67e6ca5049755c63a285c6787b58c46220f94b00 100644 |
--- a/chrome/browser/translate/translate_infobar_delegate.cc |
+++ b/chrome/browser/translate/translate_infobar_delegate.cc |
@@ -10,13 +10,14 @@ |
#include "base/metrics/histogram.h" |
#include "base/prefs/pref_service.h" |
#include "chrome/browser/infobars/infobar_service.h" |
-#include "chrome/browser/translate/translate_tab_helper.h" |
#include "components/infobars/core/infobar.h" |
+#include "components/translate/core/browser/language_state.h" |
#include "components/translate/core/browser/translate_accept_languages.h" |
+#include "components/translate/core/browser/translate_client.h" |
#include "components/translate/core/browser/translate_download_manager.h" |
+#include "components/translate/core/browser/translate_driver.h" |
#include "components/translate/core/browser/translate_manager.h" |
#include "components/translate/core/common/translate_constants.h" |
-#include "content/public/browser/browser_context.h" |
#include "content/public/browser/web_contents.h" |
#include "grit/component_strings.h" |
#include "grit/theme_resources.h" |
@@ -51,14 +52,20 @@ TranslateInfoBarDelegate::~TranslateInfoBarDelegate() { |
} |
// static |
-void TranslateInfoBarDelegate::Create(bool replace_existing_infobar, |
- content::WebContents* web_contents, |
- translate::TranslateStep step, |
- const std::string& original_language, |
- const std::string& target_language, |
- TranslateErrors::Type error_type, |
- PrefService* prefs, |
- bool triggered_from_menu) { |
+void TranslateInfoBarDelegate::Create( |
+ bool replace_existing_infobar, |
+ const base::WeakPtr<TranslateManager>& translate_manager, |
+ InfoBarService* infobar_service, |
+ bool is_off_the_record, |
+ translate::TranslateStep step, |
+ const std::string& original_language, |
+ const std::string& target_language, |
+ TranslateErrors::Type error_type, |
+ PrefService* prefs, |
+ bool triggered_from_menu) { |
+ DCHECK(translate_manager); |
+ DCHECK(infobar_service); |
+ |
// Check preconditions. |
if (step != translate::TRANSLATE_STEP_TRANSLATE_ERROR) { |
DCHECK(TranslateDownloadManager::IsSupportedLanguage(target_language)); |
@@ -73,19 +80,15 @@ void TranslateInfoBarDelegate::Create(bool replace_existing_infobar, |
} |
// Do not create the after translate infobar if we are auto translating. |
- if ((step == translate::TRANSLATE_STEP_AFTER_TRANSLATE) || |
- (step == translate::TRANSLATE_STEP_TRANSLATING)) { |
- TranslateTabHelper* translate_tab_helper = |
- TranslateTabHelper::FromWebContents(web_contents); |
- if (!translate_tab_helper || |
- translate_tab_helper->GetLanguageState().InTranslateNavigation()) |
- return; |
+ if (((step == translate::TRANSLATE_STEP_AFTER_TRANSLATE) || |
+ (step == translate::TRANSLATE_STEP_TRANSLATING)) && |
+ translate_manager->translate_client()->GetTranslateDriver() |
+ ->GetLanguageState().InTranslateNavigation()) { |
+ return; |
} |
// Find any existing translate infobar delegate. |
infobars::InfoBar* old_infobar = NULL; |
- InfoBarService* infobar_service = |
- InfoBarService::FromWebContents(web_contents); |
TranslateInfoBarDelegate* old_delegate = NULL; |
for (size_t i = 0; i < infobar_service->infobar_count(); ++i) { |
old_infobar = infobar_service->infobar_at(i); |
@@ -100,8 +103,8 @@ void TranslateInfoBarDelegate::Create(bool replace_existing_infobar, |
// Add the new delegate. |
scoped_ptr<infobars::InfoBar> infobar(CreateInfoBar( |
scoped_ptr<TranslateInfoBarDelegate>(new TranslateInfoBarDelegate( |
- web_contents, step, old_delegate, original_language, |
- target_language, error_type, prefs, |
+ translate_manager, is_off_the_record, step, old_delegate, |
+ original_language, target_language, error_type, prefs, |
triggered_from_menu)))); |
if (old_delegate) |
infobar_service->ReplaceInfoBar(old_infobar, infobar.Pass()); |
@@ -130,11 +133,8 @@ void TranslateInfoBarDelegate::RevertTranslation() { |
} |
void TranslateInfoBarDelegate::ReportLanguageDetectionError() { |
- TranslateManager* manager = |
- TranslateTabHelper::GetManagerFromWebContents(GetWebContents()); |
- if (!manager) |
- return; |
- manager->ReportLanguageDetectionError(); |
+ if (translate_manager_) |
+ translate_manager_->ReportLanguageDetectionError(); |
} |
void TranslateInfoBarDelegate::TranslationDeclined() { |
@@ -142,13 +142,10 @@ void TranslateInfoBarDelegate::TranslationDeclined() { |
} |
bool TranslateInfoBarDelegate::IsTranslatableLanguageByPrefs() { |
- TranslateTabHelper* translate_tab_helper = |
- TranslateTabHelper::FromWebContents(GetWebContents()); |
- scoped_ptr<TranslatePrefs> translate_prefs( |
- TranslateTabHelper::CreateTranslatePrefs( |
- translate_tab_helper->GetPrefs())); |
+ TranslateClient* client = GetTranslateClient(); |
+ scoped_ptr<TranslatePrefs> translate_prefs(client->GetTranslatePrefs()); |
TranslateAcceptLanguages* accept_languages = |
- translate_tab_helper->GetTranslateAcceptLanguages(); |
+ client->GetTranslateAcceptLanguages(); |
return translate_prefs->CanTranslateLanguage(accept_languages, |
original_language_code()); |
} |
@@ -252,10 +249,8 @@ void TranslateInfoBarDelegate::MessageInfoBarButtonPressed() { |
return; |
} |
// This is the "Try again..." case. |
- TranslateManager* manager = |
- TranslateTabHelper::GetManagerFromWebContents(GetWebContents()); |
- DCHECK(manager); |
- manager->TranslatePage( |
+ DCHECK(translate_manager_); |
+ translate_manager_->TranslatePage( |
original_language_code(), target_language_code(), false); |
} |
@@ -265,14 +260,14 @@ bool TranslateInfoBarDelegate::ShouldShowMessageInfoBarButton() { |
bool TranslateInfoBarDelegate::ShouldShowNeverTranslateShortcut() { |
DCHECK_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, step_); |
- return !GetWebContents()->GetBrowserContext()->IsOffTheRecord() && |
+ return !is_off_the_record_ && |
(prefs_->GetTranslationDeniedCount(original_language_code()) >= |
kNeverTranslateMinCount); |
} |
bool TranslateInfoBarDelegate::ShouldShowAlwaysTranslateShortcut() { |
DCHECK_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, step_); |
- return !GetWebContents()->GetBrowserContext()->IsOffTheRecord() && |
+ return !is_off_the_record_ && |
(prefs_->GetTranslationAcceptedCount(original_language_code()) >= |
kAlwaysTranslateMinCount); |
} |
@@ -317,7 +312,8 @@ void TranslateInfoBarDelegate::GetAfterTranslateStrings( |
} |
TranslateInfoBarDelegate::TranslateInfoBarDelegate( |
- content::WebContents* web_contents, |
+ const base::WeakPtr<TranslateManager>& translate_manager, |
+ bool is_off_the_record, |
translate::TranslateStep step, |
TranslateInfoBarDelegate* old_delegate, |
const std::string& original_language, |
@@ -326,22 +322,32 @@ TranslateInfoBarDelegate::TranslateInfoBarDelegate( |
PrefService* prefs, |
bool triggered_from_menu) |
: infobars::InfoBarDelegate(), |
+ is_off_the_record_(is_off_the_record), |
step_(step), |
background_animation_(NONE), |
- ui_delegate_(TranslateTabHelper::FromWebContents(web_contents), |
- TranslateTabHelper::GetManagerFromWebContents(web_contents), |
+ ui_delegate_(translate_manager->translate_client(), |
+ translate_manager.get(), |
blundell
2014/05/16 15:11:03
hmm, is it ok that this guy holds on to a raw poin
droger
2014/05/16 15:14:11
You're right, it's probably not OK conceptually.
|
original_language, |
target_language), |
+ translate_manager_(translate_manager), |
error_type_(error_type), |
- prefs_(TranslateTabHelper::CreateTranslatePrefs(prefs)), |
+ prefs_(translate_manager->translate_client()->GetTranslatePrefs()), |
triggered_from_menu_(triggered_from_menu) { |
DCHECK_NE((step_ == translate::TRANSLATE_STEP_TRANSLATE_ERROR), |
(error_type_ == TranslateErrors::NONE)); |
+ DCHECK(translate_manager_); |
if (old_delegate && (old_delegate->is_error() != is_error())) |
background_animation_ = is_error() ? NORMAL_TO_ERROR : ERROR_TO_NORMAL; |
} |
+TranslateClient* TranslateInfoBarDelegate::GetTranslateClient() { |
+ if (!translate_manager_) |
+ return NULL; |
+ |
+ return translate_manager_->translate_client(); |
+} |
+ |
// TranslateInfoBarDelegate::CreateInfoBar() is implemented in platform-specific |
// files. |