summaryrefslogtreecommitdiffstats
path: root/dom/script/ModuleLoadRequest.cpp
diff options
context:
space:
mode:
authorGaming4JC <g4jc@hyperbola.info>2020-08-03 10:44:39 -0400
committerMoonchild <moonchild@palemoon.org>2020-08-30 09:36:51 +0000
commit9982c1f5cb3dfe361b9e9d21e5582a5e35d4c7fb (patch)
tree0f2307c192d928209ab930ad0d9d676a99747995 /dom/script/ModuleLoadRequest.cpp
parentfe912e94e44c4a6dfac1a75c265084f77adfd6ae (diff)
downloadUXP-9982c1f5cb3dfe361b9e9d21e5582a5e35d4c7fb.tar
UXP-9982c1f5cb3dfe361b9e9d21e5582a5e35d4c7fb.tar.gz
UXP-9982c1f5cb3dfe361b9e9d21e5582a5e35d4c7fb.tar.lz
UXP-9982c1f5cb3dfe361b9e9d21e5582a5e35d4c7fb.tar.xz
UXP-9982c1f5cb3dfe361b9e9d21e5582a5e35d4c7fb.zip
Issue #618 - Keep track of which modules in a graph have been fetched using a visited set
Ref: BZ 1365187
Diffstat (limited to 'dom/script/ModuleLoadRequest.cpp')
-rw-r--r--dom/script/ModuleLoadRequest.cpp33
1 files changed, 27 insertions, 6 deletions
diff --git a/dom/script/ModuleLoadRequest.cpp b/dom/script/ModuleLoadRequest.cpp
index a12fcb162..a75a922e2 100644
--- a/dom/script/ModuleLoadRequest.cpp
+++ b/dom/script/ModuleLoadRequest.cpp
@@ -17,26 +17,48 @@ NS_INTERFACE_MAP_END_INHERITING(ScriptLoadRequest)
NS_IMPL_CYCLE_COLLECTION_INHERITED(ModuleLoadRequest, ScriptLoadRequest,
mBaseURL,
mLoader,
- mParent,
mModuleScript,
mImports)
NS_IMPL_ADDREF_INHERITED(ModuleLoadRequest, ScriptLoadRequest)
NS_IMPL_RELEASE_INHERITED(ModuleLoadRequest, ScriptLoadRequest)
-ModuleLoadRequest::ModuleLoadRequest(nsIScriptElement* aElement,
+ModuleLoadRequest::ModuleLoadRequest(nsIURI* aURI,
+ nsIScriptElement* aElement,
uint32_t aVersion,
CORSMode aCORSMode,
const SRIMetadata &aIntegrity,
ScriptLoader* aLoader)
: ScriptLoadRequest(ScriptKind::Module,
+ aURI,
aElement,
aVersion,
aCORSMode,
aIntegrity),
mIsTopLevel(true),
- mLoader(aLoader)
-{}
+ mLoader(aLoader),
+ mVisitedSet(new VisitedURLSet())
+{
+ mVisitedSet->PutEntry(aURI);
+}
+
+ModuleLoadRequest::ModuleLoadRequest(nsIURI* aURI,
+ ModuleLoadRequest* aParent)
+ : ScriptLoadRequest(ScriptKind::Module,
+ aURI,
+ aParent->mElement,
+ aParent->mJSVersion,
+ aParent->mCORSMode,
+ aParent->mIntegrity),
+ mIsTopLevel(false),
+ mLoader(aParent->mLoader),
+ mVisitedSet(aParent->mVisitedSet)
+{
+ MOZ_ASSERT(mVisitedSet->Contains(aURI));
+
+ mIsInline = false;
+ mReferrerPolicy = aParent->mReferrerPolicy;
+}
void ModuleLoadRequest::Cancel()
{
@@ -132,8 +154,7 @@ ModuleLoadRequest::LoadFinished()
{
mLoader->ProcessLoadedModuleTree(this);
mLoader = nullptr;
- mParent = nullptr;
}
} // dom namespace
-} // mozilla namespace \ No newline at end of file
+} // mozilla namespace