summaryrefslogtreecommitdiff
path: root/Source/WebCore/Modules/mediastream/RTCDTMFSender.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/Modules/mediastream/RTCDTMFSender.h')
-rw-r--r--Source/WebCore/Modules/mediastream/RTCDTMFSender.h69
1 files changed, 27 insertions, 42 deletions
diff --git a/Source/WebCore/Modules/mediastream/RTCDTMFSender.h b/Source/WebCore/Modules/mediastream/RTCDTMFSender.h
index 0e6b49d32..c67b3a164 100644
--- a/Source/WebCore/Modules/mediastream/RTCDTMFSender.h
+++ b/Source/WebCore/Modules/mediastream/RTCDTMFSender.h
@@ -23,78 +23,63 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef RTCDTMFSender_h
-#define RTCDTMFSender_h
+#pragma once
-#if ENABLE(MEDIA_STREAM)
+#if ENABLE(WEB_RTC)
#include "ActiveDOMObject.h"
#include "EventTarget.h"
-#include "RTCDTMFSenderHandlerClient.h"
+#include "ExceptionOr.h"
#include "ScriptWrappable.h"
#include "Timer.h"
-#include <wtf/RefCounted.h>
namespace WebCore {
class MediaStreamTrack;
-class RTCPeerConnectionHandler;
-class RTCDTMFSenderHandler;
-class RTCDTMFSender final : public RefCounted<RTCDTMFSender>, public ScriptWrappable, public EventTargetWithInlineData, public RTCDTMFSenderHandlerClient, public ActiveDOMObject {
+class RTCDTMFSender final : public RefCounted<RTCDTMFSender>, public EventTargetWithInlineData, public ActiveDOMObject {
public:
- static PassRefPtr<RTCDTMFSender> create(ScriptExecutionContext*, RTCPeerConnectionHandler*, PassRefPtr<MediaStreamTrack>, ExceptionCode&);
- ~RTCDTMFSender();
+ virtual ~RTCDTMFSender();
bool canInsertDTMF() const;
MediaStreamTrack* track() const;
String toneBuffer() const;
- long duration() const { return m_duration; }
- long interToneGap() const { return m_interToneGap; }
+ int duration() const { return m_duration; }
+ int interToneGap() const { return m_interToneGap; }
- void insertDTMF(const String& tones, ExceptionCode&);
- void insertDTMF(const String& tones, long duration, ExceptionCode&);
- void insertDTMF(const String& tones, long duration, long interToneGap, ExceptionCode&);
+ ExceptionOr<void> insertDTMF(const String& tones, std::optional<int> duration, std::optional<int> interToneGap);
- DEFINE_ATTRIBUTE_EVENT_LISTENER(tonechange);
+ using RefCounted::ref;
+ using RefCounted::deref;
- // EventTarget
- virtual EventTargetInterface eventTargetInterface() const override { return RTCDTMFSenderEventTargetInterfaceType; }
- virtual ScriptExecutionContext* scriptExecutionContext() const override { return ActiveDOMObject::scriptExecutionContext(); }
-
- // ActiveDOMObject
- virtual void stop() override;
+private:
+ RTCDTMFSender(ScriptExecutionContext&, RefPtr<MediaStreamTrack>&&);
- using RefCounted<RTCDTMFSender>::ref;
- using RefCounted<RTCDTMFSender>::deref;
+ void stop() final;
+ const char* activeDOMObjectName() const final;
+ bool canSuspendForDocumentSuspension() const final;
-private:
- RTCDTMFSender(ScriptExecutionContext*, PassRefPtr<MediaStreamTrack>, std::unique_ptr<RTCDTMFSenderHandler>);
+ EventTargetInterface eventTargetInterface() const final { return RTCDTMFSenderEventTargetInterfaceType; }
+ ScriptExecutionContext* scriptExecutionContext() const final { return ActiveDOMObject::scriptExecutionContext(); }
- void scheduleDispatchEvent(PassRefPtr<Event>);
- void scheduledEventTimerFired(Timer<RTCDTMFSender>*);
+ void refEventTarget() final { ref(); }
+ void derefEventTarget() final { deref(); }
- // EventTarget
- virtual void refEventTarget() override { ref(); }
- virtual void derefEventTarget() override { deref(); }
+ void didPlayTone(const String&);
- // RTCDTMFSenderHandlerClient
- virtual void didPlayTone(const String&) override;
+ void scheduleDispatchEvent(Ref<Event>&&);
+ void scheduledEventTimerFired();
RefPtr<MediaStreamTrack> m_track;
- long m_duration;
- long m_interToneGap;
-
- std::unique_ptr<RTCDTMFSenderHandler> m_handler;
+ int m_duration;
+ int m_interToneGap;
bool m_stopped;
- Timer<RTCDTMFSender> m_scheduledEventTimer;
- Vector<RefPtr<Event>> m_scheduledEvents;
+ Timer m_scheduledEventTimer;
+ Vector<Ref<Event>> m_scheduledEvents;
};
} // namespace WebCore
-#endif // ENABLE(MEDIA_STREAM)
-
-#endif // RTCDTMFSender_h
+#endif // ENABLE(WEB_RTC)