PlatformSpeechSynthesizer.h [plain text]
#ifndef PlatformSpeechSynthesizer_h
#define PlatformSpeechSynthesizer_h
#if ENABLE(SPEECH_SYNTHESIS)
#include "PlatformSpeechSynthesisVoice.h"
#include <wtf/Vector.h>
#if PLATFORM(COCOA)
#include <wtf/RetainPtr.h>
OBJC_CLASS WebSpeechSynthesisWrapper;
#endif
#if PLATFORM(EFL)
namespace WebCore {
class PlatformSpeechSynthesisProviderEfl;
}
#endif
namespace WebCore {
enum SpeechBoundary {
SpeechWordBoundary,
SpeechSentenceBoundary
};
class PlatformSpeechSynthesisUtterance;
class PlatformSpeechSynthesizerClient {
public:
virtual void didStartSpeaking(PassRefPtr<PlatformSpeechSynthesisUtterance>) = 0;
virtual void didFinishSpeaking(PassRefPtr<PlatformSpeechSynthesisUtterance>) = 0;
virtual void didPauseSpeaking(PassRefPtr<PlatformSpeechSynthesisUtterance>) = 0;
virtual void didResumeSpeaking(PassRefPtr<PlatformSpeechSynthesisUtterance>) = 0;
virtual void speakingErrorOccurred(PassRefPtr<PlatformSpeechSynthesisUtterance>) = 0;
virtual void boundaryEventOccurred(PassRefPtr<PlatformSpeechSynthesisUtterance>, SpeechBoundary, unsigned charIndex) = 0;
virtual void voicesDidChange() = 0;
protected:
virtual ~PlatformSpeechSynthesizerClient() { }
};
class WEBCORE_EXPORT PlatformSpeechSynthesizer {
public:
WEBCORE_EXPORT explicit PlatformSpeechSynthesizer(PlatformSpeechSynthesizerClient*);
WEBCORE_EXPORT virtual ~PlatformSpeechSynthesizer();
const Vector<RefPtr<PlatformSpeechSynthesisVoice>>& voiceList() const;
virtual void speak(PassRefPtr<PlatformSpeechSynthesisUtterance>);
virtual void pause();
virtual void resume();
virtual void cancel();
PlatformSpeechSynthesizerClient* client() const { return m_speechSynthesizerClient; }
protected:
Vector<RefPtr<PlatformSpeechSynthesisVoice>> m_voiceList;
private:
virtual void initializeVoiceList();
bool m_voiceListIsInitialized;
PlatformSpeechSynthesizerClient* m_speechSynthesizerClient;
#if PLATFORM(COCOA)
RetainPtr<WebSpeechSynthesisWrapper> m_platformSpeechWrapper;
#endif
#if PLATFORM(EFL)
std::unique_ptr<PlatformSpeechSynthesisProviderEfl> m_platformSpeechWrapper;
#endif
};
}
#endif // ENABLE(SPEECH_SYNTHESIS)
#endif // PlatformSpeechSynthesizer_h