Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(451)

Unified Diff: chrome/browser/extensions/extension_tts_api_controller.cc

Issue 8437080: Fix crash when TTS utterances are queued on shutdown. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
}
}

Powered by Google App Engine
This is Rietveld 408576698