| 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() {
|
| +}
|
|
|