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