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

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

Powered by Google App Engine
This is Rietveld 408576698