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