OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "components/test_runner/mock_web_speech_recognizer.h" | 5 #include "components/test_runner/mock_web_speech_recognizer.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 recognizer_->Handle(), message_, code_); | 101 recognizer_->Handle(), message_, code_); |
102 } | 102 } |
103 | 103 |
104 private: | 104 private: |
105 blink::WebSpeechRecognizerClient::ErrorCode code_; | 105 blink::WebSpeechRecognizerClient::ErrorCode code_; |
106 blink::WebString message_; | 106 blink::WebString message_; |
107 | 107 |
108 DISALLOW_COPY_AND_ASSIGN(ErrorTask); | 108 DISALLOW_COPY_AND_ASSIGN(ErrorTask); |
109 }; | 109 }; |
110 | 110 |
| 111 // Task for tidying up after recognition task has ended. |
| 112 class EndedTask : public MockWebSpeechRecognizer::Task { |
| 113 public: |
| 114 EndedTask(MockWebSpeechRecognizer* mock, |
| 115 blink::WebSpeechRecognitionHandle handle) |
| 116 : MockWebSpeechRecognizer::Task(mock), handle_(handle) {} |
| 117 |
| 118 ~EndedTask() override {} |
| 119 |
| 120 void run() override { |
| 121 // Reset recognizer's handle if it hasn't been replaced. |
| 122 if (recognizer_->Handle() == handle_) |
| 123 recognizer_->Handle().reset(); |
| 124 handle_.reset(); |
| 125 } |
| 126 |
| 127 private: |
| 128 blink::WebSpeechRecognitionHandle handle_; |
| 129 |
| 130 DISALLOW_COPY_AND_ASSIGN(EndedTask); |
| 131 }; |
| 132 |
111 } // namespace | 133 } // namespace |
112 | 134 |
113 MockWebSpeechRecognizer::MockWebSpeechRecognizer() | 135 MockWebSpeechRecognizer::MockWebSpeechRecognizer() |
114 : was_aborted_(false), task_queue_running_(false), delegate_(0) { | 136 : was_aborted_(false), task_queue_running_(false), delegate_(0) { |
115 } | 137 } |
116 | 138 |
117 MockWebSpeechRecognizer::~MockWebSpeechRecognizer() { | 139 MockWebSpeechRecognizer::~MockWebSpeechRecognizer() { |
118 ClearTaskQueue(); | 140 ClearTaskQueue(); |
119 } | 141 } |
120 | 142 |
(...skipping 27 matching lines...) Expand all Loading... |
148 mock_confidences_.clear(); | 170 mock_confidences_.clear(); |
149 } else | 171 } else |
150 task_queue_.push_back(new NoMatchTask(this)); | 172 task_queue_.push_back(new NoMatchTask(this)); |
151 | 173 |
152 task_queue_.push_back( | 174 task_queue_.push_back( |
153 new ClientCallTask(this, &blink::WebSpeechRecognizerClient::didEndSound)); | 175 new ClientCallTask(this, &blink::WebSpeechRecognizerClient::didEndSound)); |
154 task_queue_.push_back( | 176 task_queue_.push_back( |
155 new ClientCallTask(this, &blink::WebSpeechRecognizerClient::didEndAudio)); | 177 new ClientCallTask(this, &blink::WebSpeechRecognizerClient::didEndAudio)); |
156 task_queue_.push_back( | 178 task_queue_.push_back( |
157 new ClientCallTask(this, &blink::WebSpeechRecognizerClient::didEnd)); | 179 new ClientCallTask(this, &blink::WebSpeechRecognizerClient::didEnd)); |
| 180 task_queue_.push_back(new EndedTask(this, handle_)); |
158 | 181 |
159 StartTaskQueue(); | 182 StartTaskQueue(); |
160 } | 183 } |
161 | 184 |
162 void MockWebSpeechRecognizer::stop( | 185 void MockWebSpeechRecognizer::stop( |
163 const blink::WebSpeechRecognitionHandle& handle, | 186 const blink::WebSpeechRecognitionHandle& handle, |
164 blink::WebSpeechRecognizerClient* client) { | 187 blink::WebSpeechRecognizerClient* client) { |
165 handle_ = handle; | 188 handle_ = handle; |
166 client_ = client; | 189 client_ = client; |
167 | 190 |
168 // FIXME: Implement. | 191 // FIXME: Implement. |
169 NOTREACHED(); | 192 NOTREACHED(); |
170 } | 193 } |
171 | 194 |
172 void MockWebSpeechRecognizer::abort( | 195 void MockWebSpeechRecognizer::abort( |
173 const blink::WebSpeechRecognitionHandle& handle, | 196 const blink::WebSpeechRecognitionHandle& handle, |
174 blink::WebSpeechRecognizerClient* client) { | 197 blink::WebSpeechRecognizerClient* client) { |
175 handle_ = handle; | 198 handle_ = handle; |
176 client_ = client; | 199 client_ = client; |
177 | 200 |
178 ClearTaskQueue(); | 201 ClearTaskQueue(); |
179 was_aborted_ = true; | 202 was_aborted_ = true; |
180 task_queue_.push_back( | 203 task_queue_.push_back( |
181 new ClientCallTask(this, &blink::WebSpeechRecognizerClient::didEnd)); | 204 new ClientCallTask(this, &blink::WebSpeechRecognizerClient::didEnd)); |
| 205 task_queue_.push_back(new EndedTask(this, handle_)); |
| 206 |
182 StartTaskQueue(); | 207 StartTaskQueue(); |
183 } | 208 } |
184 | 209 |
185 void MockWebSpeechRecognizer::AddMockResult(const blink::WebString& transcript, | 210 void MockWebSpeechRecognizer::AddMockResult(const blink::WebString& transcript, |
186 float confidence) { | 211 float confidence) { |
187 mock_transcripts_.push_back(transcript); | 212 mock_transcripts_.push_back(transcript); |
188 mock_confidences_.push_back(confidence); | 213 mock_confidences_.push_back(confidence); |
189 } | 214 } |
190 | 215 |
191 void MockWebSpeechRecognizer::SetError(const blink::WebString& error, | 216 void MockWebSpeechRecognizer::SetError(const blink::WebString& error, |
(...skipping 17 matching lines...) Expand all Loading... |
209 code = blink::WebSpeechRecognizerClient::BadGrammarError; | 234 code = blink::WebSpeechRecognizerClient::BadGrammarError; |
210 else if (error == "LanguageNotSupportedError") | 235 else if (error == "LanguageNotSupportedError") |
211 code = blink::WebSpeechRecognizerClient::LanguageNotSupportedError; | 236 code = blink::WebSpeechRecognizerClient::LanguageNotSupportedError; |
212 else | 237 else |
213 return; | 238 return; |
214 | 239 |
215 ClearTaskQueue(); | 240 ClearTaskQueue(); |
216 task_queue_.push_back(new ErrorTask(this, code, message)); | 241 task_queue_.push_back(new ErrorTask(this, code, message)); |
217 task_queue_.push_back( | 242 task_queue_.push_back( |
218 new ClientCallTask(this, &blink::WebSpeechRecognizerClient::didEnd)); | 243 new ClientCallTask(this, &blink::WebSpeechRecognizerClient::didEnd)); |
| 244 task_queue_.push_back(new EndedTask(this, handle_)); |
| 245 |
219 StartTaskQueue(); | 246 StartTaskQueue(); |
220 } | 247 } |
221 | 248 |
222 void MockWebSpeechRecognizer::StartTaskQueue() { | 249 void MockWebSpeechRecognizer::StartTaskQueue() { |
223 if (task_queue_running_) | 250 if (task_queue_running_) |
224 return; | 251 return; |
225 delegate_->PostTask(new StepTask(this)); | 252 delegate_->PostTask(new StepTask(this)); |
226 task_queue_running_ = true; | 253 task_queue_running_ = true; |
227 } | 254 } |
228 | 255 |
(...skipping 18 matching lines...) Expand all Loading... |
247 | 274 |
248 if (object_->task_queue_.empty()) { | 275 if (object_->task_queue_.empty()) { |
249 object_->task_queue_running_ = false; | 276 object_->task_queue_running_ = false; |
250 return; | 277 return; |
251 } | 278 } |
252 | 279 |
253 object_->delegate_->PostTask(new StepTask(object_)); | 280 object_->delegate_->PostTask(new StepTask(object_)); |
254 } | 281 } |
255 | 282 |
256 } // namespace test_runner | 283 } // namespace test_runner |
OLD | NEW |