Bug 1899172 - Part 2: Add ScriptLoadContext::GetInlineScriptText. r=nbp
authorTooru Fujisawa <arai_a@mac.com>
Thu, 30 May 2024 05:01:15 +0000 (13 months ago)
changeset 740899 8efea89fc137bbee73f32ca8d19fa78c4a4c38a4
parent 740898 28dcd53fa44f9ef2d6a389e6d60b49257a40b813
child 740900 7a085fc3c61962af566c0afe554d93064969eda0
push id206895
push userarai_a@mac.com
push dateThu, 30 May 2024 05:04:58 +0000 (13 months ago)
treeherderautoland@fb1ed32eb195 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersnbp
bugs1899172
milestone128.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1899172 - Part 2: Add ScriptLoadContext::GetInlineScriptText. r=nbp Differential Revision: https://phabricator.services.mozilla.com/D211902
dom/script/ScriptLoadContext.cpp
dom/script/ScriptLoadContext.h
js/loader/LoadedScript.cpp
--- a/dom/script/ScriptLoadContext.cpp
+++ b/dom/script/ScriptLoadContext.cpp
@@ -142,16 +142,21 @@ bool ScriptLoadContext::CompileStarted()
 }
 
 nsIScriptElement* ScriptLoadContext::GetScriptElement() const {
   nsCOMPtr<nsIScriptElement> scriptElement =
       do_QueryInterface(mRequest->mFetchOptions->mElement);
   return scriptElement;
 }
 
+void ScriptLoadContext::GetInlineScriptText(nsAString& aText) const {
+  MOZ_ASSERT(mIsInline);
+  GetScriptElement()->GetScriptText(aText);
+}
+
 void ScriptLoadContext::SetIsLoadRequest(nsIScriptElement* aElement) {
   MOZ_ASSERT(aElement);
   MOZ_ASSERT(!GetScriptElement());
   MOZ_ASSERT(IsPreload());
   // We are not tracking our own element, and are relying on the one in
   // FetchOptions.
   mRequest->mFetchOptions->mElement = do_QueryInterface(aElement);
   mIsPreload = false;
--- a/dom/script/ScriptLoadContext.h
+++ b/dom/script/ScriptLoadContext.h
@@ -178,16 +178,18 @@ class ScriptLoadContext : public JS::loa
   bool IsBlockingScript() const { return mScriptMode == ScriptMode::eBlocking; }
 
   bool IsDeferredScript() const { return mScriptMode == ScriptMode::eDeferred; }
 
   bool IsAsyncScript() const { return mScriptMode == ScriptMode::eAsync; }
 
   nsIScriptElement* GetScriptElement() const;
 
+  void GetInlineScriptText(nsAString& aText) const;
+
   // Make this request a preload (speculative) request.
   void SetIsPreloadRequest() {
     MOZ_ASSERT(!GetScriptElement());
     MOZ_ASSERT(!IsPreload());
     mIsPreload = true;
   }
 
   // Make a preload request into an actual load request for the given element.
--- a/js/loader/LoadedScript.cpp
+++ b/js/loader/LoadedScript.cpp
@@ -124,17 +124,17 @@ nsresult LoadedScript::GetScriptSource(J
                                        MaybeSourceText* aMaybeSource,
                                        LoadContextBase* aMaybeLoadContext) {
   // If there's no script text, we try to get it from the element
   bool isWindowContext =
       aMaybeLoadContext && aMaybeLoadContext->IsWindowContext();
   if (isWindowContext && aMaybeLoadContext->AsWindowContext()->mIsInline) {
     nsAutoString inlineData;
     auto* scriptLoadContext = aMaybeLoadContext->AsWindowContext();
-    scriptLoadContext->GetScriptElement()->GetScriptText(inlineData);
+    scriptLoadContext->GetInlineScriptText(inlineData);
 
     size_t nbytes = inlineData.Length() * sizeof(char16_t);
     JS::UniqueTwoByteChars chars(
         static_cast<char16_t*>(JS_malloc(aCx, nbytes)));
     if (!chars) {
       return NS_ERROR_OUT_OF_MEMORY;
     }