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 MockWebSpeechInputController_h 27#define MockWebSpeechInputController_h 28 29#include "TestCommon.h" 30#include "public/platform/WebRect.h" 31#include "public/testing/WebTask.h" 32#include "public/web/WebSpeechInputController.h" 33#include "public/web/WebSpeechInputResult.h" 34#include <map> 35#include <string> 36#include <vector> 37 38namespace WebKit { 39class WebSecurityOrigin; 40class WebSpeechInputListener; 41class WebString; 42} 43 44namespace WebTestRunner { 45 46class WebTestDelegate; 47 48class MockWebSpeechInputController : public WebKit::WebSpeechInputController { 49public: 50 explicit MockWebSpeechInputController(WebKit::WebSpeechInputListener*); 51 ~MockWebSpeechInputController(); 52 53 void addMockRecognitionResult(const WebKit::WebString& result, double confidence, const WebKit::WebString& language); 54 void setDumpRect(bool); 55 void clearResults(); 56 void setDelegate(WebTestDelegate*); 57 58 // WebSpeechInputController implementation: 59 virtual bool startRecognition(int requestId, const WebKit::WebRect& elementRect, const WebKit::WebString& language, const WebKit::WebString& grammar, const WebKit::WebSecurityOrigin&) OVERRIDE; 60 virtual void cancelRecognition(int requestId) OVERRIDE; 61 virtual void stopRecording(int requestId) OVERRIDE; 62 63 WebTaskList* taskList() { return &m_taskList; } 64 65private: 66 void speechTaskFired(); 67 68 class SpeechTask : public WebMethodTask<MockWebSpeechInputController> { 69 public: 70 SpeechTask(MockWebSpeechInputController*); 71 void stop(); 72 73 private: 74 virtual void runIfValid() OVERRIDE; 75 }; 76 77 WebKit::WebSpeechInputListener* m_listener; 78 79 WebTaskList m_taskList; 80 SpeechTask* m_speechTask; 81 82 bool m_recording; 83 int m_requestId; 84 WebKit::WebRect m_requestRect; 85 std::string m_language; 86 87 std::map<std::string, std::vector<WebKit::WebSpeechInputResult> > m_recognitionResults; 88 std::vector<WebKit::WebSpeechInputResult> m_resultsForEmptyLanguage; 89 bool m_dumpRect; 90 91 WebTestDelegate* m_delegate; 92}; 93 94} 95 96#endif // MockWebSpeechInputController_h 97