1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_SPEECH_MONITOR_H_ 6 #define CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_SPEECH_MONITOR_H_ 7 8 #include <deque> 9 10 #include "base/memory/ref_counted.h" 11 #include "chrome/browser/speech/tts_platform.h" 12 #include "content/public/test/test_utils.h" 13 14 namespace chromeos { 15 16 // For testing purpose installs itself as the platform speech synthesis engine, 17 // allowing it to intercept all speech calls, and then provides a method to 18 // block until the next utterance is spoken. 19 class SpeechMonitor : public TtsPlatformImpl { 20 public: 21 SpeechMonitor(); 22 virtual ~SpeechMonitor(); 23 24 // Blocks until the next utterance is spoken, and returns its text. 25 std::string GetNextUtterance(); 26 27 // Wait for next utterance and return true if next utterance is ChromeVox 28 // enabled message. 29 bool SkipChromeVoxEnabledMessage(); 30 31 // TtsPlatformImpl implementation. 32 virtual bool PlatformImplAvailable() OVERRIDE; 33 virtual bool Speak( 34 int utterance_id, 35 const std::string& utterance, 36 const std::string& lang, 37 const VoiceData& voice, 38 const UtteranceContinuousParameters& params) OVERRIDE; 39 virtual bool StopSpeaking() OVERRIDE; 40 virtual bool IsSpeaking() OVERRIDE; 41 virtual void GetVoices(std::vector<VoiceData>* out_voices) OVERRIDE; Pause()42 virtual void Pause() OVERRIDE {} Resume()43 virtual void Resume() OVERRIDE {} 44 virtual std::string error() OVERRIDE; clear_error()45 virtual void clear_error() OVERRIDE {} set_error(const std::string & error)46 virtual void set_error(const std::string& error) OVERRIDE {} 47 virtual void WillSpeakUtteranceWithVoice( 48 const Utterance* utterance, const VoiceData& voice_data) OVERRIDE; 49 50 private: 51 scoped_refptr<content::MessageLoopRunner> loop_runner_; 52 std::deque<std::string> utterance_queue_; 53 54 DISALLOW_COPY_AND_ASSIGN(SpeechMonitor); 55 }; 56 57 } // namespace chromeos 58 59 #endif // CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_SPEECH_MONITOR_H_ 60