summaryrefslogtreecommitdiffstats
path: root/netwerk/protocol/wyciwyg/WyciwygChannelChild.h
diff options
context:
space:
mode:
Diffstat (limited to 'netwerk/protocol/wyciwyg/WyciwygChannelChild.h')
-rw-r--r--netwerk/protocol/wyciwyg/WyciwygChannelChild.h124
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