diff -r 000000000000 -r 6474c204b198 netwerk/base/public/nsStreamListenerWrapper.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netwerk/base/public/nsStreamListenerWrapper.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,37 @@ +/* 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 nsStreamListenerWrapper_h__ +#define nsStreamListenerWrapper_h__ + +#include "nsCOMPtr.h" +#include "nsIStreamListener.h" +#include "nsIRequestObserver.h" +#include "nsIThreadRetargetableStreamListener.h" +#include "mozilla/Attributes.h" + +// Wrapper class to make replacement of nsHttpChannel's listener +// from JavaScript possible. It is workaround for bug 433711 and 682305. +class nsStreamListenerWrapper MOZ_FINAL : public nsIStreamListener + , public nsIThreadRetargetableStreamListener +{ +public: + nsStreamListenerWrapper(nsIStreamListener *listener) + : mListener(listener) + { + NS_ASSERTION(mListener, "no stream listener specified"); + } + + NS_DECL_ISUPPORTS + NS_FORWARD_NSIREQUESTOBSERVER(mListener->) + NS_FORWARD_NSISTREAMLISTENER(mListener->) + NS_DECL_NSITHREADRETARGETABLESTREAMLISTENER + +private: + ~nsStreamListenerWrapper() {} + nsCOMPtr mListener; +}; + +#endif // nsStreamListenerWrapper_h__ +