Home | History | Annotate | Download | only in accessibility
      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 #include "chrome/browser/chromeos/accessibility/speech_monitor.h"
      6 
      7 namespace chromeos {
      8 
      9 namespace {
     10 const char kChromeVoxEnabledMessage[] = "chrome vox spoken feedback is ready";
     11 }  // anonymous namespace
     12 
     13 SpeechMonitor::SpeechMonitor() {
     14   TtsController::GetInstance()->SetPlatformImpl(this);
     15 }
     16 
     17 SpeechMonitor::~SpeechMonitor() {
     18   TtsController::GetInstance()->SetPlatformImpl(TtsPlatformImpl::GetInstance());
     19 }
     20 
     21 std::string SpeechMonitor::GetNextUtterance() {
     22   if (utterance_queue_.empty()) {
     23     loop_runner_ = new content::MessageLoopRunner();
     24     loop_runner_->Run();
     25     loop_runner_ = NULL;
     26   }
     27   std::string result = utterance_queue_.front();
     28   utterance_queue_.pop_front();
     29   return result;
     30 }
     31 
     32 bool SpeechMonitor::SkipChromeVoxEnabledMessage() {
     33   return GetNextUtterance() == kChromeVoxEnabledMessage;
     34 }
     35 
     36 bool SpeechMonitor::PlatformImplAvailable() {
     37   return true;
     38 }
     39 
     40 bool SpeechMonitor::Speak(
     41     int utterance_id,
     42     const std::string& utterance,
     43     const std::string& lang,
     44     const VoiceData& voice,
     45     const UtteranceContinuousParameters& params) {
     46   TtsController::GetInstance()->OnTtsEvent(
     47       utterance_id,
     48       TTS_EVENT_END,
     49       static_cast<int>(utterance.size()),
     50       std::string());
     51   return true;
     52 }
     53 
     54 bool SpeechMonitor::StopSpeaking() {
     55   return true;
     56 }
     57 
     58 bool SpeechMonitor::IsSpeaking() {
     59   return false;
     60 }
     61 
     62 void SpeechMonitor::GetVoices(std::vector<VoiceData>* out_voices) {
     63   out_voices->push_back(VoiceData());
     64   VoiceData& voice = out_voices->back();
     65   voice.native = true;
     66   voice.name = "SpeechMonitor";
     67   voice.events.insert(TTS_EVENT_END);
     68 }
     69 
     70 std::string SpeechMonitor::error() {
     71   return "";
     72 }
     73 
     74 void SpeechMonitor::WillSpeakUtteranceWithVoice(const Utterance* utterance,
     75                                                 const VoiceData& voice_data) {
     76   utterance_queue_.push_back(utterance->text());
     77   if (loop_runner_.get())
     78     loop_runner_->Quit();
     79 }
     80 
     81 }  // namespace chromeos
     82