Index: components/translate/core/browser/translate_ui_delegate.cc |
diff --git a/components/translate/core/browser/translate_ui_delegate.cc b/components/translate/core/browser/translate_ui_delegate.cc |
index 30448f026e72654abc687d479eede8f30f61b659..78fc294b871d9842d713111b72765f97d7abcedf 100644 |
--- a/components/translate/core/browser/translate_ui_delegate.cc |
+++ b/components/translate/core/browser/translate_ui_delegate.cc |
@@ -31,17 +31,16 @@ const char kShowErrorUI[] = "Translate.ShowErrorUI"; |
} // namespace |
-TranslateUIDelegate::TranslateUIDelegate(TranslateClient* translate_client, |
- TranslateManager* translate_manager, |
- const std::string& original_language, |
- const std::string& target_language) |
- : translate_client_(translate_client), |
- translate_driver_(translate_client->GetTranslateDriver()), |
+TranslateUIDelegate::TranslateUIDelegate( |
+ const base::WeakPtr<TranslateManager>& translate_manager, |
+ const std::string& original_language, |
+ const std::string& target_language) |
+ : translate_driver_( |
+ translate_manager->translate_client()->GetTranslateDriver()), |
translate_manager_(translate_manager), |
original_language_index_(NO_INDEX), |
initial_original_language_index_(NO_INDEX), |
target_language_index_(NO_INDEX) { |
- DCHECK(translate_client_); |
DCHECK(translate_driver_); |
DCHECK(translate_manager_); |
@@ -86,7 +85,7 @@ TranslateUIDelegate::TranslateUIDelegate(TranslateClient* translate_client, |
target_language_index_ = iter - languages_.begin(); |
} |
- prefs_ = translate_client_->GetTranslatePrefs(); |
+ prefs_ = translate_manager_->translate_client()->GetTranslatePrefs(); |
} |
TranslateUIDelegate::~TranslateUIDelegate() {} |
@@ -103,7 +102,7 @@ void TranslateUIDelegate::OnErrorShown(TranslateErrors::Type error_type) { |
} |
const LanguageState& TranslateUIDelegate::GetLanguageState() { |
- return translate_driver_->GetLanguageState(); |
+ return translate_manager_->GetLanguageState(); |
} |
size_t TranslateUIDelegate::GetNumberOfLanguages() const { |
@@ -162,16 +161,19 @@ void TranslateUIDelegate::Translate() { |
prefs_->ResetTranslationDeniedCount(GetOriginalLanguageCode()); |
prefs_->IncrementTranslationAcceptedCount(GetOriginalLanguageCode()); |
} |
- translate_manager_->TranslatePage( |
- GetOriginalLanguageCode(), GetTargetLanguageCode(), false); |
- UMA_HISTOGRAM_BOOLEAN(kPerformTranslate, true); |
+ if (translate_manager_) { |
+ translate_manager_->TranslatePage( |
+ GetOriginalLanguageCode(), GetTargetLanguageCode(), false); |
+ UMA_HISTOGRAM_BOOLEAN(kPerformTranslate, true); |
+ } |
} |
void TranslateUIDelegate::RevertTranslation() { |
- translate_manager_->RevertTranslation(); |
- |
- UMA_HISTOGRAM_BOOLEAN(kRevertTranslation, true); |
+ if (translate_manager_) { |
+ translate_manager_->RevertTranslation(); |
+ UMA_HISTOGRAM_BOOLEAN(kRevertTranslation, true); |
+ } |
} |
void TranslateUIDelegate::TranslationDeclined(bool explicitly_closed) { |
@@ -185,9 +187,10 @@ void TranslateUIDelegate::TranslationDeclined(bool explicitly_closed) { |
// translations when getting a LANGUAGE_DETERMINED from the page, which |
// happens when a load stops. That could happen multiple times, including |
// after the user already declined the translation.) |
- translate_driver_->GetLanguageState().set_translation_declined(true); |
- |
- UMA_HISTOGRAM_BOOLEAN(kDeclineTranslate, true); |
+ if (translate_manager_) { |
+ translate_manager_->GetLanguageState().set_translation_declined(true); |
+ UMA_HISTOGRAM_BOOLEAN(kDeclineTranslate, true); |
+ } |
if (!explicitly_closed) |
UMA_HISTOGRAM_BOOLEAN(kDeclineTranslateDismissUI, true); |
@@ -200,7 +203,9 @@ bool TranslateUIDelegate::IsLanguageBlocked() { |
void TranslateUIDelegate::SetLanguageBlocked(bool value) { |
if (value) { |
prefs_->BlockLanguage(GetOriginalLanguageCode()); |
- translate_driver_->GetLanguageState().SetTranslateEnabled(false); |
+ if (translate_manager_) { |
+ translate_manager_->GetLanguageState().SetTranslateEnabled(false); |
+ } |
} else { |
prefs_->UnblockLanguage(GetOriginalLanguageCode()); |
} |
@@ -220,7 +225,9 @@ void TranslateUIDelegate::SetSiteBlacklist(bool value) { |
if (value) { |
prefs_->BlacklistSite(host); |
- translate_driver_->GetLanguageState().SetTranslateEnabled(false); |
+ if (translate_manager_) { |
+ translate_manager_->GetLanguageState().SetTranslateEnabled(false); |
+ } |
} else { |
prefs_->RemoveSiteFromBlacklist(host); |
} |