Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: b904535e677c77814d0d11c7bfc369ad71332ecd
https://github.com/WebKit/WebKit/commit/b904535e677c77814d0d11c7bfc369ad71332ecd
Author: Kiet Ho <[email protected]>
Date: 2026-09-23 (Wed, 23 Sep 2026)
Changed paths:
M Source/WebCore/bindings/js/CachedModuleScriptLoader.cpp
M Source/WebCore/bindings/js/CachedModuleScriptLoader.h
M Source/WebCore/bindings/js/CachedScriptFetcher.cpp
M Source/WebCore/bindings/js/CachedScriptFetcher.h
M Source/WebCore/bindings/js/ScriptModuleLoader.cpp
M Source/WebCore/dom/LoadableClassicScript.cpp
M Source/WebCore/dom/ScriptElementCachedScriptFetcher.cpp
M Source/WebCore/dom/ScriptElementCachedScriptFetcher.h
Log Message:
-----------
[CSS Module Scripts] Extend CachedScriptFetcher to load arbitrary resources
rdar://186710273
https://bugs.webkit.org/show_bug.cgi?id=323483
Reviewed by Ryosuke Niwa and Yusuke Suzuki.
CachedScriptFetcher is used to, among other things, load module scripts when
JavaScript code loads a module using `import ...` or `import()`.
Before, when JS module import only supports JS/WASM/JSON/text modules, modules
are loaded using CachedResourceLoader::requestScript, which follows script
semantics (e.g CSP script-src is honored). But to support CSS Module Scripts,
CSS files can't be loaded this way, as styles have their own semantics (e.g
they follow CSP style-src instead of script-sec)
This patch extends CachedScriptFetcher to be able to fetch any arbitrary
resource. On a high level, CachedScriptFetcher will return a CachedResources,
instead of CachedScript like before. Its downstreams are changed to handle
the returned CachedResources. CachedScriptFetcher::requestResourceWithCache
still uses requestScript, but given that it now returns a CachedResource,
this allows future work on CSS Module Scripts to extend it by calling
requestCSSStyleSheet to fetch a CachedCSSStyleSheet.
Refactoring, tested by existing test suite.
* Source/WebCore/bindings/js/CachedModuleScriptLoader.cpp:
(WebCore::CachedModuleScriptLoader::~CachedModuleScriptLoader):
(WebCore::CachedModuleScriptLoader::load):
(WebCore::CachedModuleScriptLoader::notifyFinished):
* Source/WebCore/bindings/js/CachedModuleScriptLoader.h:
* Source/WebCore/bindings/js/CachedScriptFetcher.cpp:
(WebCore::CachedScriptFetcher::requestModuleResource const):
(WebCore::CachedScriptFetcher::requestResourceWithCache const):
(WebCore::CachedScriptFetcher::requestModuleScript const): Deleted.
(WebCore::CachedScriptFetcher::requestScriptWithCache const): Deleted.
* Source/WebCore/bindings/js/CachedScriptFetcher.h:
(WebCore::CachedScriptFetcher::requestResourceWithCache):
(WebCore::CachedScriptFetcher::requestScriptWithCache): Deleted.
* Source/WebCore/bindings/js/ScriptModuleLoader.cpp:
(WebCore::ScriptModuleLoader::notifyFinished):
* Source/WebCore/dom/LoadableClassicScript.cpp:
(WebCore::LoadableNonModuleScriptBase::load):
* Source/WebCore/dom/ScriptElementCachedScriptFetcher.cpp:
(WebCore::ScriptElementCachedScriptFetcher::requestModuleResource const):
(WebCore::ScriptElementCachedScriptFetcher::requestModuleScript const): Deleted.
* Source/WebCore/dom/ScriptElementCachedScriptFetcher.h:
Canonical link: https://commits.webkit.org/321721@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications