michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* vim:set ts=2 sw=2 sts=2 et cindent: */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #ifndef mozilla_dom_SpeechSynthesis_h michael@0: #define mozilla_dom_SpeechSynthesis_h michael@0: michael@0: #include "nsCOMPtr.h" michael@0: #include "nsString.h" michael@0: #include "nsWrapperCache.h" michael@0: #include "nsRefPtrHashtable.h" michael@0: #include "js/TypeDecls.h" michael@0: michael@0: #include "SpeechSynthesisUtterance.h" michael@0: #include "SpeechSynthesisVoice.h" michael@0: michael@0: class nsIDOMWindow; michael@0: michael@0: namespace mozilla { michael@0: namespace dom { michael@0: michael@0: class nsSpeechTask; michael@0: michael@0: class SpeechSynthesis MOZ_FINAL : public nsISupports, michael@0: public nsWrapperCache michael@0: { michael@0: public: michael@0: SpeechSynthesis(nsPIDOMWindow* aParent); michael@0: virtual ~SpeechSynthesis(); michael@0: michael@0: NS_DECL_CYCLE_COLLECTING_ISUPPORTS michael@0: NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(SpeechSynthesis) michael@0: michael@0: nsIDOMWindow* GetParentObject() const; michael@0: michael@0: virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE; michael@0: michael@0: bool Pending() const; michael@0: michael@0: bool Speaking() const; michael@0: michael@0: bool Paused() const; michael@0: michael@0: void Speak(SpeechSynthesisUtterance& aUtterance); michael@0: michael@0: void Cancel(); michael@0: michael@0: void Pause(); michael@0: michael@0: void Resume(); michael@0: michael@0: void OnEnd(const nsSpeechTask* aTask); michael@0: michael@0: void GetVoices(nsTArray< nsRefPtr >& aResult); michael@0: michael@0: private: michael@0: michael@0: void AdvanceQueue(); michael@0: michael@0: nsCOMPtr mParent; michael@0: michael@0: nsTArray > mSpeechQueue; michael@0: michael@0: nsRefPtr mCurrentTask; michael@0: michael@0: nsRefPtrHashtable mVoiceCache; michael@0: }; michael@0: michael@0: } // namespace dom michael@0: } // namespace mozilla michael@0: michael@0: #endif