diff options
Diffstat (limited to 'netwerk/protocol/wyciwyg/WyciwygChannelChild.h')
-rw-r--r-- | netwerk/protocol/wyciwyg/WyciwygChannelChild.h | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/netwerk/protocol/wyciwyg/WyciwygChannelChild.h b/netwerk/protocol/wyciwyg/WyciwygChannelChild.h new file mode 100644 index 000000000..a712c4692 --- /dev/null +++ b/netwerk/protocol/wyciwyg/WyciwygChannelChild.h @@ -0,0 +1,124 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef mozilla_net_WyciwygChannelChild_h +#define mozilla_net_WyciwygChannelChild_h + +#include "mozilla/net/PWyciwygChannelChild.h" +#include "nsIWyciwygChannel.h" +#include "nsIChannel.h" +#include "nsILoadInfo.h" +#include "PrivateBrowsingChannel.h" + +class nsIProgressEventSink; + +namespace mozilla { +namespace net { + +class ChannelEventQueue; + +// TODO: replace with IPDL states +enum WyciwygChannelChildState { + WCC_NEW, + WCC_INIT, + + // States when reading from the channel + WCC_OPENED, + WCC_ONSTART, + WCC_ONDATA, + WCC_ONSTOP, + + // States when writing to the cache + WCC_ONWRITE, + WCC_ONCLOSED +}; + + +// Header file contents +class WyciwygChannelChild final : public PWyciwygChannelChild + , public nsIWyciwygChannel + , public PrivateBrowsingChannel<WyciwygChannelChild> +{ +public: + NS_DECL_ISUPPORTS + NS_DECL_NSIREQUEST + NS_DECL_NSICHANNEL + NS_DECL_NSIWYCIWYGCHANNEL + + WyciwygChannelChild(); + + void AddIPDLReference(); + void ReleaseIPDLReference(); + + nsresult Init(nsIURI *uri); + + bool IsSuspended(); + +protected: + virtual ~WyciwygChannelChild(); + + bool RecvOnStartRequest(const nsresult& statusCode, + const int64_t& contentLength, + const int32_t& source, + const nsCString& charset, + const nsCString& securityInfo) override; + bool RecvOnDataAvailable(const nsCString& data, + const uint64_t& offset) override; + bool RecvOnStopRequest(const nsresult& statusCode) override; + bool RecvCancelEarly(const nsresult& statusCode) override; + + void OnStartRequest(const nsresult& statusCode, + const int64_t& contentLength, + const int32_t& source, + const nsCString& charset, + const nsCString& securityInfo); + void OnDataAvailable(const nsCString& data, + const uint64_t& offset); + void OnStopRequest(const nsresult& statusCode); + void CancelEarly(const nsresult& statusCode); + + friend class PrivateBrowsingChannel<WyciwygChannelChild>; + +private: + nsresult mStatus; + bool mIsPending; + bool mCanceled; + uint32_t mLoadFlags; + int64_t mContentLength; + int32_t mCharsetSource; + nsCString mCharset; + nsCOMPtr<nsIURI> mURI; + nsCOMPtr<nsIURI> mOriginalURI; + nsCOMPtr<nsISupports> mOwner; + nsCOMPtr<nsILoadInfo> mLoadInfo; + nsCOMPtr<nsIInterfaceRequestor> mCallbacks; + nsCOMPtr<nsIProgressEventSink> mProgressSink; + nsCOMPtr<nsILoadGroup> mLoadGroup; + nsCOMPtr<nsIStreamListener> mListener; + nsCOMPtr<nsISupports> mListenerContext; + nsCOMPtr<nsISupports> mSecurityInfo; + + // FIXME: replace with IPDL states (bug 536319) + enum WyciwygChannelChildState mState; + + bool mIPCOpen; + bool mSentAppData; + RefPtr<ChannelEventQueue> mEventQ; + + friend class WyciwygStartRequestEvent; + friend class WyciwygDataAvailableEvent; + friend class WyciwygStopRequestEvent; + friend class WyciwygCancelEvent; +}; + +inline bool +WyciwygChannelChild::IsSuspended() +{ + return false; +} + +} // namespace net +} // namespace mozilla + +#endif // mozilla_net_WyciwygChannelChild_h |