diff -r 000000000000 -r 6474c204b198 netwerk/protocol/res/nsResProtocolHandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netwerk/protocol/res/nsResProtocolHandler.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,50 @@ +/* -*- 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 nsResProtocolHandler_h___ +#define nsResProtocolHandler_h___ + +#include "nsIResProtocolHandler.h" +#include "nsInterfaceHashtable.h" +#include "nsWeakReference.h" +#include "nsStandardURL.h" + +class nsIIOService; +struct ResourceMapping; + +// nsResURL : overrides nsStandardURL::GetFile to provide nsIFile resolution +class nsResURL : public nsStandardURL +{ +public: + nsResURL() : nsStandardURL(true) {} + virtual nsStandardURL* StartClone(); + virtual nsresult EnsureFile(); + NS_IMETHOD GetClassIDNoAlloc(nsCID *aCID); +}; + +class nsResProtocolHandler : public nsIResProtocolHandler, public nsSupportsWeakReference +{ +public: + NS_DECL_THREADSAFE_ISUPPORTS + NS_DECL_NSIPROTOCOLHANDLER + NS_DECL_NSIRESPROTOCOLHANDLER + + nsResProtocolHandler(); + virtual ~nsResProtocolHandler(); + + nsresult Init(); + + void CollectSubstitutions(InfallibleTArray& aResources); + +private: + nsresult Init(nsIFile *aOmniJar); + nsresult AddSpecialDir(const char* aSpecialDir, const nsACString& aSubstitution); + nsInterfaceHashtable mSubstitutions; + nsCOMPtr mIOService; + + friend class nsResURL; +}; + +#endif /* nsResProtocolHandler_h___ */