15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CONTENT_SHELL_RENDERER_TEST_RUNNER_MOCK_WEB_SPEECH_RECOGNIZER_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_SHELL_RENDERER_TEST_RUNNER_MOCK_WEB_SPEECH_RECOGNIZER_H_ 73240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 83240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch#include <deque> 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include <vector> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/shell/renderer/test_runner/web_task.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/WebKit/public/web/WebSpeechRecognizer.h" 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace blink { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebSpeechRecognitionHandle; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebSpeechRecognitionParams; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebSpeechRecognizerClient; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 223240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebTestDelegate; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockWebSpeechRecognizer : public blink::WebSpeechRecognizer { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MockWebSpeechRecognizer(); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~MockWebSpeechRecognizer(); 29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetDelegate(WebTestDelegate* delegate); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // WebSpeechRecognizer implementation: 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void start(const blink::WebSpeechRecognitionHandle& handle, 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const blink::WebSpeechRecognitionParams& params, 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) blink::WebSpeechRecognizerClient* client); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void stop(const blink::WebSpeechRecognitionHandle& handle, 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) blink::WebSpeechRecognizerClient* client); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void abort(const blink::WebSpeechRecognitionHandle& handle, 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) blink::WebSpeechRecognizerClient* client); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Methods accessed by layout tests: 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void AddMockResult(const blink::WebString& transcript, float confidence); 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void SetError(const blink::WebString& error, const blink::WebString& message); 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) bool WasAborted() const { return was_aborted_; } 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Methods accessed from Task objects: 47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebSpeechRecognizerClient* Client() { return client_; } 48a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) blink::WebSpeechRecognitionHandle& Handle() { return handle_; } 49a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) WebTaskList* mutable_task_list() { return &task_list_; } 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) class Task { 523240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch public: 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Task(MockWebSpeechRecognizer* recognizer) : recognizer_(recognizer) {} 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~Task() {} 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void run() = 0; 563240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MockWebSpeechRecognizer* recognizer_; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(Task); 623240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch }; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 64 private: 65 void StartTaskQueue(); 66 void ClearTaskQueue(); 67 68 WebTaskList task_list_; 69 blink::WebSpeechRecognitionHandle handle_; 70 blink::WebSpeechRecognizerClient* client_; 71 std::vector<blink::WebString> mock_transcripts_; 72 std::vector<float> mock_confidences_; 73 bool was_aborted_; 74 75 // Queue of tasks to be run. 76 std::deque<Task*> task_queue_; 77 bool task_queue_running_; 78 79 WebTestDelegate* delegate_; 80 81 // Task for stepping the queue. 82 class StepTask : public WebMethodTask<MockWebSpeechRecognizer> { 83 public: 84 StepTask(MockWebSpeechRecognizer* object) 85 : WebMethodTask<MockWebSpeechRecognizer>(object) {} 86 virtual void RunIfValid() OVERRIDE; 87 88 private: 89 DISALLOW_COPY_AND_ASSIGN(StepTask); 90 }; 91 92 DISALLOW_COPY_AND_ASSIGN(MockWebSpeechRecognizer); 93}; 94 95} // namespace content 96 97#endif // CONTENT_SHELL_RENDERER_TEST_RUNNER_MOCK_WEB_SPEECH_RECOGNIZER_H_ 98