| Index: chrome/browser/speech/tts_controller.h
|
| diff --git a/chrome/browser/speech/tts_controller.h b/chrome/browser/speech/tts_controller.h
|
| index a479a96c69ae4de7b47aa14d20472812c358a247..10044bbac82ee5e95ffb15202b13afc1b5b9872b 100644
|
| --- a/chrome/browser/speech/tts_controller.h
|
| +++ b/chrome/browser/speech/tts_controller.h
|
| @@ -8,16 +8,17 @@
|
| #include <queue>
|
| #include <set>
|
| #include <string>
|
| +#include <vector>
|
|
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/memory/singleton.h"
|
| #include "googleurl/src/gurl.h"
|
|
|
| +class Utterance;
|
| class TtsPlatformImpl;
|
| class Profile;
|
|
|
| namespace base {
|
| -class ListValue;
|
| class Value;
|
| }
|
|
|
| @@ -33,6 +34,9 @@ enum TtsEventType {
|
| TTS_EVENT_ERROR
|
| };
|
|
|
| +// Returns true if this event type is one that indicates an utterance
|
| +// is finished and can be destroyed.
|
| +bool IsFinalTtsEventType(TtsEventType event_type);
|
|
|
| // The continuous parameters that apply to a given utterance.
|
| struct UtteranceContinuousParameters {
|
| @@ -43,6 +47,27 @@ struct UtteranceContinuousParameters {
|
| double volume;
|
| };
|
|
|
| +// Information about one voice.
|
| +struct VoiceData {
|
| + VoiceData();
|
| + ~VoiceData();
|
| +
|
| + std::string name;
|
| + std::string lang;
|
| + std::string gender;
|
| + std::string extension_id;
|
| + std::vector<std::string> events;
|
| +};
|
| +
|
| +// Class that wants to receive events on utterances.
|
| +class UtteranceEventDelegate {
|
| + public:
|
| + virtual ~UtteranceEventDelegate() {}
|
| + virtual void OnTtsEvent(Utterance* utterance,
|
| + TtsEventType event_type,
|
| + int char_index,
|
| + const std::string& error_message) = 0;
|
| +};
|
|
|
| // One speech utterance.
|
| class Utterance {
|
| @@ -125,6 +150,11 @@ class Utterance {
|
| extension_id_ = extension_id;
|
| }
|
|
|
| + UtteranceEventDelegate* event_delegate() const { return event_delegate_; }
|
| + void set_event_delegate(UtteranceEventDelegate* event_delegate) {
|
| + event_delegate_ = event_delegate;
|
| + }
|
| +
|
| // Getters and setters for internal state.
|
| Profile* profile() const { return profile_; }
|
| int id() const { return id_; }
|
| @@ -164,6 +194,11 @@ class Utterance {
|
| // The URL of the page where the source extension called speak.
|
| GURL src_url_;
|
|
|
| + // The delegate to be called when an utterance event is fired.
|
| + // Weak reference; it will be cleared after we fire a "final" event
|
| + // (as determined by IsFinalTtsEventType).
|
| + UtteranceEventDelegate* event_delegate_;
|
| +
|
| // The parsed options.
|
| std::string voice_name_;
|
| std::string lang_;
|
| @@ -180,7 +215,6 @@ class Utterance {
|
| bool finished_;
|
| };
|
|
|
| -
|
| // Singleton class that manages text-to-speech for the TTS and TTS engine
|
| // extension APIs, maintaining a queue of pending utterances and keeping
|
| // track of all state.
|
| @@ -212,7 +246,7 @@ class TtsController {
|
|
|
| // Return a list of all available voices, including the native voice,
|
| // if supported, and all voices registered by extensions.
|
| - base::ListValue* GetVoices(Profile* profile);
|
| + void GetVoices(Profile* profile, std::vector<VoiceData>* out_voices);
|
|
|
| // Called by TtsExtensionLoaderChromeOs::LoadTtsExtension when it
|
| // finishes loading the built-in TTS component extension.
|
|
|