1 /* 2 * Copyright (C) 2012 Google Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 16 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 18 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 20 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 21 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26 #ifndef MockWebSpeechRecognizer_h 27 #define MockWebSpeechRecognizer_h 28 29 #include "TestCommon.h" 30 #include "public/testing/WebTask.h" 31 #include "public/web/WebSpeechRecognizer.h" 32 #include <deque> 33 #include <vector> 34 35 namespace WebKit { 36 class WebSpeechRecognitionHandle; 37 class WebSpeechRecognitionParams; 38 class WebSpeechRecognizerClient; 39 } 40 41 namespace WebTestRunner { 42 43 class WebTestDelegate; 44 45 class MockWebSpeechRecognizer : public WebKit::WebSpeechRecognizer { 46 public: 47 MockWebSpeechRecognizer(); 48 ~MockWebSpeechRecognizer(); 49 50 void setDelegate(WebTestDelegate*); 51 52 // WebSpeechRecognizer implementation: 53 virtual void start(const WebKit::WebSpeechRecognitionHandle&, const WebKit::WebSpeechRecognitionParams&, WebKit::WebSpeechRecognizerClient*) OVERRIDE; 54 virtual void stop(const WebKit::WebSpeechRecognitionHandle&, WebKit::WebSpeechRecognizerClient*) OVERRIDE; 55 virtual void abort(const WebKit::WebSpeechRecognitionHandle&, WebKit::WebSpeechRecognizerClient*) OVERRIDE; 56 57 // Methods accessed by layout tests: 58 void addMockResult(const WebKit::WebString& transcript, float confidence); 59 void setError(const WebKit::WebString& error, const WebKit::WebString& message); 60 bool wasAborted() const { return m_wasAborted; } 61 62 // Methods accessed from Task objects: 63 WebKit::WebSpeechRecognizerClient* client() { return m_client; } 64 WebKit::WebSpeechRecognitionHandle& handle() { return m_handle; } 65 WebTaskList* taskList() { return &m_taskList; } 66 67 class Task { 68 public: 69 Task(MockWebSpeechRecognizer* recognizer) : m_recognizer(recognizer) { } 70 virtual ~Task() { } 71 virtual void run() = 0; 72 protected: 73 MockWebSpeechRecognizer* m_recognizer; 74 }; 75 76 private: 77 void startTaskQueue(); 78 void clearTaskQueue(); 79 80 WebTaskList m_taskList; 81 WebKit::WebSpeechRecognitionHandle m_handle; 82 WebKit::WebSpeechRecognizerClient* m_client; 83 std::vector<WebKit::WebString> m_mockTranscripts; 84 std::vector<float> m_mockConfidences; 85 bool m_wasAborted; 86 87 // Queue of tasks to be run. 88 std::deque<Task*> m_taskQueue; 89 bool m_taskQueueRunning; 90 91 WebTestDelegate* m_delegate; 92 93 // Task for stepping the queue. 94 class StepTask : public WebMethodTask<MockWebSpeechRecognizer> { 95 public: 96 StepTask(MockWebSpeechRecognizer* object) : WebMethodTask<MockWebSpeechRecognizer>(object) { } 97 virtual void runIfValid() OVERRIDE; 98 }; 99 }; 100 101 } 102 103 #endif // MockWebSpeechRecognizer_h 104