12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/speech/tts_platform.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Chrome OS doesn't have native TTS, instead it includes a built-in 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// component extension that provides speech synthesis. This class includes 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// an implementation of LoadBuiltInTtsExtension and dummy implementations of 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// everything else. 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class TtsPlatformImplChromeOs : public TtsPlatformImpl { 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // TtsPlatformImpl overrides: 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool PlatformImplAvailable() OVERRIDE { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return false; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual bool LoadBuiltInTtsExtension( 206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) content::BrowserContext* browser_context) OVERRIDE { 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) TtsEngineDelegate* tts_engine_delegate = 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) TtsController::GetInstance()->GetTtsEngineDelegate(); 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (tts_engine_delegate) 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return tts_engine_delegate->LoadBuiltInTtsExtension(browser_context); 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return false; 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool Speak( 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int utterance_id, 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& utterance, 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& lang, 32a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) const VoiceData& voice, 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const UtteranceContinuousParameters& params) OVERRIDE { 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return false; 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool StopSpeaking() OVERRIDE { 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return false; 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 41868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual void Pause() OVERRIDE {} 42868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 43868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual void Resume() OVERRIDE {} 44868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool IsSpeaking() OVERRIDE { 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return false; 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 49a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) virtual void GetVoices(std::vector<VoiceData>* out_voices) OVERRIDE { 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Get the single instance of this class. 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static TtsPlatformImplChromeOs* GetInstance(); 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TtsPlatformImplChromeOs() {} 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~TtsPlatformImplChromeOs() {} 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) friend struct DefaultSingletonTraits<TtsPlatformImplChromeOs>; 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TtsPlatformImplChromeOs); 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TtsPlatformImpl* TtsPlatformImpl::GetInstance() { 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return TtsPlatformImplChromeOs::GetInstance(); 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TtsPlatformImplChromeOs* 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TtsPlatformImplChromeOs::GetInstance() { 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return Singleton<TtsPlatformImplChromeOs>::get(); 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 74