forked from mirrors/gecko-dev
		
	This also changes URIUtils.cpp:DeserializeURI() to use the mutator to instantiate new URIs, instead of using their default constructor. MozReview-Commit-ID: JQOvIquuQAP --HG-- extra : rebase_source : e146624c5ae423f7f69a738aaaafaa55dd0940d9
		
			
				
	
	
		
			124 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/* -*- 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 nsJSProtocolHandler_h___
 | 
						|
#define nsJSProtocolHandler_h___
 | 
						|
 | 
						|
#include "mozilla/Attributes.h"
 | 
						|
#include "nsIProtocolHandler.h"
 | 
						|
#include "nsITextToSubURI.h"
 | 
						|
#include "nsIURI.h"
 | 
						|
#include "nsIMutable.h"
 | 
						|
#include "nsISerializable.h"
 | 
						|
#include "nsIClassInfo.h"
 | 
						|
#include "nsSimpleURI.h"
 | 
						|
 | 
						|
#define NS_JSPROTOCOLHANDLER_CID                     \
 | 
						|
{ /* bfc310d2-38a0-11d3-8cd3-0060b0fc14a3 */         \
 | 
						|
    0xbfc310d2,                                      \
 | 
						|
    0x38a0,                                          \
 | 
						|
    0x11d3,                                          \
 | 
						|
    {0x8c, 0xd3, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \
 | 
						|
}
 | 
						|
 | 
						|
#define NS_JSURI_CID                                 \
 | 
						|
{ /* 58f089ee-512a-42d2-a935-d0c874128930 */         \
 | 
						|
    0x58f089ee,                                      \
 | 
						|
    0x512a,                                          \
 | 
						|
    0x42d2,                                          \
 | 
						|
    {0xa9, 0x35, 0xd0, 0xc8, 0x74, 0x12, 0x89, 0x30} \
 | 
						|
}
 | 
						|
 | 
						|
#define NS_JSPROTOCOLHANDLER_CONTRACTID \
 | 
						|
    NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "javascript"
 | 
						|
 | 
						|
 | 
						|
class nsJSProtocolHandler : public nsIProtocolHandler
 | 
						|
{
 | 
						|
public:
 | 
						|
    NS_DECL_ISUPPORTS
 | 
						|
 | 
						|
    // nsIProtocolHandler methods:
 | 
						|
    NS_DECL_NSIPROTOCOLHANDLER
 | 
						|
 | 
						|
    // nsJSProtocolHandler methods:
 | 
						|
    nsJSProtocolHandler();
 | 
						|
 | 
						|
    static nsresult
 | 
						|
    Create(nsISupports *aOuter, REFNSIID aIID, void **aResult);
 | 
						|
 | 
						|
    nsresult Init();
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual ~nsJSProtocolHandler();
 | 
						|
 | 
						|
    nsresult EnsureUTF8Spec(const nsCString& aSpec, const char *aCharset,
 | 
						|
                            nsACString &aUTF8Spec);
 | 
						|
 | 
						|
    nsCOMPtr<nsITextToSubURI>  mTextToSubURI;
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
class nsJSURI : public mozilla::net::nsSimpleURI
 | 
						|
{
 | 
						|
public:
 | 
						|
    using mozilla::net::nsSimpleURI::Read;
 | 
						|
    using mozilla::net::nsSimpleURI::Write;
 | 
						|
 | 
						|
    nsJSURI() {}
 | 
						|
 | 
						|
    explicit nsJSURI(nsIURI* aBaseURI) : mBaseURI(aBaseURI) {}
 | 
						|
 | 
						|
    nsIURI* GetBaseURI() const
 | 
						|
    {
 | 
						|
        return mBaseURI;
 | 
						|
    }
 | 
						|
 | 
						|
    NS_DECL_ISUPPORTS_INHERITED
 | 
						|
 | 
						|
    // nsIURI overrides
 | 
						|
    virtual mozilla::net::nsSimpleURI* StartClone(RefHandlingEnum refHandlingMode,
 | 
						|
                                                  const nsACString& newRef) override;
 | 
						|
    NS_IMETHOD Mutate(nsIURIMutator * *_retval) override;
 | 
						|
 | 
						|
    // nsISerializable overrides
 | 
						|
    NS_IMETHOD Read(nsIObjectInputStream* aStream) override;
 | 
						|
    NS_IMETHOD Write(nsIObjectOutputStream* aStream) override;
 | 
						|
 | 
						|
    // nsIIPCSerializableURI overrides
 | 
						|
    NS_DECL_NSIIPCSERIALIZABLEURI
 | 
						|
 | 
						|
    // Override the nsIClassInfo method GetClassIDNoAlloc to make sure our
 | 
						|
    // nsISerializable impl works right.
 | 
						|
    NS_IMETHOD GetClassIDNoAlloc(nsCID *aClassIDNoAlloc) override;
 | 
						|
    //NS_IMETHOD QueryInterface( const nsIID& aIID, void** aInstancePtr );
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual ~nsJSURI() {}
 | 
						|
 | 
						|
    virtual nsresult EqualsInternal(nsIURI* other,
 | 
						|
                                    RefHandlingEnum refHandlingMode,
 | 
						|
                                    bool* result) override;
 | 
						|
private:
 | 
						|
    nsCOMPtr<nsIURI> mBaseURI;
 | 
						|
 | 
						|
public:
 | 
						|
    class Mutator
 | 
						|
        : public nsIURIMutator
 | 
						|
        , public BaseURIMutator<nsJSURI>
 | 
						|
    {
 | 
						|
        NS_DECL_ISUPPORTS
 | 
						|
        NS_FORWARD_SAFE_NSIURISETTERS(mURI)
 | 
						|
        NS_DEFINE_NSIMUTATOR_COMMON
 | 
						|
 | 
						|
        explicit Mutator() { }
 | 
						|
    private:
 | 
						|
        virtual ~Mutator() { }
 | 
						|
 | 
						|
        friend class nsJSURI;
 | 
						|
    };
 | 
						|
};
 | 
						|
 | 
						|
#endif /* nsJSProtocolHandler_h___ */
 |