| Index: Source/modules/mediastream/RTCDataChannel.h
|
| diff --git a/Source/modules/mediastream/RTCDataChannel.h b/Source/modules/mediastream/RTCDataChannel.h
|
| index f9a85b0ee98dad49ddd54d5dfff28254d5e34145..f9bfdfc0143d5989a5be4071ccb08b9a59509660 100644
|
| --- a/Source/modules/mediastream/RTCDataChannel.h
|
| +++ b/Source/modules/mediastream/RTCDataChannel.h
|
| @@ -27,10 +27,13 @@
|
|
|
| #include "bindings/v8/ScriptWrappable.h"
|
| #include "core/events/EventTarget.h"
|
| +#include "core/fileapi/FileError.h"
|
| +#include "core/fileapi/FileReaderLoaderClient.h"
|
| #include "platform/Timer.h"
|
| #include "platform/heap/Handle.h"
|
| #include "public/platform/WebRTCDataChannelHandler.h"
|
| #include "public/platform/WebRTCDataChannelHandlerClient.h"
|
| +#include "wtf/Deque.h"
|
| #include "wtf/RefCounted.h"
|
|
|
| namespace blink {
|
| @@ -42,9 +45,11 @@ struct WebRTCDataChannelInit;
|
| namespace WebCore {
|
|
|
| class Blob;
|
| +class BlobDataHandle;
|
| class ExceptionState;
|
| +class FileReaderLoader;
|
|
|
| -class RTCDataChannel FINAL : public RefCounted<RTCDataChannel>, public ScriptWrappable, public EventTargetWithInlineData, public blink::WebRTCDataChannelHandlerClient {
|
| +class RTCDataChannel FINAL : public RefCounted<RTCDataChannel>, public ScriptWrappable, public EventTargetWithInlineData, public blink::WebRTCDataChannelHandlerClient, public FileReaderLoaderClient {
|
| REFCOUNTED_EVENT_TARGET(RTCDataChannel);
|
| public:
|
| static PassRefPtr<RTCDataChannel> create(ExecutionContext*, PassOwnPtr<blink::WebRTCDataChannelHandler>);
|
| @@ -86,12 +91,20 @@ public:
|
| virtual const AtomicString& interfaceName() const OVERRIDE;
|
| virtual ExecutionContext* executionContext() const OVERRIDE;
|
|
|
| + // FileReaderLoaderClient functions.
|
| + virtual void didStartLoading() OVERRIDE;
|
| + virtual void didReceiveData() OVERRIDE;
|
| + virtual void didFinishLoading() OVERRIDE;
|
| + virtual void didFail(FileError::ErrorCode) OVERRIDE;
|
| +
|
| private:
|
| RTCDataChannel(ExecutionContext*, PassOwnPtr<blink::WebRTCDataChannelHandler>);
|
|
|
| void scheduleDispatchEvent(PassRefPtrWillBeRawPtr<Event>);
|
| void scheduledEventTimerFired(Timer<RTCDataChannel>*);
|
|
|
| + void processOutgoingBlobQueue();
|
| +
|
| ExecutionContext* m_executionContext;
|
|
|
| // blink::WebRTCDataChannelHandlerClient
|
| @@ -112,6 +125,16 @@ private:
|
| };
|
| BinaryType m_binaryType;
|
|
|
| + enum BlobLoaderStatus {
|
| + BlobLoaderNotStarted,
|
| + BlobLoaderStarted,
|
| + BlobLoaderFinished,
|
| + BlobLoaderFailed
|
| + };
|
| + OwnPtr<FileReaderLoader> m_blobLoader;
|
| + Deque<RefPtr<BlobDataHandle> > m_outgoingBlobQueue;
|
| + BlobLoaderStatus m_blobLoaderStatus;
|
| +
|
| Timer<RTCDataChannel> m_scheduledEventTimer;
|
| WillBePersistentHeapVector<RefPtrWillBeMember<Event> > m_scheduledEvents;
|
| };
|
|
|