OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_SPEECH_TTS_CONTROLLER_H_ | 5 #ifndef CHROME_BROWSER_SPEECH_TTS_CONTROLLER_H_ |
6 #define CHROME_BROWSER_SPEECH_TTS_CONTROLLER_H_ | 6 #define CHROME_BROWSER_SPEECH_TTS_CONTROLLER_H_ |
7 | 7 |
8 #include <queue> | 8 #include <queue> |
9 #include <set> | 9 #include <set> |
10 #include <string> | 10 #include <string> |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 // If true, the synthesis engine is a remote network resource. | 70 // If true, the synthesis engine is a remote network resource. |
71 // It may be higher latency and may incur bandwidth costs. | 71 // It may be higher latency and may incur bandwidth costs. |
72 bool remote; | 72 bool remote; |
73 | 73 |
74 // If true, this is implemented by this platform's subclass of | 74 // If true, this is implemented by this platform's subclass of |
75 // TtsPlatformImpl. If false, this is implemented by an extension. | 75 // TtsPlatformImpl. If false, this is implemented by an extension. |
76 bool native; | 76 bool native; |
77 std::string native_voice_identifier; | 77 std::string native_voice_identifier; |
78 }; | 78 }; |
79 | 79 |
| 80 // Interface that delegates TTS requests to user-installed extensions. |
| 81 class TtsEngineDelegate { |
| 82 public: |
| 83 virtual ~TtsEngineDelegate() {} |
| 84 |
| 85 // Return a list of all available voices registered. |
| 86 virtual void GetVoices(Profile* profile, |
| 87 std::vector<VoiceData>* out_voices) = 0; |
| 88 |
| 89 // Speak the given utterance by sending an event to the given TTS engine. |
| 90 virtual void Speak(Utterance* utterance, const VoiceData& voice) = 0; |
| 91 |
| 92 // Stop speaking the given utterance by sending an event to the target |
| 93 // associated with this utterance. |
| 94 virtual void Stop(Utterance* utterance) = 0; |
| 95 |
| 96 // Pause in the middle of speaking this utterance. |
| 97 virtual void Pause(Utterance* utterance) = 0; |
| 98 |
| 99 // Resume speaking this utterance. |
| 100 virtual void Resume(Utterance* utterance) = 0; |
| 101 }; |
| 102 |
80 // Class that wants to receive events on utterances. | 103 // Class that wants to receive events on utterances. |
81 class UtteranceEventDelegate { | 104 class UtteranceEventDelegate { |
82 public: | 105 public: |
83 virtual ~UtteranceEventDelegate() {} | 106 virtual ~UtteranceEventDelegate() {} |
84 virtual void OnTtsEvent(Utterance* utterance, | 107 virtual void OnTtsEvent(Utterance* utterance, |
85 TtsEventType event_type, | 108 TtsEventType event_type, |
86 int char_index, | 109 int char_index, |
87 const std::string& error_message) = 0; | 110 const std::string& error_message) = 0; |
88 }; | 111 }; |
89 | 112 |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 // Called by the extension system or platform implementation when the | 313 // Called by the extension system or platform implementation when the |
291 // list of voices may have changed and should be re-queried. | 314 // list of voices may have changed and should be re-queried. |
292 void VoicesChanged(); | 315 void VoicesChanged(); |
293 | 316 |
294 // Add a delegate that wants to be notified when the set of voices changes. | 317 // Add a delegate that wants to be notified when the set of voices changes. |
295 void AddVoicesChangedDelegate(VoicesChangedDelegate* delegate); | 318 void AddVoicesChangedDelegate(VoicesChangedDelegate* delegate); |
296 | 319 |
297 // Remove delegate that wants to be notified when the set of voices changes. | 320 // Remove delegate that wants to be notified when the set of voices changes. |
298 void RemoveVoicesChangedDelegate(VoicesChangedDelegate* delegate); | 321 void RemoveVoicesChangedDelegate(VoicesChangedDelegate* delegate); |
299 | 322 |
| 323 // Set the delegate that processes TTS requests with user-installed |
| 324 // extensions. |
| 325 void SetTtsEngineDelegate(TtsEngineDelegate* delegate); |
| 326 |
300 // For unit testing. | 327 // For unit testing. |
301 void SetPlatformImpl(TtsPlatformImpl* platform_impl); | 328 void SetPlatformImpl(TtsPlatformImpl* platform_impl); |
302 int QueueSize(); | 329 int QueueSize(); |
303 | 330 |
304 protected: | 331 protected: |
305 TtsController(); | 332 TtsController(); |
306 virtual ~TtsController(); | 333 virtual ~TtsController(); |
307 | 334 |
308 private: | 335 private: |
309 // Get the platform TTS implementation (or injected mock). | 336 // Get the platform TTS implementation (or injected mock). |
(...skipping 29 matching lines...) Expand all Loading... |
339 // A queue of utterances to speak after the current one finishes. | 366 // A queue of utterances to speak after the current one finishes. |
340 std::queue<Utterance*> utterance_queue_; | 367 std::queue<Utterance*> utterance_queue_; |
341 | 368 |
342 // A set of delegates that want to be notified when the voices change. | 369 // A set of delegates that want to be notified when the voices change. |
343 std::set<VoicesChangedDelegate*> voices_changed_delegates_; | 370 std::set<VoicesChangedDelegate*> voices_changed_delegates_; |
344 | 371 |
345 // A pointer to the platform implementation of text-to-speech, for | 372 // A pointer to the platform implementation of text-to-speech, for |
346 // dependency injection. | 373 // dependency injection. |
347 TtsPlatformImpl* platform_impl_; | 374 TtsPlatformImpl* platform_impl_; |
348 | 375 |
| 376 // The delegate that processes TTS requests with user-installed extensions. |
| 377 TtsEngineDelegate* tts_engine_delegate_; |
| 378 |
349 DISALLOW_COPY_AND_ASSIGN(TtsController); | 379 DISALLOW_COPY_AND_ASSIGN(TtsController); |
350 }; | 380 }; |
351 | 381 |
352 #endif // CHROME_BROWSER_SPEECH_TTS_CONTROLLER_H_ | 382 #endif // CHROME_BROWSER_SPEECH_TTS_CONTROLLER_H_ |
OLD | NEW |