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; |
} |
} |