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..7db73c89c61ec6db315e6140cad65b1018ee7cbc 100644 |
--- a/components/translate/core/browser/translate_ui_delegate.cc |
+++ b/components/translate/core/browser/translate_ui_delegate.cc |
@@ -31,10 +31,11 @@ const char kShowErrorUI[] = "Translate.ShowErrorUI"; |
} // namespace |
-TranslateUIDelegate::TranslateUIDelegate(TranslateClient* translate_client, |
- TranslateManager* translate_manager, |
- const std::string& original_language, |
- const std::string& target_language) |
+TranslateUIDelegate::TranslateUIDelegate( |
+ TranslateClient* translate_client, |
+ const base::WeakPtr<TranslateManager>& translate_manager, |
+ const std::string& original_language, |
+ const std::string& target_language) |
: translate_client_(translate_client), |
translate_driver_(translate_client->GetTranslateDriver()), |
translate_manager_(translate_manager), |
@@ -103,7 +104,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,14 +163,19 @@ void TranslateUIDelegate::Translate() { |
prefs_->ResetTranslationDeniedCount(GetOriginalLanguageCode()); |
prefs_->IncrementTranslationAcceptedCount(GetOriginalLanguageCode()); |
} |
- translate_manager_->TranslatePage( |
- GetOriginalLanguageCode(), GetTargetLanguageCode(), false); |
+ |
+ if (translate_manager_) { |
droger
2014/06/05 08:36:35
Note:
if translate_manager_ is NULL here, we will
nshaik
2014/06/05 18:45:30
Done.
|
+ translate_manager_->TranslatePage( |
+ GetOriginalLanguageCode(), GetTargetLanguageCode(), false); |
+ } |
UMA_HISTOGRAM_BOOLEAN(kPerformTranslate, true); |
} |
void TranslateUIDelegate::RevertTranslation() { |
- translate_manager_->RevertTranslation(); |
+ if (translate_manager_) { |
+ translate_manager_->RevertTranslation(); |
+ } |
UMA_HISTOGRAM_BOOLEAN(kRevertTranslation, true); |
} |
@@ -185,7 +191,9 @@ 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); |
+ if (translate_manager_) { |
+ translate_manager_->GetLanguageState().set_translation_declined(true); |
+ } |
UMA_HISTOGRAM_BOOLEAN(kDeclineTranslate, true); |
@@ -200,7 +208,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 +230,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); |
} |