Chromium Code Reviews| Index: chrome/browser/extensions/extension_tts_api_controller.cc |
| =================================================================== |
| --- chrome/browser/extensions/extension_tts_api_controller.cc (revision 107928) |
| +++ chrome/browser/extensions/extension_tts_api_controller.cc (working copy) |
| @@ -150,7 +150,10 @@ |
| current_utterance_->Finish(); |
| delete current_utterance_; |
| } |
| - ClearUtteranceQueue(); |
| + |
| + // Clear any queued utterances too, but don't send "cancelled" events |
| + // because we're being destroyed. |
| + ClearUtteranceQueue(/*send_events=*/false); |
|
Aaron Boodman
2011/11/16 09:26:36
It's more common in Chrome code to do:
ClearUtter
dmazzoni
2011/11/16 15:50:39
Done.
|
| } |
| void ExtensionTtsController::SpeakOrEnqueue(Utterance* utterance) { |
| @@ -209,7 +212,7 @@ |
| if (current_utterance_) |
| current_utterance_->OnTtsEvent(TTS_EVENT_INTERRUPTED, -1, std::string()); |
| FinishCurrentUtterance(); |
| - ClearUtteranceQueue(); |
| + ClearUtteranceQueue(/*send_events=*/true); |
| } |
| void ExtensionTtsController::OnTtsEvent(int utterance_id, |
| @@ -295,11 +298,14 @@ |
| } |
| } |
| -void ExtensionTtsController::ClearUtteranceQueue() { |
| +void ExtensionTtsController::ClearUtteranceQueue(bool send_events) { |
| while (!utterance_queue_.empty()) { |
| Utterance* utterance = utterance_queue_.front(); |
| utterance_queue_.pop(); |
| - utterance->OnTtsEvent(TTS_EVENT_CANCELLED, -1, std::string()); |
| + if (send_events) |
| + utterance->OnTtsEvent(TTS_EVENT_CANCELLED, -1, std::string()); |
| + else |
| + utterance->Finish(); |
| delete utterance; |
| } |
| } |