Bug 1453559 - Don't use channel URI for loading modules from resource: scheme r=baku

This commit is contained in:
Jon Coppeard
2018-04-13 14:15:33 +01:00
parent 638806c147
commit 0e011e1187

View File

@@ -3054,6 +3054,22 @@ ScriptLoader::NumberOfProcessors()
return mNumberOfProcessors;
}
static bool
IsInternalURIScheme(nsIURI* uri)
{
bool isWebExt;
if (NS_SUCCEEDED(uri->SchemeIs("moz-extension", &isWebExt)) && isWebExt) {
return true;
}
bool isResource;
if (NS_SUCCEEDED(uri->SchemeIs("resource", &isResource)) && isResource) {
return true;
}
return false;
}
nsresult
ScriptLoader::PrepareLoadedRequest(ScriptLoadRequest* aRequest,
nsIIncrementalStreamLoader* aLoader,
@@ -3142,10 +3158,9 @@ ScriptLoader::PrepareLoadedRequest(ScriptLoadRequest* aRequest,
rv = channel->GetOriginalURI(getter_AddRefs(uri));
NS_ENSURE_SUCCESS(rv, rv);
// Fixup moz-extension URIs, because the channel URI points to file:,
// which won't be allowed to load.
bool isWebExt = false;
if (uri && NS_SUCCEEDED(uri->SchemeIs("moz-extension", &isWebExt)) && isWebExt) {
// Fixup moz-extension: and resource: URIs, because the channel URI will
// point to file:, which won't be allowed to load.
if (uri && IsInternalURIScheme(uri)) {
request->mBaseURL = uri;
} else {
channel->GetURI(getter_AddRefs(request->mBaseURL));