Chromium Code Reviews| 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); |
| } |