| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_input_dispatcher_host.h" | 5 #include "content/browser/speech/speech_input_dispatcher_host.h" |
| 6 | 6 |
| 7 #include "base/lazy_instance.h" | 7 #include "base/lazy_instance.h" |
| 8 #include "content/browser/resource_context.h" |
| 8 #include "content/browser/speech/speech_input_preferences.h" | 9 #include "content/browser/speech/speech_input_preferences.h" |
| 9 #include "content/common/speech_input_messages.h" | 10 #include "content/common/speech_input_messages.h" |
| 10 #include "content/public/browser/content_browser_client.h" | 11 #include "content/public/browser/content_browser_client.h" |
| 11 | 12 |
| 12 using content::BrowserThread; | 13 using content::BrowserThread; |
| 13 | 14 |
| 14 namespace speech_input { | 15 namespace speech_input { |
| 15 | 16 |
| 16 //----------------------------- SpeechInputCallers ----------------------------- | 17 //----------------------------- SpeechInputCallers ----------------------------- |
| 17 | 18 |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 | 108 |
| 108 SpeechInputManager* SpeechInputDispatcherHost::manager_; | 109 SpeechInputManager* SpeechInputDispatcherHost::manager_; |
| 109 | 110 |
| 110 void SpeechInputDispatcherHost::set_manager(SpeechInputManager* manager) { | 111 void SpeechInputDispatcherHost::set_manager(SpeechInputManager* manager) { |
| 111 manager_ = manager; | 112 manager_ = manager; |
| 112 } | 113 } |
| 113 | 114 |
| 114 SpeechInputDispatcherHost::SpeechInputDispatcherHost( | 115 SpeechInputDispatcherHost::SpeechInputDispatcherHost( |
| 115 int render_process_id, | 116 int render_process_id, |
| 116 net::URLRequestContextGetter* context_getter, | 117 net::URLRequestContextGetter* context_getter, |
| 117 SpeechInputPreferences* speech_input_preferences) | 118 SpeechInputPreferences* speech_input_preferences, |
| 119 const content::ResourceContext* resource_context) |
| 118 : render_process_id_(render_process_id), | 120 : render_process_id_(render_process_id), |
| 119 may_have_pending_requests_(false), | 121 may_have_pending_requests_(false), |
| 120 context_getter_(context_getter), | 122 context_getter_(context_getter), |
| 121 speech_input_preferences_(speech_input_preferences) { | 123 speech_input_preferences_(speech_input_preferences), |
| 124 resource_context_(resource_context) { |
| 122 // This is initialized by Browser. Do not add any non-trivial | 125 // This is initialized by Browser. Do not add any non-trivial |
| 123 // initialization here, instead do it lazily when required (e.g. see the | 126 // initialization here, instead do it lazily when required (e.g. see the |
| 124 // method |manager()|) or add an Init() method. | 127 // method |manager()|) or add an Init() method. |
| 125 } | 128 } |
| 126 | 129 |
| 127 SpeechInputDispatcherHost::~SpeechInputDispatcherHost() { | 130 SpeechInputDispatcherHost::~SpeechInputDispatcherHost() { |
| 128 // If the renderer crashed for some reason or if we didn't receive a proper | 131 // If the renderer crashed for some reason or if we didn't receive a proper |
| 129 // Cancel/Stop call for an existing session, cancel such active sessions now. | 132 // Cancel/Stop call for an existing session, cancel such active sessions now. |
| 130 // We first check if this dispatcher received any speech IPC requst so that | 133 // We first check if this dispatcher received any speech IPC requst so that |
| 131 // we don't end up creating the speech input manager for web pages which don't | 134 // we don't end up creating the speech input manager for web pages which don't |
| (...skipping 22 matching lines...) Expand all Loading... |
| 154 OnStopRecording) | 157 OnStopRecording) |
| 155 IPC_MESSAGE_UNHANDLED(handled = false) | 158 IPC_MESSAGE_UNHANDLED(handled = false) |
| 156 IPC_END_MESSAGE_MAP() | 159 IPC_END_MESSAGE_MAP() |
| 157 if (handled) | 160 if (handled) |
| 158 may_have_pending_requests_ = true; | 161 may_have_pending_requests_ = true; |
| 159 return handled; | 162 return handled; |
| 160 } | 163 } |
| 161 | 164 |
| 162 void SpeechInputDispatcherHost::OnStartRecognition( | 165 void SpeechInputDispatcherHost::OnStartRecognition( |
| 163 const SpeechInputHostMsg_StartRecognition_Params ¶ms) { | 166 const SpeechInputHostMsg_StartRecognition_Params ¶ms) { |
| 167 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 164 int caller_id = g_speech_input_callers.Get().CreateId( | 168 int caller_id = g_speech_input_callers.Get().CreateId( |
| 165 render_process_id_, params.render_view_id, params.request_id); | 169 render_process_id_, params.render_view_id, params.request_id); |
| 166 manager()->StartRecognition(this, caller_id, | 170 manager()->StartRecognition(this, caller_id, |
| 167 render_process_id_, | 171 render_process_id_, |
| 168 params.render_view_id, params.element_rect, | 172 params.render_view_id, params.element_rect, |
| 169 params.language, params.grammar, | 173 params.language, params.grammar, |
| 170 params.origin_url, | 174 params.origin_url, |
| 171 context_getter_.get(), | 175 context_getter_.get(), |
| 172 speech_input_preferences_.get()); | 176 speech_input_preferences_.get(), |
| 177 resource_context_->audio_manager()); |
| 173 } | 178 } |
| 174 | 179 |
| 175 void SpeechInputDispatcherHost::OnCancelRecognition(int render_view_id, | 180 void SpeechInputDispatcherHost::OnCancelRecognition(int render_view_id, |
| 176 int request_id) { | 181 int request_id) { |
| 177 int caller_id = g_speech_input_callers.Get().GetId( | 182 int caller_id = g_speech_input_callers.Get().GetId( |
| 178 render_process_id_, render_view_id, request_id); | 183 render_process_id_, render_view_id, request_id); |
| 179 if (caller_id) { | 184 if (caller_id) { |
| 180 manager()->CancelRecognition(caller_id); | 185 manager()->CancelRecognition(caller_id); |
| 181 // Request sequence ended so remove mapping. | 186 // Request sequence ended so remove mapping. |
| 182 g_speech_input_callers.Get().RemoveId(caller_id); | 187 g_speech_input_callers.Get().RemoveId(caller_id); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 g_speech_input_callers.Get().render_view_id(caller_id); | 227 g_speech_input_callers.Get().render_view_id(caller_id); |
| 223 int caller_request_id = g_speech_input_callers.Get().request_id(caller_id); | 228 int caller_request_id = g_speech_input_callers.Get().request_id(caller_id); |
| 224 Send(new SpeechInputMsg_RecognitionComplete(caller_render_view_id, | 229 Send(new SpeechInputMsg_RecognitionComplete(caller_render_view_id, |
| 225 caller_request_id)); | 230 caller_request_id)); |
| 226 // Request sequence ended, so remove mapping. | 231 // Request sequence ended, so remove mapping. |
| 227 g_speech_input_callers.Get().RemoveId(caller_id); | 232 g_speech_input_callers.Get().RemoveId(caller_id); |
| 228 VLOG(1) << "SpeechInputDispatcherHost::DidCompleteRecognition exit"; | 233 VLOG(1) << "SpeechInputDispatcherHost::DidCompleteRecognition exit"; |
| 229 } | 234 } |
| 230 | 235 |
| 231 } // namespace speech_input | 236 } // namespace speech_input |
| OLD | NEW |