Line data Source code
1 : /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /* This Source Code Form is subject to the terms of the Mozilla Public
3 : * License, v. 2.0. If a copy of the MPL was not distributed with this
4 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 :
6 : #ifndef nsJSProtocolHandler_h___
7 : #define nsJSProtocolHandler_h___
8 :
9 : #include "mozilla/Attributes.h"
10 : #include "nsIProtocolHandler.h"
11 : #include "nsITextToSubURI.h"
12 : #include "nsIURI.h"
13 : #include "nsIMutable.h"
14 : #include "nsISerializable.h"
15 : #include "nsIClassInfo.h"
16 : #include "nsSimpleURI.h"
17 :
18 : #define NS_JSPROTOCOLHANDLER_CID \
19 : { /* bfc310d2-38a0-11d3-8cd3-0060b0fc14a3 */ \
20 : 0xbfc310d2, \
21 : 0x38a0, \
22 : 0x11d3, \
23 : {0x8c, 0xd3, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \
24 : }
25 :
26 : #define NS_JSURI_CID \
27 : { /* 58f089ee-512a-42d2-a935-d0c874128930 */ \
28 : 0x58f089ee, \
29 : 0x512a, \
30 : 0x42d2, \
31 : {0xa9, 0x35, 0xd0, 0xc8, 0x74, 0x12, 0x89, 0x30} \
32 : }
33 :
34 : #define NS_JSPROTOCOLHANDLER_CONTRACTID \
35 : NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "javascript"
36 :
37 :
38 : class nsJSProtocolHandler : public nsIProtocolHandler
39 : {
40 : public:
41 : NS_DECL_ISUPPORTS
42 :
43 : // nsIProtocolHandler methods:
44 : NS_DECL_NSIPROTOCOLHANDLER
45 :
46 : // nsJSProtocolHandler methods:
47 : nsJSProtocolHandler();
48 :
49 : static nsresult
50 : Create(nsISupports *aOuter, REFNSIID aIID, void **aResult);
51 :
52 : nsresult Init();
53 :
54 : protected:
55 : virtual ~nsJSProtocolHandler();
56 :
57 : nsresult EnsureUTF8Spec(const nsCString& aSpec, const char *aCharset,
58 : nsACString &aUTF8Spec);
59 :
60 : nsCOMPtr<nsITextToSubURI> mTextToSubURI;
61 : };
62 :
63 :
64 : class nsJSURI : public mozilla::net::nsSimpleURI
65 : {
66 : public:
67 : using mozilla::net::nsSimpleURI::Read;
68 : using mozilla::net::nsSimpleURI::Write;
69 :
70 0 : nsJSURI() {}
71 :
72 0 : explicit nsJSURI(nsIURI* aBaseURI) : mBaseURI(aBaseURI) {}
73 :
74 0 : nsIURI* GetBaseURI() const
75 : {
76 0 : return mBaseURI;
77 : }
78 :
79 : NS_DECL_ISUPPORTS_INHERITED
80 :
81 : // nsIURI overrides
82 : virtual mozilla::net::nsSimpleURI* StartClone(RefHandlingEnum refHandlingMode,
83 : const nsACString& newRef) override;
84 :
85 : // nsISerializable overrides
86 : NS_IMETHOD Read(nsIObjectInputStream* aStream) override;
87 : NS_IMETHOD Write(nsIObjectOutputStream* aStream) override;
88 :
89 : // nsIIPCSerializableURI overrides
90 : NS_DECL_NSIIPCSERIALIZABLEURI
91 :
92 : // Override the nsIClassInfo method GetClassIDNoAlloc to make sure our
93 : // nsISerializable impl works right.
94 : NS_IMETHOD GetClassIDNoAlloc(nsCID *aClassIDNoAlloc) override;
95 : //NS_IMETHOD QueryInterface( const nsIID& aIID, void** aInstancePtr );
96 :
97 : protected:
98 0 : virtual ~nsJSURI() {}
99 :
100 : virtual nsresult EqualsInternal(nsIURI* other,
101 : RefHandlingEnum refHandlingMode,
102 : bool* result) override;
103 : private:
104 : nsCOMPtr<nsIURI> mBaseURI;
105 : };
106 :
107 : #endif /* nsJSProtocolHandler_h___ */
|