1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
9 #include "nsISerializable.h"
10 #include "nsISizeOf.h"
11 #include "nsIURIMutator.h"
12 #include "mozilla/net/MozURL.h"
17 class DefaultURI
: public nsIURI
, public nsISerializable
, public nsISizeOf
{
19 NS_DECL_THREADSAFE_ISUPPORTS
21 NS_DECL_NSISERIALIZABLE
23 virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf
) const override
;
24 virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf
) const override
;
26 class Mutator final
: public nsIURIMutator
, public nsISerializable
{
33 Write(nsIObjectOutputStream
* aOutputStream
) override
{
34 MOZ_ASSERT_UNREACHABLE("nsIURIMutator.write() should never be called");
35 return NS_ERROR_NOT_IMPLEMENTED
;
38 [[nodiscard
]] NS_IMETHOD
Read(nsIObjectInputStream
* aStream
) override
;
40 explicit Mutator() = default;
43 virtual ~Mutator() = default;
44 void Init(DefaultURI
* aFrom
) { mMutator
= Some(aFrom
->mURL
->Mutate()); }
46 Maybe
<MozURL::Mutator
> mMutator
;
48 friend class DefaultURI
;
52 virtual ~DefaultURI() = default;
57 } // namespace mozilla
59 #endif // DefaultURI_h__