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

Reply via email to