зеркало из https://github.com/mozilla/gecko-dev.git
67 строки
1.8 KiB
C++
67 строки
1.8 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* 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;
|
|
}
|
|
|
|
NS_IMETHOD_(void) Serialize(ipc::URIParams& aParams) override;
|
|
|
|
friend BaseURIMutator<SubstitutingURL>;
|
|
friend TemplatedMutator<SubstitutingURL>;
|
|
};
|
|
|
|
} // namespace net
|
|
} // namespace mozilla
|
|
|
|
#endif /* SubstitutingURL_h */
|