author | Tooru 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 id | 206895 |
push user | arai_a@mac.com |
push date | Thu, 30 May 2024 05:04:58 +0000 (13 months ago) |
treeherder | autoland@fb1ed32eb195 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | nbp |
bugs | 1899172 |
milestone | 128.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
|
--- 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; }