Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; 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 RustURL_h__
7 : #define RustURL_h__
8 :
9 : #include "nsISerializable.h"
10 : #include "nsIFileURL.h"
11 : #include "nsIStandardURL.h"
12 : #include "nsIClassInfo.h"
13 : #include "nsISizeOf.h"
14 : #include "nsIIPCSerializableURI.h"
15 : #include "nsISensitiveInfoHiddenURI.h"
16 :
17 : #include "rust-url-capi/src/rust-url-capi.h"
18 : #include "mozilla/UniquePtr.h"
19 :
20 : namespace mozilla {
21 : namespace net {
22 :
23 : class RustURL
24 : : public nsIFileURL
25 : , public nsIStandardURL
26 : , public nsISerializable
27 : , public nsIClassInfo
28 : , public nsISizeOf
29 : , public nsIIPCSerializableURI
30 : , public nsISensitiveInfoHiddenURI
31 : {
32 : NS_DECL_ISUPPORTS
33 : NS_DECL_NSIURI
34 : NS_DECL_NSIURL
35 : NS_DECL_NSIFILEURL
36 : NS_DECL_NSISTANDARDURL
37 : NS_DECL_NSISERIALIZABLE
38 : NS_DECL_NSICLASSINFO
39 : NS_DECL_NSIMUTABLE
40 : NS_DECL_NSIIPCSERIALIZABLEURI
41 : NS_DECL_NSISENSITIVEINFOHIDDENURI
42 :
43 : RustURL();
44 : // nsISizeOf
45 : virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const override;
46 : virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const override;
47 : private:
48 : virtual ~RustURL();
49 :
50 0 : struct FreeRustURL { void operator()(rusturl* aPtr) { rusturl_free(aPtr); } };
51 : mutable mozilla::UniquePtr<rusturl, FreeRustURL> mURL;
52 :
53 : bool mMutable;
54 : };
55 :
56 : } // namespace net
57 : } // namespace mozilla
58 :
59 : #endif // RustURL_h__
|