diff -r 000000000000 -r 6474c204b198 netwerk/protocol/about/nsAboutProtocolHandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netwerk/protocol/about/nsAboutProtocolHandler.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,76 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* 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 nsAboutProtocolHandler_h___ +#define nsAboutProtocolHandler_h___ + +#include "nsIProtocolHandler.h" +#include "nsSimpleNestedURI.h" +#include "mozilla/Attributes.h" + +class nsIURI; + +class nsAboutProtocolHandler : public nsIProtocolHandler +{ +public: + NS_DECL_ISUPPORTS + + // nsIProtocolHandler methods: + NS_DECL_NSIPROTOCOLHANDLER + + // nsAboutProtocolHandler methods: + nsAboutProtocolHandler() {} + virtual ~nsAboutProtocolHandler() {} +}; + +class nsSafeAboutProtocolHandler MOZ_FINAL : public nsIProtocolHandler +{ +public: + NS_DECL_ISUPPORTS + + // nsIProtocolHandler methods: + NS_DECL_NSIPROTOCOLHANDLER + + // nsSafeAboutProtocolHandler methods: + nsSafeAboutProtocolHandler() {} + +private: + ~nsSafeAboutProtocolHandler() {} +}; + + +// Class to allow us to propagate the base URI to about:blank correctly +class nsNestedAboutURI : public nsSimpleNestedURI { +public: + nsNestedAboutURI(nsIURI* aInnerURI, nsIURI* aBaseURI) + : nsSimpleNestedURI(aInnerURI) + , mBaseURI(aBaseURI) + {} + + // For use only from deserialization + nsNestedAboutURI() : nsSimpleNestedURI() {} + + virtual ~nsNestedAboutURI() {} + + // Override QI so we can QI to our CID as needed + NS_IMETHOD QueryInterface(REFNSIID aIID, void** aInstancePtr); + + // Override StartClone(), the nsISerializable methods, and + // GetClassIDNoAlloc; this last is needed to make our nsISerializable impl + // work right. + virtual nsSimpleURI* StartClone(RefHandlingEnum aRefHandlingMode); + NS_IMETHOD Read(nsIObjectInputStream* aStream); + NS_IMETHOD Write(nsIObjectOutputStream* aStream); + NS_IMETHOD GetClassIDNoAlloc(nsCID *aClassIDNoAlloc); + + nsIURI* GetBaseURI() const { + return mBaseURI; + } + +protected: + nsCOMPtr mBaseURI; +}; + +#endif /* nsAboutProtocolHandler_h___ */