Index: content/shell/renderer/test_runner/mock_web_speech_recognizer.h |
diff --git a/content/shell/renderer/test_runner/mock_web_speech_recognizer.h b/content/shell/renderer/test_runner/mock_web_speech_recognizer.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9c9f5e632dc04b794624a3fc56258ad3c28a958b |
--- /dev/null |
+++ b/content/shell/renderer/test_runner/mock_web_speech_recognizer.h |
@@ -0,0 +1,98 @@ |
+// Copyright 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CONTENT_SHELL_RENDERER_TEST_RUNNER_MOCK_WEB_SPEECH_RECOGNIZER_H_ |
+#define CONTENT_SHELL_RENDERER_TEST_RUNNER_MOCK_WEB_SPEECH_RECOGNIZER_H_ |
+ |
+#include <deque> |
+#include <vector> |
+ |
+#include "base/basictypes.h" |
+#include "content/shell/renderer/test_runner/TestCommon.h" |
+#include "content/shell/renderer/test_runner/WebTask.h" |
+#include "third_party/WebKit/public/web/WebSpeechRecognizer.h" |
+ |
+namespace blink { |
+class WebSpeechRecognitionHandle; |
+class WebSpeechRecognitionParams; |
+class WebSpeechRecognizerClient; |
+} |
+ |
+namespace content { |
+ |
+class WebTestDelegate; |
+ |
+class MockWebSpeechRecognizer : public blink::WebSpeechRecognizer { |
+ public: |
+ MockWebSpeechRecognizer(); |
+ virtual ~MockWebSpeechRecognizer(); |
+ |
+ void SetDelegate(WebTestDelegate* delegate); |
+ |
+ // WebSpeechRecognizer implementation: |
+ virtual void start(const blink::WebSpeechRecognitionHandle& handle, |
+ const blink::WebSpeechRecognitionParams& params, |
+ blink::WebSpeechRecognizerClient* client); |
+ virtual void stop(const blink::WebSpeechRecognitionHandle& handle, |
+ blink::WebSpeechRecognizerClient* client); |
+ virtual void abort(const blink::WebSpeechRecognitionHandle& handle, |
+ blink::WebSpeechRecognizerClient* client); |
+ |
+ // Methods accessed by layout tests: |
+ void AddMockResult(const blink::WebString& transcript, float confidence); |
+ void SetError(const blink::WebString& error, const blink::WebString& message); |
+ bool WasAborted() const { return was_aborted_; } |
+ |
+ // Methods accessed from Task objects: |
+ blink::WebSpeechRecognizerClient* Client() { return client_; } |
+ blink::WebSpeechRecognitionHandle& Handle() { return handle_; } |
+ WebTaskList* mutable_task_list() { return &task_list_; } |
+ |
+ class Task { |
+ public: |
+ Task(MockWebSpeechRecognizer* recognizer) : recognizer_(recognizer) {} |
+ virtual ~Task() {} |
+ virtual void run() = 0; |
+ |
+ protected: |
+ MockWebSpeechRecognizer* recognizer_; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(Task); |
+ }; |
+ |
+ private: |
+ void StartTaskQueue(); |
+ void ClearTaskQueue(); |
+ |
+ WebTaskList task_list_; |
+ blink::WebSpeechRecognitionHandle handle_; |
+ blink::WebSpeechRecognizerClient* client_; |
+ std::vector<blink::WebString> mock_transcripts_; |
+ std::vector<float> mock_confidences_; |
+ bool was_aborted_; |
+ |
+ // Queue of tasks to be run. |
+ std::deque<Task*> task_queue_; |
+ bool task_queue_running_; |
+ |
+ WebTestDelegate* delegate_; |
+ |
+ // Task for stepping the queue. |
+ class StepTask : public WebMethodTask<MockWebSpeechRecognizer> { |
+ public: |
+ StepTask(MockWebSpeechRecognizer* object) |
+ : WebMethodTask<MockWebSpeechRecognizer>(object) {} |
+ virtual void runIfValid() OVERRIDE; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(StepTask); |
+ }; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(MockWebSpeechRecognizer); |
+}; |
+ |
+} // namespace content |
+ |
+#endif // CONTENT_SHELL_RENDERER_TEST_RUNNER_MOCK_WEB_SPEECH_RECOGNIZER_H_ |