OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_dispatcher_host.h" | 5 #include "content/browser/speech/speech_recognition_dispatcher_host.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
10 #include "content/common/speech_recognition_messages.h" | 10 #include "content/common/speech_recognition_messages.h" |
11 #include "content/public/browser/speech_recognition_manager.h" | 11 #include "content/public/browser/speech_recognition_manager.h" |
12 #include "content/public/browser/speech_recognition_preferences.h" | 12 #include "content/public/browser/speech_recognition_preferences.h" |
13 #include "content/public/browser/speech_recognition_session_config.h" | 13 #include "content/public/browser/speech_recognition_session_config.h" |
14 #include "content/public/browser/speech_recognition_session_context.h" | 14 #include "content/public/browser/speech_recognition_session_context.h" |
15 #include "content/public/common/content_switches.h" | 15 #include "content/public/common/content_switches.h" |
16 | 16 |
17 using content::SpeechRecognitionManager; | 17 namespace content { |
18 using content::SpeechRecognitionSessionConfig; | |
19 using content::SpeechRecognitionSessionContext; | |
20 | |
21 namespace speech { | |
22 SpeechRecognitionManager* SpeechRecognitionDispatcherHost::manager_for_tests_; | 18 SpeechRecognitionManager* SpeechRecognitionDispatcherHost::manager_for_tests_; |
23 | 19 |
24 void SpeechRecognitionDispatcherHost::SetManagerForTests( | 20 void SpeechRecognitionDispatcherHost::SetManagerForTests( |
25 SpeechRecognitionManager* manager) { | 21 SpeechRecognitionManager* manager) { |
26 manager_for_tests_ = manager; | 22 manager_for_tests_ = manager; |
27 } | 23 } |
28 | 24 |
29 SpeechRecognitionDispatcherHost::SpeechRecognitionDispatcherHost( | 25 SpeechRecognitionDispatcherHost::SpeechRecognitionDispatcherHost( |
30 int render_process_id, | 26 int render_process_id, |
31 net::URLRequestContextGetter* context_getter, | 27 net::URLRequestContextGetter* context_getter, |
32 content::SpeechRecognitionPreferences* recognition_preferences) | 28 SpeechRecognitionPreferences* recognition_preferences) |
33 : render_process_id_(render_process_id), | 29 : render_process_id_(render_process_id), |
34 context_getter_(context_getter), | 30 context_getter_(context_getter), |
35 recognition_preferences_(recognition_preferences) { | 31 recognition_preferences_(recognition_preferences) { |
36 // Do not add any non-trivial initialization here, instead do it lazily when | 32 // Do not add any non-trivial initialization here, instead do it lazily when |
37 // required (e.g. see the method |manager()|) or add an Init() method. | 33 // required (e.g. see the method |manager()|) or add an Init() method. |
38 } | 34 } |
39 | 35 |
40 SpeechRecognitionDispatcherHost::~SpeechRecognitionDispatcherHost() { | 36 SpeechRecognitionDispatcherHost::~SpeechRecognitionDispatcherHost() { |
41 if (SpeechRecognitionManager* sr_manager = manager()) | 37 if (SpeechRecognitionManager* sr_manager = manager()) |
42 sr_manager->AbortAllSessionsForListener(this); | 38 sr_manager->AbortAllSessionsForListener(this); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 if (recognition_preferences_) { | 86 if (recognition_preferences_) { |
91 config.filter_profanities = recognition_preferences_->FilterProfanities(); | 87 config.filter_profanities = recognition_preferences_->FilterProfanities(); |
92 } else { | 88 } else { |
93 config.filter_profanities = false; | 89 config.filter_profanities = false; |
94 } | 90 } |
95 config.continuous = params.continuous; | 91 config.continuous = params.continuous; |
96 config.interim_results = params.interim_results; | 92 config.interim_results = params.interim_results; |
97 config.event_listener = this; | 93 config.event_listener = this; |
98 | 94 |
99 int session_id = manager()->CreateSession(config); | 95 int session_id = manager()->CreateSession(config); |
100 DCHECK_NE(session_id, content::SpeechRecognitionManager::kSessionIDInvalid); | 96 DCHECK_NE(session_id, SpeechRecognitionManager::kSessionIDInvalid); |
101 manager()->StartSession(session_id); | 97 manager()->StartSession(session_id); |
102 } | 98 } |
103 | 99 |
104 void SpeechRecognitionDispatcherHost::OnAbortRequest(int render_view_id, | 100 void SpeechRecognitionDispatcherHost::OnAbortRequest(int render_view_id, |
105 int request_id) { | 101 int request_id) { |
106 int session_id = manager()->GetSession(render_process_id_, | 102 int session_id = manager()->GetSession(render_process_id_, |
107 render_view_id, | 103 render_view_id, |
108 request_id); | 104 request_id); |
109 | 105 |
110 // The renderer might provide an invalid |request_id| if the session was not | 106 // The renderer might provide an invalid |request_id| if the session was not |
111 // started as expected, e.g., due to unsatisfied security requirements. | 107 // started as expected, e.g., due to unsatisfied security requirements. |
112 if (session_id != content::SpeechRecognitionManager::kSessionIDInvalid) | 108 if (session_id != SpeechRecognitionManager::kSessionIDInvalid) |
113 manager()->AbortSession(session_id); | 109 manager()->AbortSession(session_id); |
114 } | 110 } |
115 | 111 |
116 void SpeechRecognitionDispatcherHost::OnStopCaptureRequest( | 112 void SpeechRecognitionDispatcherHost::OnStopCaptureRequest( |
117 int render_view_id, int request_id) { | 113 int render_view_id, int request_id) { |
118 int session_id = manager()->GetSession(render_process_id_, | 114 int session_id = manager()->GetSession(render_process_id_, |
119 render_view_id, | 115 render_view_id, |
120 request_id); | 116 request_id); |
121 | 117 |
122 // The renderer might provide an invalid |request_id| if the session was not | 118 // The renderer might provide an invalid |request_id| if the session was not |
123 // started as expected, e.g., due to unsatisfied security requirements. | 119 // started as expected, e.g., due to unsatisfied security requirements. |
124 if (session_id != content::SpeechRecognitionManager::kSessionIDInvalid) | 120 if (session_id != SpeechRecognitionManager::kSessionIDInvalid) |
125 manager()->StopAudioCaptureForSession(session_id); | 121 manager()->StopAudioCaptureForSession(session_id); |
126 } | 122 } |
127 | 123 |
128 // -------- SpeechRecognitionEventListener interface implementation ----------- | 124 // -------- SpeechRecognitionEventListener interface implementation ----------- |
129 | 125 |
130 void SpeechRecognitionDispatcherHost::OnRecognitionStart(int session_id) { | 126 void SpeechRecognitionDispatcherHost::OnRecognitionStart(int session_id) { |
131 const SpeechRecognitionSessionContext& context = | 127 const SpeechRecognitionSessionContext& context = |
132 manager()->GetSessionContext(session_id); | 128 manager()->GetSessionContext(session_id); |
133 Send(new SpeechRecognitionMsg_Started(context.render_view_id, | 129 Send(new SpeechRecognitionMsg_Started(context.render_view_id, |
134 context.request_id)); | 130 context.request_id)); |
(...skipping 28 matching lines...) Expand all Loading... |
163 } | 159 } |
164 | 160 |
165 void SpeechRecognitionDispatcherHost::OnRecognitionEnd(int session_id) { | 161 void SpeechRecognitionDispatcherHost::OnRecognitionEnd(int session_id) { |
166 const SpeechRecognitionSessionContext& context = | 162 const SpeechRecognitionSessionContext& context = |
167 manager()->GetSessionContext(session_id); | 163 manager()->GetSessionContext(session_id); |
168 Send(new SpeechRecognitionMsg_Ended(context.render_view_id, | 164 Send(new SpeechRecognitionMsg_Ended(context.render_view_id, |
169 context.request_id)); | 165 context.request_id)); |
170 } | 166 } |
171 | 167 |
172 void SpeechRecognitionDispatcherHost::OnRecognitionResult( | 168 void SpeechRecognitionDispatcherHost::OnRecognitionResult( |
173 int session_id, const content::SpeechRecognitionResult& result) { | 169 int session_id, |
| 170 const SpeechRecognitionResult& result) { |
174 const SpeechRecognitionSessionContext& context = | 171 const SpeechRecognitionSessionContext& context = |
175 manager()->GetSessionContext(session_id); | 172 manager()->GetSessionContext(session_id); |
176 Send(new SpeechRecognitionMsg_ResultRetrieved(context.render_view_id, | 173 Send(new SpeechRecognitionMsg_ResultRetrieved(context.render_view_id, |
177 context.request_id, | 174 context.request_id, |
178 result)); | 175 result)); |
179 } | 176 } |
180 | 177 |
181 void SpeechRecognitionDispatcherHost::OnRecognitionError( | 178 void SpeechRecognitionDispatcherHost::OnRecognitionError( |
182 int session_id, const content::SpeechRecognitionError& error) { | 179 int session_id, |
| 180 const SpeechRecognitionError& error) { |
183 const SpeechRecognitionSessionContext& context = | 181 const SpeechRecognitionSessionContext& context = |
184 manager()->GetSessionContext(session_id); | 182 manager()->GetSessionContext(session_id); |
185 Send(new SpeechRecognitionMsg_ErrorOccurred(context.render_view_id, | 183 Send(new SpeechRecognitionMsg_ErrorOccurred(context.render_view_id, |
186 context.request_id, | 184 context.request_id, |
187 error)); | 185 error)); |
188 } | 186 } |
189 | 187 |
190 // The events below are currently not used by speech JS APIs implementation. | 188 // The events below are currently not used by speech JS APIs implementation. |
191 void SpeechRecognitionDispatcherHost::OnAudioLevelsChange( | 189 void SpeechRecognitionDispatcherHost::OnAudioLevelsChange(int session_id, |
192 int session_id, float volume, float noise_volume) {} | 190 float volume, |
| 191 float noise_volume) { |
| 192 } |
| 193 |
193 void SpeechRecognitionDispatcherHost::OnEnvironmentEstimationComplete( | 194 void SpeechRecognitionDispatcherHost::OnEnvironmentEstimationComplete( |
194 int session_id) {} | 195 int session_id) { |
| 196 } |
195 | 197 |
196 } // namespace speech | 198 } // namespace content |
OLD | NEW |