// Copyright (c) 2012 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_SPEECH_EXTENSION_API_TTS_EXTENSION_API_H_ #define CHROME_BROWSER_SPEECH_EXTENSION_API_TTS_EXTENSION_API_H_ #include #include "chrome/browser/extensions/chrome_extension_function.h" #include "chrome/browser/speech/tts_controller.h" #include "extensions/browser/browser_context_keyed_api_factory.h" namespace content { class BrowserContext; } const char *TtsEventTypeToString(TtsEventType event_type); TtsEventType TtsEventTypeFromString(const std::string& str); namespace extensions { class TtsSpeakFunction : public ChromeAsyncExtensionFunction { private: ~TtsSpeakFunction() override {} bool RunAsync() override; DECLARE_EXTENSION_FUNCTION("tts.speak", TTS_SPEAK) }; class TtsStopSpeakingFunction : public ChromeSyncExtensionFunction { private: ~TtsStopSpeakingFunction() override {} bool RunSync() override; DECLARE_EXTENSION_FUNCTION("tts.stop", TTS_STOP) }; class TtsPauseFunction : public ChromeSyncExtensionFunction { private: ~TtsPauseFunction() override {} bool RunSync() override; DECLARE_EXTENSION_FUNCTION("tts.pause", TTS_PAUSE) }; class TtsResumeFunction : public ChromeSyncExtensionFunction { private: ~TtsResumeFunction() override {} bool RunSync() override; DECLARE_EXTENSION_FUNCTION("tts.resume", TTS_RESUME) }; class TtsIsSpeakingFunction : public ChromeSyncExtensionFunction { private: ~TtsIsSpeakingFunction() override {} bool RunSync() override; DECLARE_EXTENSION_FUNCTION("tts.isSpeaking", TTS_ISSPEAKING) }; class TtsGetVoicesFunction : public ChromeSyncExtensionFunction { private: ~TtsGetVoicesFunction() override {} bool RunSync() override; DECLARE_EXTENSION_FUNCTION("tts.getVoices", TTS_GETVOICES) }; class TtsAPI : public BrowserContextKeyedAPI { public: explicit TtsAPI(content::BrowserContext* context); ~TtsAPI() override; // BrowserContextKeyedAPI implementation. static BrowserContextKeyedAPIFactory* GetFactoryInstance(); private: friend class BrowserContextKeyedAPIFactory; // BrowserContextKeyedAPI implementation. static const char* service_name() { return "TtsAPI"; } static const bool kServiceIsNULLWhileTesting = true; }; } // namespace extensions #endif // CHROME_BROWSER_SPEECH_EXTENSION_API_TTS_EXTENSION_API_H_