1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/base/src/nsDOMDataChannel.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,114 @@ 1.4 +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1.5 +/* vim: set sw=2 ts=8 et tw=80 : */ 1.6 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.7 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.8 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.9 + 1.10 +#ifndef nsDOMDataChannel_h 1.11 +#define nsDOMDataChannel_h 1.12 + 1.13 +#include "mozilla/Attributes.h" 1.14 +#include "mozilla/DOMEventTargetHelper.h" 1.15 +#include "mozilla/dom/DataChannelBinding.h" 1.16 +#include "mozilla/dom/TypedArray.h" 1.17 +#include "mozilla/net/DataChannelListener.h" 1.18 +#include "nsIDOMDataChannel.h" 1.19 +#include "nsIInputStream.h" 1.20 + 1.21 + 1.22 +namespace mozilla { 1.23 +class DataChannel; 1.24 +}; 1.25 + 1.26 +class nsDOMDataChannel : public mozilla::DOMEventTargetHelper, 1.27 + public nsIDOMDataChannel, 1.28 + public mozilla::DataChannelListener 1.29 +{ 1.30 +public: 1.31 + nsDOMDataChannel(already_AddRefed<mozilla::DataChannel>& aDataChannel, 1.32 + nsPIDOMWindow* aWindow); 1.33 + ~nsDOMDataChannel(); 1.34 + 1.35 + nsresult Init(nsPIDOMWindow* aDOMWindow); 1.36 + 1.37 + NS_DECL_ISUPPORTS_INHERITED 1.38 + NS_DECL_NSIDOMDATACHANNEL 1.39 + 1.40 + NS_REALLY_FORWARD_NSIDOMEVENTTARGET(mozilla::DOMEventTargetHelper) 1.41 + 1.42 + NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsDOMDataChannel, 1.43 + mozilla::DOMEventTargetHelper) 1.44 + 1.45 + virtual JSObject* WrapObject(JSContext* aCx) 1.46 + MOZ_OVERRIDE; 1.47 + nsPIDOMWindow* GetParentObject() const 1.48 + { 1.49 + return GetOwner(); 1.50 + } 1.51 + 1.52 + // WebIDL 1.53 + // Uses XPIDL GetLabel. 1.54 + bool Reliable() const; 1.55 + mozilla::dom::RTCDataChannelState ReadyState() const; 1.56 + uint32_t BufferedAmount() const; 1.57 + IMPL_EVENT_HANDLER(open) 1.58 + IMPL_EVENT_HANDLER(error) 1.59 + IMPL_EVENT_HANDLER(close) 1.60 + // Uses XPIDL Close. 1.61 + IMPL_EVENT_HANDLER(message) 1.62 + mozilla::dom::RTCDataChannelType BinaryType() const 1.63 + { 1.64 + return static_cast<mozilla::dom::RTCDataChannelType>( 1.65 + static_cast<int>(mBinaryType)); 1.66 + } 1.67 + void SetBinaryType(mozilla::dom::RTCDataChannelType aType) 1.68 + { 1.69 + mBinaryType = static_cast<DataChannelBinaryType>( 1.70 + static_cast<int>(aType)); 1.71 + } 1.72 + void Send(const nsAString& aData, mozilla::ErrorResult& aRv); 1.73 + void Send(nsIDOMBlob* aData, mozilla::ErrorResult& aRv); 1.74 + void Send(const mozilla::dom::ArrayBuffer& aData, mozilla::ErrorResult& aRv); 1.75 + void Send(const mozilla::dom::ArrayBufferView& aData, 1.76 + mozilla::ErrorResult& aRv); 1.77 + 1.78 + // Uses XPIDL GetProtocol. 1.79 + bool Ordered() const; 1.80 + uint16_t Id() const; 1.81 + uint16_t Stream() const; // deprecated 1.82 + 1.83 + nsresult 1.84 + DoOnMessageAvailable(const nsACString& aMessage, bool aBinary); 1.85 + 1.86 + virtual nsresult 1.87 + OnMessageAvailable(nsISupports* aContext, const nsACString& aMessage) MOZ_OVERRIDE; 1.88 + 1.89 + virtual nsresult 1.90 + OnBinaryMessageAvailable(nsISupports* aContext, const nsACString& aMessage) MOZ_OVERRIDE; 1.91 + 1.92 + virtual nsresult OnSimpleEvent(nsISupports* aContext, const nsAString& aName); 1.93 + 1.94 + virtual nsresult 1.95 + OnChannelConnected(nsISupports* aContext) MOZ_OVERRIDE; 1.96 + 1.97 + virtual nsresult 1.98 + OnChannelClosed(nsISupports* aContext) MOZ_OVERRIDE; 1.99 + 1.100 + virtual void 1.101 + AppReady(); 1.102 + 1.103 +private: 1.104 + void Send(nsIInputStream* aMsgStream, const nsACString& aMsgString, 1.105 + uint32_t aMsgLength, bool aIsBinary, mozilla::ErrorResult& aRv); 1.106 + 1.107 + // Owning reference 1.108 + nsRefPtr<mozilla::DataChannel> mDataChannel; 1.109 + nsString mOrigin; 1.110 + enum DataChannelBinaryType { 1.111 + DC_BINARY_TYPE_ARRAYBUFFER, 1.112 + DC_BINARY_TYPE_BLOB, 1.113 + }; 1.114 + DataChannelBinaryType mBinaryType; 1.115 +}; 1.116 + 1.117 +#endif // nsDOMDataChannel_h