- Moves URIParams Serialization to a different interface - Moves SizeOfIncludingThis to a different interface Differential Revision: https://phabricator.services.mozilla.com/D285809
65 lines
1.7 KiB
C++
65 lines
1.7 KiB
C++
/* 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 SubstitutingURL_h
|
|
#define SubstitutingURL_h
|
|
|
|
#include "nsStandardURL.h"
|
|
|
|
class nsIIOService;
|
|
|
|
namespace mozilla {
|
|
namespace net {
|
|
|
|
// SubstitutingURL : overrides nsStandardURL::GetFile to provide nsIFile
|
|
// resolution
|
|
class SubstitutingURL : public nsStandardURL {
|
|
public:
|
|
NS_DECL_ISUPPORTS_INHERITED
|
|
virtual nsStandardURL* StartClone() override;
|
|
[[nodiscard]] virtual nsresult EnsureFile() override;
|
|
|
|
private:
|
|
explicit SubstitutingURL() : nsStandardURL(true) {}
|
|
explicit SubstitutingURL(bool aSupportsFileURL) : nsStandardURL(true) {
|
|
MOZ_ASSERT(aSupportsFileURL);
|
|
}
|
|
virtual nsresult Clone(nsIURI** aURI) override {
|
|
return nsStandardURL::Clone(aURI);
|
|
}
|
|
virtual ~SubstitutingURL() = default;
|
|
|
|
public:
|
|
class Mutator : public TemplatedMutator<SubstitutingURL> {
|
|
NS_DECL_ISUPPORTS
|
|
public:
|
|
explicit Mutator() = default;
|
|
|
|
private:
|
|
virtual ~Mutator() = default;
|
|
|
|
SubstitutingURL* Create() override { return new SubstitutingURL(); }
|
|
};
|
|
|
|
NS_IMETHOD Mutate(nsIURIMutator** aMutator) override {
|
|
RefPtr<SubstitutingURL::Mutator> mutator = new SubstitutingURL::Mutator();
|
|
nsresult rv = mutator->InitFromURI(this);
|
|
if (NS_FAILED(rv)) {
|
|
return rv;
|
|
}
|
|
mutator.forget(aMutator);
|
|
return NS_OK;
|
|
}
|
|
|
|
virtual void Serialize(ipc::URIParams& aParams) override;
|
|
|
|
friend BaseURIMutator<SubstitutingURL>;
|
|
friend TemplatedMutator<SubstitutingURL>;
|
|
};
|
|
|
|
} // namespace net
|
|
} // namespace mozilla
|
|
|
|
#endif /* SubstitutingURL_h */
|