| Index: content/browser/speech/speech_recognition_manager_impl.cc
|
| diff --git a/content/browser/speech/speech_recognition_manager_impl.cc b/content/browser/speech/speech_recognition_manager_impl.cc
|
| index 51cf027817428de733465691890019ae81ff6182..bdc9d1ce218422a7735d8b3e64524d3bf06a3610 100644
|
| --- a/content/browser/speech/speech_recognition_manager_impl.cc
|
| +++ b/content/browser/speech/speech_recognition_manager_impl.cc
|
| @@ -184,10 +184,15 @@ void SpeechRecognitionManagerImpl::RecognitionAllowedCallback(int session_id,
|
| if (!SessionExists(session_id))
|
| return;
|
|
|
| + SessionsTable::iterator iter = sessions_.find(session_id);
|
| + DCHECK(iter != sessions_.end());
|
| + Session* session = iter->second;
|
| +
|
| + if (session->abort_requested)
|
| + return;
|
| +
|
| if (ask_user) {
|
| - SessionsTable::iterator iter = sessions_.find(session_id);
|
| - DCHECK(iter != sessions_.end());
|
| - SpeechRecognitionSessionContext& context = iter->second->context;
|
| + SpeechRecognitionSessionContext& context = session->context;
|
| context.label = media_stream_manager_->MakeMediaAccessRequest(
|
| context.render_process_id,
|
| context.render_view_id,
|
| @@ -253,6 +258,11 @@ void SpeechRecognitionManagerImpl::AbortSession(int session_id) {
|
| SessionsTable::iterator iter = sessions_.find(session_id);
|
| iter->second->ui.reset();
|
|
|
| + if (iter->second->abort_requested)
|
| + return;
|
| +
|
| + iter->second->abort_requested = true;
|
| +
|
| base::MessageLoop::current()->PostTask(
|
| FROM_HERE,
|
| base::Bind(&SpeechRecognitionManagerImpl::DispatchEvent,
|
| @@ -676,6 +686,7 @@ void SpeechRecognitionManagerImpl::ShowAudioInputSettings() {
|
|
|
| SpeechRecognitionManagerImpl::Session::Session()
|
| : id(kSessionIDInvalid),
|
| + abort_requested(false),
|
| listener_is_active(true) {
|
| }
|
|
|
|
|