1// Copyright (c) 2012 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/speech/tts_platform.h"
6
7// Chrome OS doesn't have native TTS, instead it includes a built-in
8// component extension that provides speech synthesis. This class includes
9// an implementation of LoadBuiltInTtsExtension and dummy implementations of
10// everything else.
11
12class TtsPlatformImplChromeOs : public TtsPlatformImpl {
13 public:
14  // TtsPlatformImpl overrides:
15  virtual bool PlatformImplAvailable() OVERRIDE {
16    return false;
17  }
18
19  virtual bool LoadBuiltInTtsExtension(
20      content::BrowserContext* browser_context) OVERRIDE {
21    TtsEngineDelegate* tts_engine_delegate =
22        TtsController::GetInstance()->GetTtsEngineDelegate();
23    if (tts_engine_delegate)
24      return tts_engine_delegate->LoadBuiltInTtsExtension(browser_context);
25    return false;
26  }
27
28  virtual bool Speak(
29      int utterance_id,
30      const std::string& utterance,
31      const std::string& lang,
32      const VoiceData& voice,
33      const UtteranceContinuousParameters& params) OVERRIDE {
34    return false;
35  }
36
37  virtual bool StopSpeaking() OVERRIDE {
38    return false;
39  }
40
41  virtual void Pause() OVERRIDE {}
42
43  virtual void Resume() OVERRIDE {}
44
45  virtual bool IsSpeaking() OVERRIDE {
46    return false;
47  }
48
49  virtual void GetVoices(std::vector<VoiceData>* out_voices) OVERRIDE {
50  }
51
52  // Get the single instance of this class.
53  static TtsPlatformImplChromeOs* GetInstance();
54
55 private:
56  TtsPlatformImplChromeOs() {}
57  virtual ~TtsPlatformImplChromeOs() {}
58
59  friend struct DefaultSingletonTraits<TtsPlatformImplChromeOs>;
60
61  DISALLOW_COPY_AND_ASSIGN(TtsPlatformImplChromeOs);
62};
63
64// static
65TtsPlatformImpl* TtsPlatformImpl::GetInstance() {
66  return TtsPlatformImplChromeOs::GetInstance();
67}
68
69// static
70TtsPlatformImplChromeOs*
71TtsPlatformImplChromeOs::GetInstance() {
72  return Singleton<TtsPlatformImplChromeOs>::get();
73}
74