Index: chrome/browser/extensions/extension_tts_api_controller.cc |
=================================================================== |
--- chrome/browser/extensions/extension_tts_api_controller.cc (revision 109814) |
+++ chrome/browser/extensions/extension_tts_api_controller.cc (working copy) |
@@ -150,7 +150,9 @@ |
current_utterance_->Finish(); |
delete current_utterance_; |
} |
- ClearUtteranceQueue(); |
+ |
+ // Clear any queued utterances too. |
+ ClearUtteranceQueue(false); // Don't sent events. |
} |
void ExtensionTtsController::SpeakOrEnqueue(Utterance* utterance) { |
@@ -209,7 +211,7 @@ |
if (current_utterance_) |
current_utterance_->OnTtsEvent(TTS_EVENT_INTERRUPTED, -1, std::string()); |
FinishCurrentUtterance(); |
- ClearUtteranceQueue(); |
+ ClearUtteranceQueue(true); // Send events. |
} |
void ExtensionTtsController::OnTtsEvent(int utterance_id, |
@@ -295,11 +297,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; |
} |
} |