summaryrefslogtreecommitdiffstats
path: root/content/shell/renderer/test_runner/MockWebSpeechRecognizer.h
diff options
context:
space:
mode:
Diffstat (limited to 'content/shell/renderer/test_runner/MockWebSpeechRecognizer.h')
-rw-r--r--content/shell/renderer/test_runner/MockWebSpeechRecognizer.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/content/shell/renderer/test_runner/MockWebSpeechRecognizer.h b/content/shell/renderer/test_runner/MockWebSpeechRecognizer.h
new file mode 100644
index 0000000..d249641
--- /dev/null
+++ b/content/shell/renderer/test_runner/MockWebSpeechRecognizer.h
@@ -0,0 +1,84 @@
+// 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 MockWebSpeechRecognizer_h
+#define MockWebSpeechRecognizer_h
+
+#include <deque>
+#include <vector>
+
+#include "content/shell/renderer/test_runner/TestCommon.h"
+#include "content/shell/renderer/test_runner/WebTask.h"
+#include "third_party/WebKit/public/platform/WebNonCopyable.h"
+#include "third_party/WebKit/public/web/WebSpeechRecognizer.h"
+
+namespace blink {
+class WebSpeechRecognitionHandle;
+class WebSpeechRecognitionParams;
+class WebSpeechRecognizerClient;
+}
+
+namespace WebTestRunner {
+
+class WebTestDelegate;
+
+class MockWebSpeechRecognizer : public blink::WebSpeechRecognizer, public blink::WebNonCopyable {
+public:
+ MockWebSpeechRecognizer();
+ ~MockWebSpeechRecognizer();
+
+ void setDelegate(WebTestDelegate*);
+
+ // WebSpeechRecognizer implementation:
+ virtual void start(const blink::WebSpeechRecognitionHandle&, const blink::WebSpeechRecognitionParams&, blink::WebSpeechRecognizerClient*) OVERRIDE;
+ virtual void stop(const blink::WebSpeechRecognitionHandle&, blink::WebSpeechRecognizerClient*) OVERRIDE;
+ virtual void abort(const blink::WebSpeechRecognitionHandle&, blink::WebSpeechRecognizerClient*) OVERRIDE;
+
+ // 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 m_wasAborted; }
+
+ // Methods accessed from Task objects:
+ blink::WebSpeechRecognizerClient* client() { return m_client; }
+ blink::WebSpeechRecognitionHandle& handle() { return m_handle; }
+ WebTaskList* taskList() { return &m_taskList; }
+
+ class Task {
+ public:
+ Task(MockWebSpeechRecognizer* recognizer) : m_recognizer(recognizer) { }
+ virtual ~Task() { }
+ virtual void run() = 0;
+ protected:
+ MockWebSpeechRecognizer* m_recognizer;
+ };
+
+private:
+ void startTaskQueue();
+ void clearTaskQueue();
+
+ WebTaskList m_taskList;
+ blink::WebSpeechRecognitionHandle m_handle;
+ blink::WebSpeechRecognizerClient* m_client;
+ std::vector<blink::WebString> m_mockTranscripts;
+ std::vector<float> m_mockConfidences;
+ bool m_wasAborted;
+
+ // Queue of tasks to be run.
+ std::deque<Task*> m_taskQueue;
+ bool m_taskQueueRunning;
+
+ WebTestDelegate* m_delegate;
+
+ // Task for stepping the queue.
+ class StepTask : public WebMethodTask<MockWebSpeechRecognizer> {
+ public:
+ StepTask(MockWebSpeechRecognizer* object) : WebMethodTask<MockWebSpeechRecognizer>(object) { }
+ virtual void runIfValid() OVERRIDE;
+ };
+};
+
+}
+
+#endif // MockWebSpeechRecognizer_h