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;
|
||||
}
|
||||
|
||||
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
|
||||
nsScriptLoader::ModuleMapContainsModule(nsModuleLoadRequest *aRequest) const
|
||||
{
|
||||
|
@ -1448,8 +1461,7 @@ nsScriptLoader::ProcessScriptElement(nsIScriptElement *aElement)
|
|||
|
||||
nsScriptKind scriptKind = nsScriptKind::Classic;
|
||||
if (!type.IsEmpty()) {
|
||||
// Support type="module" only for chrome documents.
|
||||
if (nsContentUtils::IsChromeDoc(mDocument) && type.LowerCaseEqualsASCII("module")) {
|
||||
if (ModuleScriptsEnabled() && type.LowerCaseEqualsASCII("module")) {
|
||||
scriptKind = nsScriptKind::Module;
|
||||
} else {
|
||||
NS_ENSURE_TRUE(ParseTypeAttribute(type, &version), false);
|
||||
|
@ -2768,7 +2780,7 @@ nsScriptLoader::PreloadURI(nsIURI *aURI, const nsAString &aCharset,
|
|||
}
|
||||
|
||||
// TODO: Preload module scripts.
|
||||
if (nsContentUtils::IsChromeDoc(mDocument) && aType.LowerCaseEqualsASCII("module")) {
|
||||
if (ModuleScriptsEnabled() && aType.LowerCaseEqualsASCII("module")) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -568,6 +568,8 @@ private:
|
|||
JS::SourceBufferHolder GetScriptSource(nsScriptLoadRequest* aRequest,
|
||||
nsAutoString& inlineData);
|
||||
|
||||
bool ModuleScriptsEnabled();
|
||||
|
||||
void SetModuleFetchStarted(nsModuleLoadRequest *aRequest);
|
||||
void SetModuleFetchFinishedAndResumeWaitingRequests(nsModuleLoadRequest *aRequest,
|
||||
nsresult aResult);
|
||||
|
|
|
@ -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
|
||||
// See application preferences for appropriate defaults.
|
||||
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