1// Copyright (c) 2010 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/cros/speech_synthesis_library.h"
6
7#include "base/message_loop.h"
8#include "chrome/browser/chromeos/cros/cros_library.h"
9#include "third_party/cros/chromeos_speech_synthesis.h"
10
11namespace chromeos {
12
13// TODO(chaitanyag): rename to "locale" after making equivalent change in
14// Chrome OS code.
15const char SpeechSynthesisLibrary::kSpeechPropertyLocale[] = "name";
16
17const char SpeechSynthesisLibrary::kSpeechPropertyGender[] = "gender";
18const char SpeechSynthesisLibrary::kSpeechPropertyRate[] = "rate";
19const char SpeechSynthesisLibrary::kSpeechPropertyPitch[] = "pitch";
20const char SpeechSynthesisLibrary::kSpeechPropertyVolume[] = "volume";
21const char SpeechSynthesisLibrary::kSpeechPropertyEquals[] = "=";
22const char SpeechSynthesisLibrary::kSpeechPropertyDelimiter[] = ";";
23
24class SpeechSynthesisLibraryImpl : public SpeechSynthesisLibrary {
25 public:
26  SpeechSynthesisLibraryImpl() {}
27  virtual ~SpeechSynthesisLibraryImpl() {}
28
29  bool Speak(const char* text) {
30    return chromeos::Speak(text);
31  }
32
33  bool SetSpeakProperties(const char* props) {
34    return chromeos::SetSpeakProperties(props);
35  }
36
37  bool StopSpeaking() {
38    return chromeos::StopSpeaking();
39  }
40
41  bool IsSpeaking() {
42    return chromeos::IsSpeaking();
43  }
44
45  void InitTts(InitStatusCallback callback) {
46    chromeos::InitTts(callback);
47  }
48
49 private:
50  DISALLOW_COPY_AND_ASSIGN(SpeechSynthesisLibraryImpl);
51};
52
53class SpeechSynthesisLibraryStubImpl : public SpeechSynthesisLibrary {
54 public:
55  SpeechSynthesisLibraryStubImpl() {}
56  virtual ~SpeechSynthesisLibraryStubImpl() {}
57  bool Speak(const char* text) { return true; }
58  bool SetSpeakProperties(const char* props) { return true; }
59  bool StopSpeaking() { return true; }
60  bool IsSpeaking() { return false; }
61  void InitTts(InitStatusCallback callback) {}
62
63 private:
64  DISALLOW_COPY_AND_ASSIGN(SpeechSynthesisLibraryStubImpl);
65};
66
67// static
68SpeechSynthesisLibrary* SpeechSynthesisLibrary::GetImpl(bool stub) {
69  if (stub)
70    return new SpeechSynthesisLibraryStubImpl();
71  else
72    return new SpeechSynthesisLibraryImpl();
73}
74
75}  // namespace chromeos
76