• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #ifndef CHROME_BROWSER_SPEECH_TTS_PLATFORM_H_
6 #define CHROME_BROWSER_SPEECH_TTS_PLATFORM_H_
7 
8 #include <string>
9 
10 #include "chrome/browser/speech/tts_controller.h"
11 
12 // Abstract class that defines the native platform TTS interface,
13 // subclassed by specific implementations on Win, Mac, etc.
14 class TtsPlatformImpl {
15  public:
16   static TtsPlatformImpl* GetInstance();
17 
18   // Returns true if this platform implementation is supported and available.
19   virtual bool PlatformImplAvailable() = 0;
20 
21   // Some platforms may provide a built-in TTS extension. Returns true
22   // if the extension was not previously loaded and is now loading, and
23   // false if it's already loaded or if there's no extension to load.
24   // Will call TtsController::RetrySpeakingQueuedUtterances when
25   // the extension finishes loading.
26   virtual bool LoadBuiltInTtsExtension(Profile* profile);
27 
28   // Speak the given utterance with the given parameters if possible,
29   // and return true on success. Utterance will always be nonempty.
30   // If rate, pitch, or volume are -1.0, they will be ignored.
31   //
32   // The TtsController will only try to speak one utterance at
33   // a time. If it wants to interrupt speech, it will always call Stop
34   // before speaking again.
35   virtual bool Speak(
36       int utterance_id,
37       const std::string& utterance,
38       const std::string& lang,
39       const VoiceData& voice,
40       const UtteranceContinuousParameters& params) = 0;
41 
42   // Stop speaking immediately and return true on success.
43   virtual bool StopSpeaking() = 0;
44 
45   // Returns whether any speech is on going.
46   virtual bool IsSpeaking() = 0;
47 
48   // Append information about voices provided by this platform implementation
49   // to |out_voices|.
50   virtual void GetVoices(std::vector<VoiceData>* out_voices) = 0;
51 
52   // Pause the current utterance, if any, until a call to Resume,
53   // Speak, or StopSpeaking.
54   virtual void Pause() = 0;
55 
56   // Resume speaking the current utterance, if it was paused.
57   virtual void Resume() = 0;
58 
59   virtual std::string error();
60   virtual void clear_error();
61   virtual void set_error(const std::string& error);
62 
63  protected:
TtsPlatformImpl()64   TtsPlatformImpl() {}
65 
66   // On some platforms this may be a leaky singleton - do not rely on the
67   // destructor being called!  http://crbug.com/122026
~TtsPlatformImpl()68   virtual ~TtsPlatformImpl() {}
69 
70   std::string error_;
71 
72   DISALLOW_COPY_AND_ASSIGN(TtsPlatformImpl);
73 };
74 
75 #endif  // CHROME_BROWSER_SPEECH_TTS_PLATFORM_H_
76