mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-07 18:04:46 +00:00
Backed out 2 changesets (bug 1722925) for causing reftest failures in color_quads. CLOSED TREE
Backed out changeset 95a6eacbef27 (bug 1722925) Backed out changeset 2e2a98aeca5c (bug 1722925)
This commit is contained in:
parent
c4ff1ff63e
commit
32090542c0
@ -67,12 +67,12 @@ nsChromeProtocolHandler::GetProtocolFlags(uint32_t* result) {
|
||||
// by standard URLs, so there is no "outer" given to CreateInstance
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIURI> surl;
|
||||
rv =
|
||||
NS_MutateURI(new mozilla::net::nsStandardURL::Mutator())
|
||||
.Apply(&nsIStandardURLMutator::Init, nsIStandardURL::URLTYPE_STANDARD,
|
||||
-1, aSpec, aCharset, aBaseURI, nullptr)
|
||||
|
||||
.Finalize(surl);
|
||||
nsCOMPtr<nsIURI> base(aBaseURI);
|
||||
rv = NS_MutateURI(new mozilla::net::nsStandardURL::Mutator())
|
||||
.Apply(NS_MutatorMethod(&nsIStandardURLMutator::Init,
|
||||
nsIStandardURL::URLTYPE_STANDARD, -1,
|
||||
nsCString(aSpec), aCharset, base, nullptr))
|
||||
.Finalize(surl);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
@ -468,8 +468,8 @@ nsresult DragDataProducer::GetImageData(imgIContainer* aImage,
|
||||
mimeInfo->GetPrimaryExtension(primaryExtension);
|
||||
if (!primaryExtension.IsEmpty()) {
|
||||
rv = NS_MutateURI(imgUrl)
|
||||
.Apply(&nsIURLMutator::SetFileExtension, primaryExtension,
|
||||
nullptr)
|
||||
.Apply(NS_MutatorMethod(&nsIURLMutator::SetFileExtension,
|
||||
primaryExtension, nullptr))
|
||||
.Finalize(imgUrl);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
@ -646,8 +646,8 @@ static nsresult AppendImagePromise(nsITransferable* aTransferable,
|
||||
mimeInfo->GetPrimaryExtension(primaryExtension);
|
||||
if (!primaryExtension.IsEmpty()) {
|
||||
rv = NS_MutateURI(imgUri)
|
||||
.Apply(&nsIURLMutator::SetFileExtension, primaryExtension,
|
||||
nullptr)
|
||||
.Apply(NS_MutatorMethod(&nsIURLMutator::SetFileExtension,
|
||||
primaryExtension, nullptr))
|
||||
.Finalize(imgUrl);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
@ -868,7 +868,7 @@ BlobURLProtocolHandler::GetFlagsForURI(nsIURI* aURI, uint32_t* aResult) {
|
||||
|
||||
return NS_MutateURI(new BlobURL::Mutator())
|
||||
.SetSpec(aSpec)
|
||||
.Apply(&nsIBlobURLMutator::SetRevoked, revoked)
|
||||
.Apply(NS_MutatorMethod(&nsIBlobURLMutator::SetRevoked, revoked))
|
||||
.Finalize(aResult);
|
||||
}
|
||||
|
||||
|
@ -1150,7 +1150,7 @@ nsJSProtocolHandler::GetProtocolFlags(uint32_t* result) {
|
||||
|
||||
NS_MutateURI mutator(new nsJSURI::Mutator());
|
||||
nsCOMPtr<nsIURI> base(aBaseURI);
|
||||
mutator.Apply(&nsIJSURIMutator::SetBase, base);
|
||||
mutator.Apply(NS_MutatorMethod(&nsIJSURIMutator::SetBase, base));
|
||||
if (!aCharset || !nsCRT::strcasecmp("UTF-8", aCharset)) {
|
||||
mutator.SetSpec(aSpec);
|
||||
} else {
|
||||
|
@ -2064,11 +2064,11 @@ nsresult nsWebBrowserPersist::CalculateUniqueFilename(
|
||||
|
||||
// Resync the URI with the file after the extension has been appended
|
||||
return NS_MutateURI(aURI)
|
||||
.Apply(&nsIFileURLMutator::SetFile, localFile)
|
||||
.Apply(NS_MutatorMethod(&nsIFileURLMutator::SetFile, localFile))
|
||||
.Finalize(aOutURI);
|
||||
}
|
||||
return NS_MutateURI(url)
|
||||
.Apply(&nsIURLMutator::SetFileName, filename, nullptr)
|
||||
.Apply(NS_MutatorMethod(&nsIURLMutator::SetFileName, filename, nullptr))
|
||||
.Finalize(aOutURI);
|
||||
}
|
||||
|
||||
@ -2217,11 +2217,12 @@ nsresult nsWebBrowserPersist::CalculateAndAppendFileExt(
|
||||
|
||||
// Resync the URI with the file after the extension has been appended
|
||||
return NS_MutateURI(url)
|
||||
.Apply(&nsIFileURLMutator::SetFile, localFile)
|
||||
.Apply(NS_MutatorMethod(&nsIFileURLMutator::SetFile, localFile))
|
||||
.Finalize(aOutURI);
|
||||
}
|
||||
return NS_MutateURI(url)
|
||||
.Apply(&nsIURLMutator::SetFileName, newFileName, nullptr)
|
||||
.Apply(NS_MutatorMethod(&nsIURLMutator::SetFileName, newFileName,
|
||||
nullptr))
|
||||
.Finalize(aOutURI);
|
||||
}
|
||||
}
|
||||
|
@ -84,8 +84,9 @@ nsresult nsJARURI::CreateEntryURL(const nsACString& entryFilename,
|
||||
// Flatten the concatenation, just in case. See bug 128288
|
||||
nsAutoCString spec(NS_BOGUS_ENTRY_SCHEME + entryFilename);
|
||||
return NS_MutateURI(NS_STANDARDURLMUTATOR_CONTRACTID)
|
||||
.Apply(&nsIStandardURLMutator::Init, nsIStandardURL::URLTYPE_NO_AUTHORITY,
|
||||
-1, spec, charset, nullptr, nullptr)
|
||||
.Apply(NS_MutatorMethod(&nsIStandardURLMutator::Init,
|
||||
nsIStandardURL::URLTYPE_NO_AUTHORITY, -1, spec,
|
||||
charset, nullptr, nullptr))
|
||||
.Finalize(url);
|
||||
}
|
||||
|
||||
@ -251,9 +252,10 @@ nsresult nsJARURI::SetSpecWithBase(const nsACString& aSpec, nsIURI* aBaseURL) {
|
||||
nsCOMPtr<nsIURI> entry;
|
||||
|
||||
rv = NS_MutateURI(NS_STANDARDURLMUTATOR_CONTRACTID)
|
||||
.Apply(&nsIStandardURLMutator::Init,
|
||||
nsIStandardURL::URLTYPE_NO_AUTHORITY, -1, aSpec,
|
||||
mCharsetHint.get(), otherJAR->mJAREntry, nullptr)
|
||||
.Apply(NS_MutatorMethod(&nsIStandardURLMutator::Init,
|
||||
nsIStandardURL::URLTYPE_NO_AUTHORITY, -1,
|
||||
nsCString(aSpec), mCharsetHint.get(),
|
||||
otherJAR->mJAREntry, nullptr))
|
||||
.Finalize(entry);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
@ -513,7 +515,8 @@ nsJARURI::GetFileName(nsACString& fileName) {
|
||||
|
||||
nsresult nsJARURI::SetFileNameInternal(const nsACString& fileName) {
|
||||
return NS_MutateURI(mJAREntry)
|
||||
.Apply(&nsIURLMutator::SetFileName, fileName, nullptr)
|
||||
.Apply(NS_MutatorMethod(&nsIURLMutator::SetFileName, nsCString(fileName),
|
||||
nullptr))
|
||||
.Finalize(mJAREntry);
|
||||
}
|
||||
|
||||
@ -524,7 +527,8 @@ nsJARURI::GetFileBaseName(nsACString& fileBaseName) {
|
||||
|
||||
nsresult nsJARURI::SetFileBaseNameInternal(const nsACString& fileBaseName) {
|
||||
return NS_MutateURI(mJAREntry)
|
||||
.Apply(&nsIURLMutator::SetFileBaseName, fileBaseName, nullptr)
|
||||
.Apply(NS_MutatorMethod(&nsIURLMutator::SetFileBaseName,
|
||||
nsCString(fileBaseName), nullptr))
|
||||
.Finalize(mJAREntry);
|
||||
}
|
||||
|
||||
@ -535,7 +539,8 @@ nsJARURI::GetFileExtension(nsACString& fileExtension) {
|
||||
|
||||
nsresult nsJARURI::SetFileExtensionInternal(const nsACString& fileExtension) {
|
||||
return NS_MutateURI(mJAREntry)
|
||||
.Apply(&nsIURLMutator::SetFileExtension, fileExtension, nullptr)
|
||||
.Apply(NS_MutatorMethod(&nsIURLMutator::SetFileExtension,
|
||||
nsCString(fileExtension), nullptr))
|
||||
.Finalize(mJAREntry);
|
||||
}
|
||||
|
||||
|
@ -11,7 +11,7 @@ interface nsIURIMutator;
|
||||
%{C++
|
||||
#include "nsString.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include <utility>
|
||||
#include <functional>
|
||||
|
||||
#undef SetPort // XXX Windows!
|
||||
|
||||
@ -301,6 +301,7 @@ interface nsIURIMutator : nsIURISetters
|
||||
%{C++
|
||||
|
||||
// This templated struct is used to extract the class type of the method
|
||||
// passed to NS_MutatorMethod.
|
||||
template <typename Method>
|
||||
struct nsMethodTypeTraits;
|
||||
|
||||
@ -318,6 +319,25 @@ struct nsMethodTypeTraits<R(__stdcall C::*)(As...)>
|
||||
};
|
||||
#endif
|
||||
|
||||
// This helper returns a std::function that will be applied on the
|
||||
// nsIURIMutator. The type of `Interface` will be deduced from the method type.
|
||||
// aMethod will be called on the target object if it successfully QIs to
|
||||
// `Interface`, and the arguments will be passed to the call.
|
||||
template <typename Method, typename... Args>
|
||||
const std::function<nsresult(nsIURIMutator*)>
|
||||
NS_MutatorMethod(Method aMethod, Args ...aArgs)
|
||||
{
|
||||
// Capture arguments by value, otherwise we crash.
|
||||
return [=](nsIURIMutator* aMutator) {
|
||||
typedef typename nsMethodTypeTraits<Method>::class_type Interface;
|
||||
nsresult rv;
|
||||
nsCOMPtr<Interface> target = do_QueryInterface(aMutator, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = (target->*aMethod)(aArgs...);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
return NS_OK;
|
||||
};
|
||||
}
|
||||
|
||||
// This class provides a useful helper that allows chaining of setter operations
|
||||
class MOZ_STACK_CLASS NS_MutateURI
|
||||
@ -457,7 +477,7 @@ public:
|
||||
* nsCOMPtr<nsIURI> uri;
|
||||
* nsresult rv = NS_MutateURI(new URIClass::Mutator())
|
||||
* .SetSpec(aSpec)
|
||||
* .Apply(&SomeInterface::Method, arg1, arg2)
|
||||
* .Apply(NS_MutatorMethod(&SomeInterface::Method, arg1, arg2))
|
||||
* .Finalize(uri);
|
||||
*
|
||||
* If mMutator does not implement SomeInterface, do_QueryInterface will fail
|
||||
@ -465,15 +485,12 @@ public:
|
||||
* If aMethod does not exist, or if there is a mismatch between argument
|
||||
* types, or the number of arguments, then there will be a compile error.
|
||||
*/
|
||||
template <typename Method, typename... Args>
|
||||
NS_MutateURI& Apply(Method aMethod, Args&&... aArgs)
|
||||
NS_MutateURI& Apply(const std::function<nsresult(nsIURIMutator*)>& aFunction)
|
||||
{
|
||||
typedef typename nsMethodTypeTraits<Method>::class_type Interface;
|
||||
NS_ENSURE_SUCCESS(mStatus, *this);
|
||||
nsCOMPtr<Interface> target = do_QueryInterface(mMutator, &mStatus);
|
||||
MOZ_ASSERT(NS_SUCCEEDED(mStatus), "URL object must implement interface");
|
||||
NS_ENSURE_SUCCESS(mStatus, *this);
|
||||
mStatus = (target->*aMethod)(std::forward<Args>(aArgs)...);
|
||||
if (NS_FAILED(mStatus)) {
|
||||
return *this;
|
||||
}
|
||||
mStatus = aFunction(mMutator);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
@ -1730,9 +1730,11 @@ nsresult NS_NewURI(nsIURI** result, const char* spec,
|
||||
static nsresult NewStandardURI(const nsACString& aSpec, const char* aCharset,
|
||||
nsIURI* aBaseURI, int32_t aDefaultPort,
|
||||
nsIURI** aURI) {
|
||||
nsCOMPtr<nsIURI> base(aBaseURI);
|
||||
return NS_MutateURI(new nsStandardURL::Mutator())
|
||||
.Apply(&nsIStandardURLMutator::Init, nsIStandardURL::URLTYPE_AUTHORITY,
|
||||
aDefaultPort, aSpec, aCharset, aBaseURI, nullptr)
|
||||
.Apply(NS_MutatorMethod(&nsIStandardURLMutator::Init,
|
||||
nsIStandardURL::URLTYPE_AUTHORITY, aDefaultPort,
|
||||
nsCString(aSpec), aCharset, base, nullptr))
|
||||
.Finalize(aURI);
|
||||
}
|
||||
|
||||
@ -1815,11 +1817,12 @@ nsresult NS_NewURI(nsIURI** aURI, const nsACString& aSpec,
|
||||
}
|
||||
#endif
|
||||
|
||||
nsCOMPtr<nsIURI> base(aBaseURI);
|
||||
return NS_MutateURI(new nsStandardURL::Mutator())
|
||||
.Apply(&nsIFileURLMutator::MarkFileURL)
|
||||
.Apply(&nsIStandardURLMutator::Init,
|
||||
nsIStandardURL::URLTYPE_NO_AUTHORITY, -1, buf, aCharset,
|
||||
aBaseURI, nullptr)
|
||||
.Apply(NS_MutatorMethod(&nsIFileURLMutator::MarkFileURL))
|
||||
.Apply(NS_MutatorMethod(&nsIStandardURLMutator::Init,
|
||||
nsIStandardURL::URLTYPE_NO_AUTHORITY, -1, buf,
|
||||
aCharset, base, nullptr))
|
||||
.Finalize(aURI);
|
||||
}
|
||||
|
||||
@ -1863,9 +1866,11 @@ nsresult NS_NewURI(nsIURI** aURI, const nsACString& aSpec,
|
||||
}
|
||||
|
||||
if (scheme.EqualsLiteral("indexeddb")) {
|
||||
nsCOMPtr<nsIURI> base(aBaseURI);
|
||||
return NS_MutateURI(new nsStandardURL::Mutator())
|
||||
.Apply(&nsIStandardURLMutator::Init, nsIStandardURL::URLTYPE_AUTHORITY,
|
||||
0, aSpec, aCharset, aBaseURI, nullptr)
|
||||
.Apply(NS_MutatorMethod(&nsIStandardURLMutator::Init,
|
||||
nsIStandardURL::URLTYPE_AUTHORITY, 0,
|
||||
nsCString(aSpec), aCharset, base, nullptr))
|
||||
.Finalize(aURI);
|
||||
}
|
||||
|
||||
@ -1900,8 +1905,10 @@ nsresult NS_NewURI(nsIURI** aURI, const nsACString& aSpec,
|
||||
}
|
||||
|
||||
if (scheme.EqualsLiteral("jar")) {
|
||||
nsCOMPtr<nsIURI> base(aBaseURI);
|
||||
return NS_MutateURI(new nsJARURI::Mutator())
|
||||
.Apply(&nsIJARURIMutator::SetSpecBaseCharset, aSpec, aBaseURI, aCharset)
|
||||
.Apply(NS_MutatorMethod(&nsIJARURIMutator::SetSpecBaseCharset,
|
||||
nsCString(aSpec), base, aCharset))
|
||||
.Finalize(aURI);
|
||||
}
|
||||
|
||||
@ -1913,17 +1920,21 @@ nsresult NS_NewURI(nsIURI** aURI, const nsACString& aSpec,
|
||||
|
||||
#ifdef MOZ_WIDGET_GTK
|
||||
if (scheme.EqualsLiteral("smb") || scheme.EqualsLiteral("sftp")) {
|
||||
nsCOMPtr<nsIURI> base(aBaseURI);
|
||||
return NS_MutateURI(new nsStandardURL::Mutator())
|
||||
.Apply(&nsIStandardURLMutator::Init, nsIStandardURL::URLTYPE_STANDARD,
|
||||
-1, aSpec, aCharset, aBaseURI, nullptr)
|
||||
.Apply(NS_MutatorMethod(&nsIStandardURLMutator::Init,
|
||||
nsIStandardURL::URLTYPE_STANDARD, -1,
|
||||
nsCString(aSpec), aCharset, base, nullptr))
|
||||
.Finalize(aURI);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (scheme.EqualsLiteral("android")) {
|
||||
nsCOMPtr<nsIURI> base(aBaseURI);
|
||||
return NS_MutateURI(NS_STANDARDURLMUTATOR_CONTRACTID)
|
||||
.Apply(&nsIStandardURLMutator::Init, nsIStandardURL::URLTYPE_STANDARD,
|
||||
-1, aSpec, aCharset, aBaseURI, nullptr)
|
||||
.Apply(NS_MutatorMethod(&nsIStandardURLMutator::Init,
|
||||
nsIStandardURL::URLTYPE_STANDARD, -1,
|
||||
nsCString(aSpec), aCharset, base, nullptr))
|
||||
.Finalize(aURI);
|
||||
}
|
||||
|
||||
@ -3028,7 +3039,8 @@ nsresult NS_GetSecureUpgradedURI(nsIURI* aURI, nsIURI** aUpgradedURI) {
|
||||
// Change the default port to 443:
|
||||
nsCOMPtr<nsIStandardURL> stdURL = do_QueryInterface(aURI);
|
||||
if (stdURL) {
|
||||
mutator.Apply(&nsIStandardURLMutator::SetDefaultPort, 443, nullptr);
|
||||
mutator.Apply(
|
||||
NS_MutatorMethod(&nsIStandardURLMutator::SetDefaultPort, 443, nullptr));
|
||||
} else {
|
||||
// If we don't have a nsStandardURL, fall back to using GetPort/SetPort.
|
||||
// XXXdholbert Is this function even called with a non-nsStandardURL arg,
|
||||
|
@ -311,11 +311,12 @@ bool TRRService::MaybeSetPrivateURI(const nsACString& aURI) {
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIURI> url;
|
||||
nsresult rv = NS_MutateURI(NS_STANDARDURLMUTATOR_CONTRACTID)
|
||||
.Apply(&nsIStandardURLMutator::Init,
|
||||
nsIStandardURL::URLTYPE_STANDARD, 443, newURI,
|
||||
nullptr, nullptr, nullptr)
|
||||
.Finalize(url);
|
||||
nsresult rv =
|
||||
NS_MutateURI(NS_STANDARDURLMUTATOR_CONTRACTID)
|
||||
.Apply(NS_MutatorMethod(&nsIStandardURLMutator::Init,
|
||||
nsIStandardURL::URLTYPE_STANDARD, 443,
|
||||
newURI, nullptr, nullptr, nullptr))
|
||||
.Finalize(url);
|
||||
if (NS_FAILED(rv)) {
|
||||
LOG(("TRRService::MaybeSetPrivateURI failed to create URI!\n"));
|
||||
return false;
|
||||
@ -864,8 +865,9 @@ bool TRRService::MaybeBootstrap(const nsACString& aPossible,
|
||||
nsCOMPtr<nsIURI> url;
|
||||
nsresult rv =
|
||||
NS_MutateURI(NS_STANDARDURLMUTATOR_CONTRACTID)
|
||||
.Apply(&nsIStandardURLMutator::Init, nsIStandardURL::URLTYPE_STANDARD,
|
||||
443, mPrivateURI, nullptr, nullptr, nullptr)
|
||||
.Apply(NS_MutatorMethod(&nsIStandardURLMutator::Init,
|
||||
nsIStandardURL::URLTYPE_STANDARD, 443,
|
||||
mPrivateURI, nullptr, nullptr, nullptr))
|
||||
.Finalize(url);
|
||||
if (NS_FAILED(rv)) {
|
||||
LOG(("TRRService::MaybeBootstrap failed to create URI!\n"));
|
||||
|
@ -149,8 +149,10 @@ nsresult nsAboutProtocolHandler::CreateNewURI(const nsACString& aSpec,
|
||||
rv = NS_NewURI(getter_AddRefs(inner), spec);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIURI> base(aBaseURI);
|
||||
rv = NS_MutateURI(new nsNestedAboutURI::Mutator())
|
||||
.Apply(&nsINestedAboutURIMutator::InitWithBase, inner, aBaseURI)
|
||||
.Apply(NS_MutatorMethod(&nsINestedAboutURIMutator::InitWithBase,
|
||||
inner, base))
|
||||
.SetSpec(aSpec)
|
||||
.Finalize(url);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
@ -54,15 +54,17 @@ nsDataHandler::GetProtocolFlags(uint32_t* result) {
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIURI> uri;
|
||||
|
||||
if (aBaseURI && !aSpec.IsEmpty() && aSpec[0] == '#') {
|
||||
const nsPromiseFlatCString& spec = PromiseFlatCString(aSpec);
|
||||
|
||||
if (aBaseURI && !spec.IsEmpty() && spec[0] == '#') {
|
||||
// Looks like a reference instead of a fully-specified URI.
|
||||
// --> initialize |uri| as a clone of |aBaseURI|, with ref appended.
|
||||
rv = NS_MutateURI(aBaseURI).SetRef(aSpec).Finalize(uri);
|
||||
rv = NS_MutateURI(aBaseURI).SetRef(spec).Finalize(uri);
|
||||
} else {
|
||||
// Otherwise, we'll assume |aSpec| is a fully-specified data URI
|
||||
// Otherwise, we'll assume |spec| is a fully-specified data URI
|
||||
nsAutoCString contentType;
|
||||
bool base64;
|
||||
rv = ParseURI(aSpec, contentType, /* contentCharset = */ nullptr, base64,
|
||||
rv = ParseURI(spec, contentType, /* contentCharset = */ nullptr, base64,
|
||||
/* dataBuffer = */ nullptr);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
@ -72,12 +74,13 @@ nsDataHandler::GetProtocolFlags(uint32_t* result) {
|
||||
contentType.Find("xml") == kNotFound)) {
|
||||
// it's ascii encoded binary, don't let any spaces in
|
||||
rv = NS_MutateURI(new mozilla::net::nsSimpleURI::Mutator())
|
||||
.Apply(&nsISimpleURIMutator::SetSpecAndFilterWhitespace, aSpec,
|
||||
nullptr)
|
||||
.Apply(NS_MutatorMethod(
|
||||
&nsISimpleURIMutator::SetSpecAndFilterWhitespace, spec,
|
||||
nullptr))
|
||||
.Finalize(uri);
|
||||
} else {
|
||||
rv = NS_MutateURI(new mozilla::net::nsSimpleURI::Mutator())
|
||||
.SetSpec(aSpec)
|
||||
.SetSpec(spec)
|
||||
.Finalize(uri);
|
||||
}
|
||||
}
|
||||
@ -228,28 +231,18 @@ nsresult nsDataHandler::ParsePathWithoutRef(
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
static inline char ToLower(const char c) {
|
||||
if (c >= 'A' && c <= 'Z') {
|
||||
return char(c + ('a' - 'A'));
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
nsresult nsDataHandler::ParseURI(const nsACString& spec, nsCString& contentType,
|
||||
nsresult nsDataHandler::ParseURI(const nsCString& spec, nsCString& contentType,
|
||||
nsCString* contentCharset, bool& isBase64,
|
||||
nsCString* dataBuffer) {
|
||||
static constexpr auto kDataScheme = "data:"_ns;
|
||||
|
||||
// move past "data:"
|
||||
const char* pos = std::search(
|
||||
spec.BeginReading(), spec.EndReading(), kDataScheme.BeginReading(),
|
||||
kDataScheme.EndReading(),
|
||||
[](const char a, const char b) { return ToLower(a) == ToLower(b); });
|
||||
if (pos == spec.EndReading()) {
|
||||
int32_t scheme = spec.Find(kDataScheme, /* aIgnoreCase = */ true);
|
||||
if (scheme == kNotFound) {
|
||||
// malformed uri
|
||||
return NS_ERROR_MALFORMED_URI;
|
||||
}
|
||||
|
||||
uint32_t scheme = pos - spec.BeginReading();
|
||||
scheme += kDataScheme.Length();
|
||||
|
||||
// Find the start of the hash ref if present.
|
||||
|
@ -33,7 +33,7 @@ class nsDataHandler : public nsIProtocolHandler,
|
||||
// (the given spec will temporarily be modified but will be returned
|
||||
// to the original before returning)
|
||||
// contentCharset and dataBuffer can be nullptr if they are not needed.
|
||||
[[nodiscard]] static nsresult ParseURI(const nsACString& spec,
|
||||
[[nodiscard]] static nsresult ParseURI(const nsCString& spec,
|
||||
nsCString& contentType,
|
||||
nsCString* contentCharset,
|
||||
bool& isBase64, nsCString* dataBuffer);
|
||||
|
@ -225,7 +225,7 @@ nsFileProtocolHandler::NewFileURI(nsIFile* aFile, nsIURI** aResult) {
|
||||
// NOTE: the origin charset is assigned the value of the platform
|
||||
// charset by the SetFile method.
|
||||
return NS_MutateURI(new nsStandardURL::Mutator())
|
||||
.Apply(&nsIFileURLMutator::SetFile, file)
|
||||
.Apply(NS_MutatorMethod(&nsIFileURLMutator::SetFile, file))
|
||||
.Finalize(aResult);
|
||||
}
|
||||
|
||||
|
@ -359,10 +359,11 @@ nsresult Http2Stream::MakeOriginURL(const nsACString& scheme,
|
||||
const nsACString& origin,
|
||||
nsCOMPtr<nsIURI>& url) {
|
||||
return NS_MutateURI(new nsStandardURL::Mutator())
|
||||
.Apply(&nsIStandardURLMutator::Init, nsIStandardURL::URLTYPE_AUTHORITY,
|
||||
scheme.EqualsLiteral("http") ? NS_HTTP_DEFAULT_PORT
|
||||
: NS_HTTPS_DEFAULT_PORT,
|
||||
origin, nullptr, nullptr, nullptr)
|
||||
.Apply(NS_MutatorMethod(
|
||||
&nsIStandardURLMutator::Init, nsIStandardURL::URLTYPE_AUTHORITY,
|
||||
scheme.EqualsLiteral("http") ? NS_HTTP_DEFAULT_PORT
|
||||
: NS_HTTPS_DEFAULT_PORT,
|
||||
nsCString(origin), nullptr, nullptr, nullptr))
|
||||
.Finalize(url);
|
||||
}
|
||||
|
||||
|
@ -351,11 +351,11 @@ nsresult SubstitutingProtocolHandler::NewURI(const nsACString& aSpec,
|
||||
|
||||
nsCOMPtr<nsIURI> base(aBaseURI);
|
||||
nsCOMPtr<nsIURL> uri;
|
||||
rv =
|
||||
NS_MutateURI(new SubstitutingURL::Mutator())
|
||||
.Apply(&nsIStandardURLMutator::Init, nsIStandardURL::URLTYPE_STANDARD,
|
||||
-1, spec, aCharset, base, nullptr)
|
||||
.Finalize(uri);
|
||||
rv = NS_MutateURI(new SubstitutingURL::Mutator())
|
||||
.Apply(NS_MutatorMethod(&nsIStandardURLMutator::Init,
|
||||
nsIStandardURL::URLTYPE_STANDARD, -1, spec,
|
||||
aCharset, base, nullptr))
|
||||
.Finalize(uri);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
nsAutoCString host;
|
||||
|
@ -91,7 +91,7 @@ nsresult nsViewSourceHandler::CreateNewURI(const nsACString& aSpec,
|
||||
|
||||
nsCOMPtr<nsIURI> uri;
|
||||
rv = NS_MutateURI(new nsSimpleNestedURI::Mutator())
|
||||
.Apply(&nsINestedURIMutator::Init, innerURI)
|
||||
.Apply(NS_MutatorMethod(&nsINestedURIMutator::Init, innerURI))
|
||||
.SetSpec(asciiSpec)
|
||||
.Finalize(uri);
|
||||
if (NS_FAILED(rv)) {
|
||||
|
Loading…
Reference in New Issue
Block a user