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 2c1b31735a9a7b7cee90417df2edaefdd9a27c6a..9942e11d85e3e6b0fa0ce06f8c2f222bc2b266b8 100644 |
--- a/content/browser/speech/speech_recognition_manager_impl.cc |
+++ b/content/browser/speech/speech_recognition_manager_impl.cc |
@@ -184,10 +184,12 @@ void SpeechRecognitionManagerImpl::RecognitionAllowedCallback(int session_id, |
if (!SessionExists(session_id)) |
return; |
+ SessionsTable::iterator iter = sessions_.find(session_id); |
+ DCHECK(iter != sessions_.end()); |
tommi (sloooow) - chröme
2013/10/02 08:01:14
DCHECK_NE?
Primiano Tucci (use gerrit)
2013/10/02 14:09:01
Hmm I tried (see patchset 2 trybots) but DCHECK_NE
|
+ Session *session = iter->second; |
tommi (sloooow) - chröme
2013/10/02 08:01:14
Session* session = iter->second;
Primiano Tucci (use gerrit)
2013/10/02 14:09:01
Oh, right.
|
+ |
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, |
@@ -207,7 +209,7 @@ void SpeechRecognitionManagerImpl::RecognitionAllowedCallback(int session_id, |
weak_factory_.GetWeakPtr(), |
session_id, |
EVENT_START)); |
- } else { |
+ } else if (!session->abort_requested) { |
OnRecognitionError(session_id, SpeechRecognitionError( |
SPEECH_RECOGNITION_ERROR_NOT_ALLOWED)); |
base::MessageLoop::current()->PostTask( |
@@ -253,6 +255,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, |
@@ -674,6 +681,7 @@ void SpeechRecognitionManagerImpl::ShowAudioInputSettings() { |
SpeechRecognitionManagerImpl::Session::Session() |
: id(kSessionIDInvalid), |
+ abort_requested(false), |
listener_is_active(true) { |
} |