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_EXTENSION_API_TTS_EXTENSION_API_H_
6#define CHROME_BROWSER_SPEECH_EXTENSION_API_TTS_EXTENSION_API_H_
7
8#include <string>
9
10#include "chrome/browser/extensions/chrome_extension_function.h"
11#include "chrome/browser/speech/tts_controller.h"
12#include "extensions/browser/browser_context_keyed_api_factory.h"
13
14namespace content {
15class BrowserContext;
16}
17
18const char *TtsEventTypeToString(TtsEventType event_type);
19TtsEventType TtsEventTypeFromString(const std::string& str);
20
21namespace extensions {
22
23class TtsSpeakFunction : public ChromeAsyncExtensionFunction {
24 private:
25  virtual ~TtsSpeakFunction() {}
26  virtual bool RunAsync() OVERRIDE;
27  DECLARE_EXTENSION_FUNCTION("tts.speak", TTS_SPEAK)
28};
29
30class TtsStopSpeakingFunction : public ChromeSyncExtensionFunction {
31 private:
32  virtual ~TtsStopSpeakingFunction() {}
33  virtual bool RunSync() OVERRIDE;
34  DECLARE_EXTENSION_FUNCTION("tts.stop", TTS_STOP)
35};
36
37class TtsPauseFunction : public ChromeSyncExtensionFunction {
38 private:
39  virtual ~TtsPauseFunction() {}
40  virtual bool RunSync() OVERRIDE;
41  DECLARE_EXTENSION_FUNCTION("tts.pause", TTS_PAUSE)
42};
43
44class TtsResumeFunction : public ChromeSyncExtensionFunction {
45 private:
46  virtual ~TtsResumeFunction() {}
47  virtual bool RunSync() OVERRIDE;
48  DECLARE_EXTENSION_FUNCTION("tts.resume", TTS_RESUME)
49};
50
51class TtsIsSpeakingFunction : public ChromeSyncExtensionFunction {
52 private:
53  virtual ~TtsIsSpeakingFunction() {}
54  virtual bool RunSync() OVERRIDE;
55  DECLARE_EXTENSION_FUNCTION("tts.isSpeaking", TTS_ISSPEAKING)
56};
57
58class TtsGetVoicesFunction : public ChromeSyncExtensionFunction {
59 private:
60  virtual ~TtsGetVoicesFunction() {}
61  virtual bool RunSync() OVERRIDE;
62  DECLARE_EXTENSION_FUNCTION("tts.getVoices", TTS_GETVOICES)
63};
64
65class TtsAPI : public BrowserContextKeyedAPI {
66 public:
67  explicit TtsAPI(content::BrowserContext* context);
68  virtual ~TtsAPI();
69
70  // BrowserContextKeyedAPI implementation.
71  static BrowserContextKeyedAPIFactory<TtsAPI>* GetFactoryInstance();
72
73 private:
74  friend class BrowserContextKeyedAPIFactory<TtsAPI>;
75
76  // BrowserContextKeyedAPI implementation.
77  static const char* service_name() {
78    return "TtsAPI";
79  }
80  static const bool kServiceIsNULLWhileTesting = true;
81};
82
83}  // namespace extensions
84
85#endif  // CHROME_BROWSER_SPEECH_EXTENSION_API_TTS_EXTENSION_API_H_
86