Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(184)

Side by Side Diff: components/test_runner/mock_web_speech_recognizer.cc

Issue 1750213004: Simplify mock web speech recognizer's "onend" handling. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/fast/speech/scripted/speechrecognition-restart-onend.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
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. 111 // Task for tidying up after recognition task has ended.
112 class EndedTask : public MockWebSpeechRecognizer::Task { 112 class EndedTask : public MockWebSpeechRecognizer::Task {
113 public: 113 public:
114 EndedTask(MockWebSpeechRecognizer* mock, 114 EndedTask(MockWebSpeechRecognizer* mock)
115 blink::WebSpeechRecognitionHandle handle) 115 : MockWebSpeechRecognizer::Task(mock) {}
116 : MockWebSpeechRecognizer::Task(mock), handle_(handle) {}
117 116
118 ~EndedTask() override {} 117 ~EndedTask() override {}
119 118
120 void run() override { 119 void run() override {
121 // Reset recognizer's handle if it hasn't been replaced. 120 blink::WebSpeechRecognitionHandle handle = recognizer_->Handle();
122 if (recognizer_->Handle() == handle_) 121 recognizer_->Handle().reset();
123 recognizer_->Handle().reset(); 122 recognizer_->Client()->didEnd(handle);
124 handle_.reset();
125 } 123 }
126 124
127 private: 125 private:
128 blink::WebSpeechRecognitionHandle handle_;
129
130 DISALLOW_COPY_AND_ASSIGN(EndedTask); 126 DISALLOW_COPY_AND_ASSIGN(EndedTask);
131 }; 127 };
132 128
133 } // namespace 129 } // namespace
134 130
135 MockWebSpeechRecognizer::MockWebSpeechRecognizer() 131 MockWebSpeechRecognizer::MockWebSpeechRecognizer()
136 : was_aborted_(false), task_queue_running_(false), delegate_(0) { 132 : was_aborted_(false), task_queue_running_(false), delegate_(0) {
137 } 133 }
138 134
139 MockWebSpeechRecognizer::~MockWebSpeechRecognizer() { 135 MockWebSpeechRecognizer::~MockWebSpeechRecognizer() {
(...skipping 28 matching lines...) Expand all
168 164
169 mock_transcripts_.clear(); 165 mock_transcripts_.clear();
170 mock_confidences_.clear(); 166 mock_confidences_.clear();
171 } else 167 } else
172 task_queue_.push_back(new NoMatchTask(this)); 168 task_queue_.push_back(new NoMatchTask(this));
173 169
174 task_queue_.push_back( 170 task_queue_.push_back(
175 new ClientCallTask(this, &blink::WebSpeechRecognizerClient::didEndSound)); 171 new ClientCallTask(this, &blink::WebSpeechRecognizerClient::didEndSound));
176 task_queue_.push_back( 172 task_queue_.push_back(
177 new ClientCallTask(this, &blink::WebSpeechRecognizerClient::didEndAudio)); 173 new ClientCallTask(this, &blink::WebSpeechRecognizerClient::didEndAudio));
178 task_queue_.push_back( 174 task_queue_.push_back(new EndedTask(this));
179 new ClientCallTask(this, &blink::WebSpeechRecognizerClient::didEnd));
180 task_queue_.push_back(new EndedTask(this, handle_));
181 175
182 StartTaskQueue(); 176 StartTaskQueue();
183 } 177 }
184 178
185 void MockWebSpeechRecognizer::stop( 179 void MockWebSpeechRecognizer::stop(
186 const blink::WebSpeechRecognitionHandle& handle, 180 const blink::WebSpeechRecognitionHandle& handle,
187 blink::WebSpeechRecognizerClient* client) { 181 blink::WebSpeechRecognizerClient* client) {
188 handle_ = handle; 182 handle_ = handle;
189 client_ = client; 183 client_ = client;
190 184
191 // FIXME: Implement. 185 // FIXME: Implement.
192 NOTREACHED(); 186 NOTREACHED();
193 } 187 }
194 188
195 void MockWebSpeechRecognizer::abort( 189 void MockWebSpeechRecognizer::abort(
196 const blink::WebSpeechRecognitionHandle& handle, 190 const blink::WebSpeechRecognitionHandle& handle,
197 blink::WebSpeechRecognizerClient* client) { 191 blink::WebSpeechRecognizerClient* client) {
198 handle_ = handle; 192 handle_ = handle;
199 client_ = client; 193 client_ = client;
200 194
201 ClearTaskQueue(); 195 ClearTaskQueue();
202 was_aborted_ = true; 196 was_aborted_ = true;
203 task_queue_.push_back( 197 task_queue_.push_back(new EndedTask(this));
204 new ClientCallTask(this, &blink::WebSpeechRecognizerClient::didEnd));
205 task_queue_.push_back(new EndedTask(this, handle_));
206 198
207 StartTaskQueue(); 199 StartTaskQueue();
208 } 200 }
209 201
210 void MockWebSpeechRecognizer::AddMockResult(const blink::WebString& transcript, 202 void MockWebSpeechRecognizer::AddMockResult(const blink::WebString& transcript,
211 float confidence) { 203 float confidence) {
212 mock_transcripts_.push_back(transcript); 204 mock_transcripts_.push_back(transcript);
213 mock_confidences_.push_back(confidence); 205 mock_confidences_.push_back(confidence);
214 } 206 }
215 207
(...skipping 16 matching lines...) Expand all
232 code = blink::WebSpeechRecognizerClient::ServiceNotAllowedError; 224 code = blink::WebSpeechRecognizerClient::ServiceNotAllowedError;
233 else if (error == "BadGrammarError") 225 else if (error == "BadGrammarError")
234 code = blink::WebSpeechRecognizerClient::BadGrammarError; 226 code = blink::WebSpeechRecognizerClient::BadGrammarError;
235 else if (error == "LanguageNotSupportedError") 227 else if (error == "LanguageNotSupportedError")
236 code = blink::WebSpeechRecognizerClient::LanguageNotSupportedError; 228 code = blink::WebSpeechRecognizerClient::LanguageNotSupportedError;
237 else 229 else
238 return; 230 return;
239 231
240 ClearTaskQueue(); 232 ClearTaskQueue();
241 task_queue_.push_back(new ErrorTask(this, code, message)); 233 task_queue_.push_back(new ErrorTask(this, code, message));
242 task_queue_.push_back( 234 task_queue_.push_back(new EndedTask(this));
243 new ClientCallTask(this, &blink::WebSpeechRecognizerClient::didEnd));
244 task_queue_.push_back(new EndedTask(this, handle_));
245 235
246 StartTaskQueue(); 236 StartTaskQueue();
247 } 237 }
248 238
249 void MockWebSpeechRecognizer::StartTaskQueue() { 239 void MockWebSpeechRecognizer::StartTaskQueue() {
250 if (task_queue_running_) 240 if (task_queue_running_)
251 return; 241 return;
252 delegate_->PostTask(new StepTask(this)); 242 delegate_->PostTask(new StepTask(this));
253 task_queue_running_ = true; 243 task_queue_running_ = true;
254 } 244 }
(...skipping 19 matching lines...) Expand all
274 264
275 if (object_->task_queue_.empty()) { 265 if (object_->task_queue_.empty()) {
276 object_->task_queue_running_ = false; 266 object_->task_queue_running_ = false;
277 return; 267 return;
278 } 268 }
279 269
280 object_->delegate_->PostTask(new StepTask(object_)); 270 object_->delegate_->PostTask(new StepTask(object_));
281 } 271 }
282 272
283 } // namespace test_runner 273 } // namespace test_runner
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/fast/speech/scripted/speechrecognition-restart-onend.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698