1330657 - Enable script type=/module/ behind a pref.
This commit is contained in:
parent
30bbab0063
commit
186a0ce621
|
@ -653,6 +653,19 @@ nsScriptLoader::CheckContentPolicy(nsIDocument* aDocument,
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
nsScriptLoader::ModuleScriptsEnabled()
|
||||||
|
{
|
||||||
|
static bool sEnabledForContent = false;
|
||||||
|
static bool sCachedPref = false;
|
||||||
|
if (!sCachedPref) {
|
||||||
|
sCachedPref = true;
|
||||||
|
Preferences::AddBoolVarCache(&sEnabledForContent, "dom.moduleScripts.enabled", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
return nsContentUtils::IsChromeDoc(mDocument) || sEnabledForContent;
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
nsScriptLoader::ModuleMapContainsModule(nsModuleLoadRequest *aRequest) const
|
nsScriptLoader::ModuleMapContainsModule(nsModuleLoadRequest *aRequest) const
|
||||||
{
|
{
|
||||||
|
@ -1448,8 +1461,7 @@ nsScriptLoader::ProcessScriptElement(nsIScriptElement *aElement)
|
||||||
|
|
||||||
nsScriptKind scriptKind = nsScriptKind::Classic;
|
nsScriptKind scriptKind = nsScriptKind::Classic;
|
||||||
if (!type.IsEmpty()) {
|
if (!type.IsEmpty()) {
|
||||||
// Support type="module" only for chrome documents.
|
if (ModuleScriptsEnabled() && type.LowerCaseEqualsASCII("module")) {
|
||||||
if (nsContentUtils::IsChromeDoc(mDocument) && type.LowerCaseEqualsASCII("module")) {
|
|
||||||
scriptKind = nsScriptKind::Module;
|
scriptKind = nsScriptKind::Module;
|
||||||
} else {
|
} else {
|
||||||
NS_ENSURE_TRUE(ParseTypeAttribute(type, &version), false);
|
NS_ENSURE_TRUE(ParseTypeAttribute(type, &version), false);
|
||||||
|
@ -2768,7 +2780,7 @@ nsScriptLoader::PreloadURI(nsIURI *aURI, const nsAString &aCharset,
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Preload module scripts.
|
// TODO: Preload module scripts.
|
||||||
if (nsContentUtils::IsChromeDoc(mDocument) && aType.LowerCaseEqualsASCII("module")) {
|
if (ModuleScriptsEnabled() && aType.LowerCaseEqualsASCII("module")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -568,6 +568,8 @@ private:
|
||||||
JS::SourceBufferHolder GetScriptSource(nsScriptLoadRequest* aRequest,
|
JS::SourceBufferHolder GetScriptSource(nsScriptLoadRequest* aRequest,
|
||||||
nsAutoString& inlineData);
|
nsAutoString& inlineData);
|
||||||
|
|
||||||
|
bool ModuleScriptsEnabled();
|
||||||
|
|
||||||
void SetModuleFetchStarted(nsModuleLoadRequest *aRequest);
|
void SetModuleFetchStarted(nsModuleLoadRequest *aRequest);
|
||||||
void SetModuleFetchFinishedAndResumeWaitingRequests(nsModuleLoadRequest *aRequest,
|
void SetModuleFetchFinishedAndResumeWaitingRequests(nsModuleLoadRequest *aRequest,
|
||||||
nsresult aResult);
|
nsresult aResult);
|
||||||
|
|
2
js/src/jit-test/tests/modules/bug-1320993.js
Normal file
2
js/src/jit-test/tests/modules/bug-1320993.js
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
parseModule("export default (class {})");
|
||||||
|
parseModule("export default (class A {})");
|
|
@ -5468,3 +5468,6 @@ pref("dom.storageManager.enabled", false);
|
||||||
// >0 = suppress further prompts after the user has canceled the dialog n times
|
// >0 = suppress further prompts after the user has canceled the dialog n times
|
||||||
// See application preferences for appropriate defaults.
|
// See application preferences for appropriate defaults.
|
||||||
pref("prompts.authentication_dialog_abuse_limit", 0);
|
pref("prompts.authentication_dialog_abuse_limit", 0);
|
||||||
|
|
||||||
|
// Whether module scripts (<script type="module">) are enabled for content.
|
||||||
|
pref("dom.moduleScripts.enabled", true);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user