Index: chrome/browser/speech/tts_message_filter.cc |
diff --git a/chrome/browser/speech/tts_message_filter.cc b/chrome/browser/speech/tts_message_filter.cc |
index fb6bb2829ebfe1fc016649ea01cba0cc0ef3b1c5..c7dec7a420b9013a0580cfaa96e3a75dfac3b450 100644 |
--- a/chrome/browser/speech/tts_message_filter.cc |
+++ b/chrome/browser/speech/tts_message_filter.cc |
@@ -17,9 +17,7 @@ using content::BrowserThread; |
TtsMessageFilter::TtsMessageFilter(int render_process_id, Profile* profile) |
: render_process_id_(render_process_id), |
profile_(profile) { |
-} |
- |
-TtsMessageFilter::~TtsMessageFilter() { |
+ TtsController::GetInstance()->AddVoicesChangedDelegate(this); |
} |
void TtsMessageFilter::OverrideThreadForMessage( |
@@ -36,7 +34,7 @@ void TtsMessageFilter::OverrideThreadForMessage( |
} |
bool TtsMessageFilter::OnMessageReceived(const IPC::Message& message, |
- bool* message_was_ok) { |
+ bool* message_was_ok) { |
bool handled = true; |
IPC_BEGIN_MESSAGE_MAP_EX(TtsMessageFilter, message, *message_was_ok) |
IPC_MESSAGE_HANDLER(TtsHostMsg_InitializeVoiceList, OnInitializeVoiceList) |
@@ -49,6 +47,10 @@ bool TtsMessageFilter::OnMessageReceived(const IPC::Message& message, |
return handled; |
} |
+void TtsMessageFilter::OnChannelClosing() { |
+ TtsController::GetInstance()->RemoveVoicesChangedDelegate(this); |
+} |
+ |
void TtsMessageFilter::OnInitializeVoiceList() { |
TtsController* tts_controller = TtsController::GetInstance(); |
std::vector<VoiceData> voices; |
@@ -130,3 +132,10 @@ void TtsMessageFilter::OnTtsEvent(Utterance* utterance, |
break; |
} |
} |
+ |
+void TtsMessageFilter::OnVoicesChanged() { |
+ OnInitializeVoiceList(); |
+} |
+ |
+TtsMessageFilter::~TtsMessageFilter() { |
+} |