| // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_TTS_ENGINE_API_H_ |
| #define CHROME_BROWSER_EXTENSIONS_EXTENSION_TTS_ENGINE_API_H_ |
| |
| #include "base/memory/singleton.h" |
| #include "chrome/browser/extensions/extension_function.h" |
| |
| class Extension; |
| class Utterance; |
| |
| namespace base { |
| class ListValue; |
| } |
| |
| // Return a list of all available voices registered by extensions. |
| void GetExtensionVoices(Profile* profile, base::ListValue* result_voices); |
| |
| // Find the first extension with a tts_voices in its |
| // manifest that matches the speech parameters of this utterance. |
| // If found, store a pointer to the extension in |matching_extension| and |
| // the index of the voice within the extension in |voice_index| and |
| // return true. |
| bool GetMatchingExtensionVoice(Utterance* utterance, |
| const Extension** matching_extension, |
| size_t* voice_index); |
| |
| // Speak the given utterance by sending an event to the given TTS engine |
| // extension voice. |
| void ExtensionTtsEngineSpeak(Utterance* utterance, |
| const Extension* extension, |
| size_t voice_index); |
| |
| // Stop speaking the given utterance by sending an event to the extension |
| // associated with this utterance. |
| void ExtensionTtsEngineStop(Utterance* utterance); |
| |
| // Hidden/internal extension function used to allow TTS engine extensions |
| // to send events back to the client that's calling tts.speak(). |
| class ExtensionTtsEngineSendTtsEventFunction : public SyncExtensionFunction { |
| private: |
| virtual ~ExtensionTtsEngineSendTtsEventFunction() {} |
| virtual bool RunImpl() OVERRIDE; |
| DECLARE_EXTENSION_FUNCTION_NAME("ttsEngine.sendTtsEvent") |
| }; |
| |
| #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_TTS_ENGINE_API_H_ |