diff options
author | Gaming4JC <g4jc@hyperbola.info> | 2020-08-03 10:44:39 -0400 |
---|---|---|
committer | Gaming4JC <g4jc@hyperbola.info> | 2020-08-04 10:25:36 -0400 |
commit | 15a7be79bd1396df9d19e15fd072bb825b0d9313 (patch) | |
tree | b707f289d60e74b398c362e671708e5248667d2b /dom/script/ModuleLoadRequest.cpp | |
parent | 7e673b1dbe5c0130e4a227a5a2db1fe7b91f0026 (diff) | |
download | UXP-15a7be79bd1396df9d19e15fd072bb825b0d9313.tar UXP-15a7be79bd1396df9d19e15fd072bb825b0d9313.tar.gz UXP-15a7be79bd1396df9d19e15fd072bb825b0d9313.tar.lz UXP-15a7be79bd1396df9d19e15fd072bb825b0d9313.tar.xz UXP-15a7be79bd1396df9d19e15fd072bb825b0d9313.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.cpp | 33 |
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 |