From d66dc34955729dd493d6e88728127d56baf4e86d Mon Sep 17 00:00:00 2001 From: Jan de Mooij Date: Sat, 18 Nov 2017 23:16:05 +0100 Subject: [PATCH 1/4] Bug 1417895 part 1 - Move ParseJavascriptVersion from nsContentUtils to ScriptLoader.cpp. r=bz --- dom/base/nsContentUtils.cpp | 22 ---------------------- dom/base/nsContentUtils.h | 6 ------ dom/script/ScriptLoader.cpp | 28 +++++++++++++++++++++++++++- 3 files changed, 27 insertions(+), 29 deletions(-) diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp index 2cd82215ec0a..641ecb33c946 100644 --- a/dom/base/nsContentUtils.cpp +++ b/dom/base/nsContentUtils.cpp @@ -1542,28 +1542,6 @@ nsContentUtils::IsJavaScriptLanguage(const nsString& aName) aName.LowerCaseEqualsLiteral("javascript1.5"); } -JSVersion -nsContentUtils::ParseJavascriptVersion(const nsAString& aVersionStr) -{ - if (aVersionStr.Length() != 3 || aVersionStr[0] != '1' || - aVersionStr[1] != '.') { - return JSVERSION_UNKNOWN; - } - - switch (aVersionStr[2]) { - case '0': /* fall through */ - case '1': /* fall through */ - case '2': /* fall through */ - case '3': /* fall through */ - case '4': /* fall through */ - case '5': return JSVERSION_DEFAULT; - case '6': return JSVERSION_1_6; - case '7': return JSVERSION_1_7; - case '8': return JSVERSION_1_8; - default: return JSVERSION_UNKNOWN; - } -} - void nsContentUtils::SplitMimeType(const nsAString& aValue, nsString& aType, nsString& aParams) diff --git a/dom/base/nsContentUtils.h b/dom/base/nsContentUtils.h index abf2e68da00c..b401488267f8 100644 --- a/dom/base/nsContentUtils.h +++ b/dom/base/nsContentUtils.h @@ -2633,12 +2633,6 @@ public: */ static bool IsJavaScriptLanguage(const nsString& aName); - /** - * Returns the JSVersion for a string of the form '1.n', n = 0, ..., 8, and - * JSVERSION_UNKNOWN for other strings. - */ - static JSVersion ParseJavascriptVersion(const nsAString& aVersionStr); - static bool IsJavascriptMIMEType(const nsAString& aMIMEType); static void SplitMimeType(const nsAString& aValue, nsString& aType, diff --git a/dom/script/ScriptLoader.cpp b/dom/script/ScriptLoader.cpp index 10173e2b7d34..fbaa75dda508 100644 --- a/dom/script/ScriptLoader.cpp +++ b/dom/script/ScriptLoader.cpp @@ -1169,6 +1169,32 @@ public: } }; +/** + * Returns the JSVersion for a string of the form '1.n', n = 0, ..., 8, and + * JSVERSION_UNKNOWN for other strings. + */ +static JSVersion +ParseJavascriptVersion(const nsAString& aVersionStr) +{ + if (aVersionStr.Length() != 3 || aVersionStr[0] != '1' || + aVersionStr[1] != '.') { + return JSVERSION_UNKNOWN; + } + + switch (aVersionStr[2]) { + case '0': /* fall through */ + case '1': /* fall through */ + case '2': /* fall through */ + case '3': /* fall through */ + case '4': /* fall through */ + case '5': return JSVERSION_DEFAULT; + case '6': return JSVERSION_1_6; + case '7': return JSVERSION_1_7; + case '8': return JSVERSION_1_8; + default: return JSVERSION_UNKNOWN; + } +} + static inline bool ParseTypeAttribute(const nsAString& aType, JSVersion* aVersion) { @@ -1191,7 +1217,7 @@ ParseTypeAttribute(const nsAString& aType, JSVersion* aVersion) rv = parser.GetParameter("version", versionName); if (NS_SUCCEEDED(rv)) { - *aVersion = nsContentUtils::ParseJavascriptVersion(versionName); + *aVersion = ParseJavascriptVersion(versionName); } else if (rv != NS_ERROR_INVALID_ARG) { return false; } From a8cef631a3345174d5289ca398dfe1496154b265 Mon Sep 17 00:00:00 2001 From: Jan de Mooij Date: Sat, 18 Nov 2017 23:16:09 +0100 Subject: [PATCH 2/4] Bug 1417895 part 2 - Use a ValidJSVersion enum instead of JSVersion in script loader. r=bz --- dom/script/ModuleLoadRequest.cpp | 4 +-- dom/script/ModuleLoadRequest.h | 2 +- dom/script/ScriptLoadRequest.cpp | 4 +-- dom/script/ScriptLoadRequest.h | 9 +++-- dom/script/ScriptLoader.cpp | 57 ++++++++++++++------------------ dom/script/ScriptLoader.h | 2 +- 6 files changed, 38 insertions(+), 40 deletions(-) diff --git a/dom/script/ModuleLoadRequest.cpp b/dom/script/ModuleLoadRequest.cpp index c9b02b3f1126..af85028c4db7 100644 --- a/dom/script/ModuleLoadRequest.cpp +++ b/dom/script/ModuleLoadRequest.cpp @@ -29,13 +29,13 @@ NS_IMPL_ADDREF_INHERITED(ModuleLoadRequest, ScriptLoadRequest) NS_IMPL_RELEASE_INHERITED(ModuleLoadRequest, ScriptLoadRequest) ModuleLoadRequest::ModuleLoadRequest(nsIScriptElement* aElement, - uint32_t aVersion, + ValidJSVersion aValidJSVersion, CORSMode aCORSMode, const SRIMetadata& aIntegrity, ScriptLoader* aLoader) : ScriptLoadRequest(ScriptKind::Module, aElement, - aVersion, + aValidJSVersion, aCORSMode, aIntegrity), mIsTopLevel(true), diff --git a/dom/script/ModuleLoadRequest.h b/dom/script/ModuleLoadRequest.h index fff8a35e030b..01619d391346 100644 --- a/dom/script/ModuleLoadRequest.h +++ b/dom/script/ModuleLoadRequest.h @@ -32,7 +32,7 @@ public: NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(ModuleLoadRequest, ScriptLoadRequest) ModuleLoadRequest(nsIScriptElement* aElement, - uint32_t aVersion, + ValidJSVersion aValidJSVersion, CORSMode aCORSMode, const SRIMetadata& aIntegrity, ScriptLoader* aLoader); diff --git a/dom/script/ScriptLoadRequest.cpp b/dom/script/ScriptLoadRequest.cpp index 4875ba787543..fb5068ce6d66 100644 --- a/dom/script/ScriptLoadRequest.cpp +++ b/dom/script/ScriptLoadRequest.cpp @@ -40,7 +40,7 @@ NS_IMPL_CYCLE_COLLECTION_TRACE_END ScriptLoadRequest::ScriptLoadRequest(ScriptKind aKind, nsIScriptElement* aElement, - uint32_t aVersion, + ValidJSVersion aValidJSVersion, mozilla::CORSMode aCORSMode, const mozilla::dom::SRIMetadata& aIntegrity) : mKind(aKind) @@ -63,7 +63,7 @@ ScriptLoadRequest::ScriptLoadRequest(ScriptKind aKind, , mScriptText() , mScriptBytecode() , mBytecodeOffset(0) - , mJSVersion(aVersion) + , mValidJSVersion(aValidJSVersion) , mLineNo(1) , mCORSMode(aCORSMode) , mIntegrity(aIntegrity) diff --git a/dom/script/ScriptLoadRequest.h b/dom/script/ScriptLoadRequest.h index 62ab177d51f9..41245d956e54 100644 --- a/dom/script/ScriptLoadRequest.h +++ b/dom/script/ScriptLoadRequest.h @@ -29,6 +29,11 @@ enum class ScriptKind { Module }; +enum class ValidJSVersion : bool { + Invalid, + Valid +}; + /* * A class that handles loading and evaluation of