Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/speech/speech_recognition_manager_impl.h" | 5 #include "content/browser/speech/speech_recognition_manager_impl.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "content/browser/browser_main_loop.h" | 8 #include "content/browser/browser_main_loop.h" |
| 9 #include "content/browser/renderer_host/media/media_stream_manager.h" | 9 #include "content/browser/renderer_host/media/media_stream_manager.h" |
| 10 #include "content/browser/renderer_host/media/media_stream_ui_proxy.h" | 10 #include "content/browser/renderer_host/media/media_stream_ui_proxy.h" |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 177 } | 177 } |
| 178 } | 178 } |
| 179 | 179 |
| 180 void SpeechRecognitionManagerImpl::RecognitionAllowedCallback(int session_id, | 180 void SpeechRecognitionManagerImpl::RecognitionAllowedCallback(int session_id, |
| 181 bool ask_user, | 181 bool ask_user, |
| 182 bool is_allowed) { | 182 bool is_allowed) { |
| 183 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 183 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 184 if (!SessionExists(session_id)) | 184 if (!SessionExists(session_id)) |
| 185 return; | 185 return; |
| 186 | 186 |
| 187 SessionsTable::iterator iter = sessions_.find(session_id); | |
| 188 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
| |
| 189 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.
| |
| 190 | |
| 187 if (ask_user) { | 191 if (ask_user) { |
| 188 SessionsTable::iterator iter = sessions_.find(session_id); | 192 SpeechRecognitionSessionContext& context = session->context; |
| 189 DCHECK(iter != sessions_.end()); | |
| 190 SpeechRecognitionSessionContext& context = iter->second->context; | |
| 191 context.label = media_stream_manager_->MakeMediaAccessRequest( | 193 context.label = media_stream_manager_->MakeMediaAccessRequest( |
| 192 context.render_process_id, | 194 context.render_process_id, |
| 193 context.render_view_id, | 195 context.render_view_id, |
| 194 context.request_id, | 196 context.request_id, |
| 195 StreamOptions(MEDIA_DEVICE_AUDIO_CAPTURE, MEDIA_NO_SERVICE), | 197 StreamOptions(MEDIA_DEVICE_AUDIO_CAPTURE, MEDIA_NO_SERVICE), |
| 196 GURL(context.context_name), | 198 GURL(context.context_name), |
| 197 base::Bind( | 199 base::Bind( |
| 198 &SpeechRecognitionManagerImpl::MediaRequestPermissionCallback, | 200 &SpeechRecognitionManagerImpl::MediaRequestPermissionCallback, |
| 199 weak_factory_.GetWeakPtr(), session_id)); | 201 weak_factory_.GetWeakPtr(), session_id)); |
| 200 return; | 202 return; |
| 201 } | 203 } |
| 202 | 204 |
| 203 if (is_allowed) { | 205 if (is_allowed) { |
|
no longer working on chromium
2013/10/02 09:05:06
question, should't you do nothing if session->abor
Primiano Tucci (use gerrit)
2013/10/02 14:09:01
Oh right, good catch. If the permission gets cache
| |
| 204 base::MessageLoop::current()->PostTask( | 206 base::MessageLoop::current()->PostTask( |
| 205 FROM_HERE, | 207 FROM_HERE, |
| 206 base::Bind(&SpeechRecognitionManagerImpl::DispatchEvent, | 208 base::Bind(&SpeechRecognitionManagerImpl::DispatchEvent, |
| 207 weak_factory_.GetWeakPtr(), | 209 weak_factory_.GetWeakPtr(), |
| 208 session_id, | 210 session_id, |
| 209 EVENT_START)); | 211 EVENT_START)); |
| 210 } else { | 212 } else if (!session->abort_requested) { |
| 211 OnRecognitionError(session_id, SpeechRecognitionError( | 213 OnRecognitionError(session_id, SpeechRecognitionError( |
| 212 SPEECH_RECOGNITION_ERROR_NOT_ALLOWED)); | 214 SPEECH_RECOGNITION_ERROR_NOT_ALLOWED)); |
| 213 base::MessageLoop::current()->PostTask( | 215 base::MessageLoop::current()->PostTask( |
| 214 FROM_HERE, | 216 FROM_HERE, |
| 215 base::Bind(&SpeechRecognitionManagerImpl::DispatchEvent, | 217 base::Bind(&SpeechRecognitionManagerImpl::DispatchEvent, |
| 216 weak_factory_.GetWeakPtr(), | 218 weak_factory_.GetWeakPtr(), |
| 217 session_id, | 219 session_id, |
| 218 EVENT_ABORT)); | 220 EVENT_ABORT)); |
| 219 } | 221 } |
| 220 } | 222 } |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 246 } | 248 } |
| 247 | 249 |
| 248 void SpeechRecognitionManagerImpl::AbortSession(int session_id) { | 250 void SpeechRecognitionManagerImpl::AbortSession(int session_id) { |
| 249 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 251 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 250 if (!SessionExists(session_id)) | 252 if (!SessionExists(session_id)) |
| 251 return; | 253 return; |
| 252 | 254 |
| 253 SessionsTable::iterator iter = sessions_.find(session_id); | 255 SessionsTable::iterator iter = sessions_.find(session_id); |
| 254 iter->second->ui.reset(); | 256 iter->second->ui.reset(); |
| 255 | 257 |
| 258 if (iter->second->abort_requested) | |
| 259 return; | |
| 260 | |
| 261 iter->second->abort_requested = true; | |
| 262 | |
| 256 base::MessageLoop::current()->PostTask( | 263 base::MessageLoop::current()->PostTask( |
| 257 FROM_HERE, | 264 FROM_HERE, |
| 258 base::Bind(&SpeechRecognitionManagerImpl::DispatchEvent, | 265 base::Bind(&SpeechRecognitionManagerImpl::DispatchEvent, |
| 259 weak_factory_.GetWeakPtr(), | 266 weak_factory_.GetWeakPtr(), |
| 260 session_id, | 267 session_id, |
| 261 EVENT_ABORT)); | 268 EVENT_ABORT)); |
| 262 } | 269 } |
| 263 | 270 |
| 264 void SpeechRecognitionManagerImpl::StopAudioCaptureForSession(int session_id) { | 271 void SpeechRecognitionManagerImpl::StopAudioCaptureForSession(int session_id) { |
| 265 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 272 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| (...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 667 void SpeechRecognitionManagerImpl::ShowAudioInputSettings() { | 674 void SpeechRecognitionManagerImpl::ShowAudioInputSettings() { |
| 668 // Since AudioManager::ShowAudioInputSettings can potentially launch external | 675 // Since AudioManager::ShowAudioInputSettings can potentially launch external |
| 669 // processes, do that in the FILE thread to not block the calling threads. | 676 // processes, do that in the FILE thread to not block the calling threads. |
| 670 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, | 677 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, |
| 671 base::Bind(&ShowAudioInputSettingsOnFileThread, | 678 base::Bind(&ShowAudioInputSettingsOnFileThread, |
| 672 audio_manager_)); | 679 audio_manager_)); |
| 673 } | 680 } |
| 674 | 681 |
| 675 SpeechRecognitionManagerImpl::Session::Session() | 682 SpeechRecognitionManagerImpl::Session::Session() |
| 676 : id(kSessionIDInvalid), | 683 : id(kSessionIDInvalid), |
| 684 abort_requested(false), | |
| 677 listener_is_active(true) { | 685 listener_is_active(true) { |
| 678 } | 686 } |
| 679 | 687 |
| 680 SpeechRecognitionManagerImpl::Session::~Session() { | 688 SpeechRecognitionManagerImpl::Session::~Session() { |
| 681 } | 689 } |
| 682 | 690 |
| 683 } // namespace content | 691 } // namespace content |
| OLD | NEW |