Implement dynamic-import for WebCore
authorutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Jan 2017 10:49:23 +0000 (10:49 +0000)
committerutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Jan 2017 10:49:23 +0000 (10:49 +0000)
commit6e30c3ab0c53cc040cb67c5df9465458dae2fb7e
treefb5295da8b064cdaf93f7f75c65ebb9aaf07df82
parent2f45f0d8f780fc219a9ed7c06250a85bafb25e57
Implement dynamic-import for WebCore
https://bugs.webkit.org/show_bug.cgi?id=166926

Reviewed by Ryosuke Niwa.

Source/WebCore:

This patch introduces browser side dynamic-import implementation.
The dynamic-import is new ES feature which is now stage 3.
The JSC shell already implements it.

The dynamic-import allows us to kick module loading in a dynamic manner.
For example, you can write,

    await module = import(`${HOST}/hello.js`);

The dynamic `import` operator (this is not a function) returns a promise with
module namespace object if the module loading succeeds. Otherwise, it returns
a rejected promise.

And importantly, this feature allows us to kick module loading from classic script.
Previously, module loading can be only used from <script type="module"> tag. And
all the module loading is done statically.

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/CachedModuleScriptLoader.cpp:
(WebCore::CachedModuleScriptLoader::load):
* bindings/js/CachedScriptFetcher.cpp:
(WebCore::CachedScriptFetcher::create):
(WebCore::CachedScriptFetcher::requestModuleScript):
requestModuleScript function is used only when loading a new module script.
So, LoadableClassicScript should use requestScriptWithCache to load itself.
We pass String() for cross origin mode for null cross origin attribute as
specified.

(WebCore::CachedScriptFetcher::requestScriptWithCache):
* bindings/js/CachedScriptFetcher.h:
(WebCore::CachedScriptFetcher::CachedScriptFetcher):
* bindings/js/JSDOMWindowBase.cpp:
(WebCore::JSDOMWindowBase::moduleLoaderImportModule):
* bindings/js/JSDOMWindowBase.h:
* bindings/js/JSLazyEventListener.cpp:
(WebCore::JSLazyEventListener::initializeJSFunction):
* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::executeScript):
* bindings/js/ScriptModuleLoader.cpp:
(WebCore::resolveModuleSpecifier):
Extract the part of resolving module specifier to a static function to use
it in ScriptModuleLoader::resolve and ScriptModuleLoader::importModule.

(WebCore::ScriptModuleLoader::resolve):
(WebCore::rejectPromise):
(WebCore::ScriptModuleLoader::importModule):
New hook moduleLoaderImportModule is implemented. This hook is called when
`import` operator is used. This hook is responsible to
    1. resolve the module name to obtain module specifier. (like, resolve the
        relative URL to get absolute URL.)
    2. kick module loading with the resolved specifier.
When resolving the module name, the referrer information is needed.
For example, "./script.js" will be resolved to "http://example.com/script.js" if
the referrer module specifier is "http://example.com/".
If `import("./script.js")` is executed in the classic script
src="http://example.com/test.js", it starts loading "http://example.com/script.js".
So the information of the caller of `import` operator is necessary here.
This appropriate referrer is propagated by SourceOrigin.

* bindings/js/ScriptModuleLoader.h:
* dom/InlineClassicScript.h:
* dom/LoadableClassicScript.cpp:
(WebCore::LoadableClassicScript::load):
* dom/LoadableClassicScript.h:
* dom/LoadableModuleScript.h:
* dom/LoadableScript.h:
(WebCore::LoadableScript::LoadableScript):
(WebCore::LoadableScript::isClassicScript): Deleted.
(WebCore::LoadableScript::isModuleScript): Deleted.
* dom/ScriptElement.h:
* dom/ScriptElementCachedScriptFetcher.cpp: Copied from Source/WebCore/dom/InlineClassicScript.h.
(WebCore::ScriptElementCachedScriptFetcher::requestModuleScript):
This requestModuleScript will be used when the script tag (or modules imported from the script tag) uses `import` operator.
In classic scripts, `crossorigin` mode always becomes "omit" while module scripts
propagate the original `crossorigin` value.

* dom/ScriptElementCachedScriptFetcher.h: Copied from Source/WebCore/bindings/js/CachedScriptFetcher.h.
(WebCore::ScriptElementCachedScriptFetcher::crossOriginMode):
(WebCore::ScriptElementCachedScriptFetcher::ScriptElementCachedScriptFetcher):

LayoutTests:

* http/tests/misc/import-absolute-url-expected.txt: Added.
* http/tests/misc/import-absolute-url.html: Added.
* http/tests/security/contentSecurityPolicy/1.1/import-scriptnonce-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/1.1/import-scriptnonce.html: Added.
* http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-allowed1.js: Added.
* http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-allowed2.js: Added.
* http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-allowed3.js: Added.
* http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-allowed4.js: Added.
* http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-allowed5.js: Added.
* http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-allowed6.js: Added.
* http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-blocked1.js: Added.
* http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-blocked2.js: Added.
* http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-blocked3.js: Added.
* http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-blocked4.js: Added.
* http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-blocked5.js: Added.
* http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-blocked6.js: Added.
* http/tests/security/import-module-crossorigin-loads-error-expected.txt: Added.
* http/tests/security/import-module-crossorigin-loads-error-src-expected.txt: Added.
* http/tests/security/import-module-crossorigin-loads-error-src.html: Added.
* http/tests/security/import-module-crossorigin-loads-error.html: Added.
* http/tests/security/import-module-crossorigin-loads-expected.txt: Added.
* http/tests/security/import-module-crossorigin-loads-src-expected.txt: Added.
* http/tests/security/import-module-crossorigin-loads-src.html: Added.
* http/tests/security/import-module-crossorigin-loads.html: Added.
* http/tests/security/import-script-crossorigin-loads-error-expected.txt: Added.
* http/tests/security/import-script-crossorigin-loads-error.html: Added.
* http/tests/security/import-script-crossorigin-loads-omit-expected.txt: Added.
* http/tests/security/import-script-crossorigin-loads-omit.html: Added.
* http/tests/security/resources/cors-deny.php: Added.
* http/tests/security/resources/import-module-crossorigin-loads-error-src.js: Added.
(import.string_appeared_here.then):
* http/tests/security/resources/import-module-crossorigin-loads-src.js: Added.
(import.string_appeared_here.then):
* js/dom/modules/import-execution-order-expected.txt: Added.
* js/dom/modules/import-execution-order.html: Copied from LayoutTests/js/dom/modules/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror.html.
* js/dom/modules/import-from-handler-expected.txt: Added.
* js/dom/modules/import-from-handler.html: Copied from LayoutTests/js/dom/modules/module-src-simple.html.
* js/dom/modules/import-from-javascript-url-expected.txt: Added.
* js/dom/modules/import-from-javascript-url.html: Copied from LayoutTests/js/dom/modules/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror.html.
* js/dom/modules/import-from-loaded-classic-expected.txt: Added.
* js/dom/modules/import-from-loaded-classic.html: Copied from LayoutTests/js/dom/modules/module-src-simple.html.
* js/dom/modules/import-from-loaded-module-expected.txt: Added.
* js/dom/modules/import-from-loaded-module.html: Copied from LayoutTests/js/dom/modules/module-src-simple.html.
* js/dom/modules/import-from-module-expected.txt: Added.
* js/dom/modules/import-from-module.html: Copied from LayoutTests/js/dom/modules/module-src-simple.html.
* js/dom/modules/import-incorrect-relative-specifier-expected.txt: Added.
* js/dom/modules/import-incorrect-relative-specifier.html: Copied from LayoutTests/js/dom/modules/module-src-simple.html.
* js/dom/modules/import-simple-expected.txt: Added.
* js/dom/modules/import-simple.html: Copied from LayoutTests/js/dom/modules/module-src-simple.html.
* js/dom/modules/module-document-write-src.html:
* js/dom/modules/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror.html:
* js/dom/modules/module-execution-order-mixed-with-classic-scripts.html:
* js/dom/modules/module-execution-order-mixed.html:
* js/dom/modules/module-inline-dynamic.html:
* js/dom/modules/module-inline-simple.html:
* js/dom/modules/module-load-event-with-src.html:
* js/dom/modules/module-load-same-module-from-different-entry-point-dynamic.html:
* js/dom/modules/module-load-same-module-from-different-entry-point-in-src.html:
* js/dom/modules/module-load-same-module-from-different-entry-point.html:
* js/dom/modules/module-not-found-error-event-with-src-and-import.html:
* js/dom/modules/module-src-current-script.html:
* js/dom/modules/module-src-dynamic.html:
* js/dom/modules/module-src-simple.html:
* js/dom/modules/module-type-case-insensitive.html:
* js/dom/modules/module-will-fire-beforeload.html:
* js/dom/modules/nomodule-dynamic-classic-src.html:
* js/dom/modules/nomodule-has-no-effect-on-module-inline.html:
* js/dom/modules/nomodule-has-no-effect-on-module-src.html:
* js/dom/modules/nomodule-prevents-execution-classic-script-src.html:
* js/dom/modules/nomodule-reflect.html:
* js/dom/modules/resources/error-classic-script.js: Renamed from LayoutTests/js/dom/modules/script-tests/error-classic-script.js.
* js/dom/modules/resources/import-from-loaded-classic-finish.js: Added.
* js/dom/modules/resources/import-from-loaded-classic.js: Added.
* js/dom/modules/resources/import-from-loaded-module-finish.js: Added.
* js/dom/modules/resources/import-from-loaded-module.js: Added.
* js/dom/modules/resources/module-document-write-src.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-document-write-src.js.
* js/dom/modules/resources/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror-throw.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror-throw.js.
* js/dom/modules/resources/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror.js.
* js/dom/modules/resources/module-execution-order-mixed-2.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-order-mixed-2.js.
* js/dom/modules/resources/module-execution-order-mixed-cappuccino.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-order-mixed-cappuccino.js.
* js/dom/modules/resources/module-execution-order-mixed-cocoa.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-order-mixed-cocoa.js.
* js/dom/modules/resources/module-execution-order-mixed-matcha.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-order-mixed-matcha.js.
* js/dom/modules/resources/module-execution-order-mixed-with-classic-scripts-2.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-order-mixed-with-classic-scripts-2.js.
* js/dom/modules/resources/module-execution-order-mixed-with-classic-scripts-cappuccino.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-order-mixed-with-classic-scripts-cappuccino.js.
* js/dom/modules/resources/module-execution-order-mixed-with-classic-scripts-cocoa.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-order-mixed-with-classic-scripts-cocoa.js.
* js/dom/modules/resources/module-execution-order-mixed-with-classic-scripts-matcha.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-order-mixed-with-classic-scripts-matcha.js.
* js/dom/modules/resources/module-execution-order-mixed-with-classic-scripts.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-order-mixed-with-classic-scripts.js.
* js/dom/modules/resources/module-execution-order-mixed.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-execution-order-mixed.js.
* js/dom/modules/resources/module-inline-dynamic.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-inline-dynamic.js.
* js/dom/modules/resources/module-inline-simple.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-inline-simple.js.
* js/dom/modules/resources/module-load-event-with-src.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-load-event-with-src.js.
* js/dom/modules/resources/module-load-same-module-from-different-entry-point.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-load-same-module-from-different-entry-point.js.
* js/dom/modules/resources/module-not-found-error-event-with-src-and-import.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-not-found-error-event-with-src-and-import.js.
* js/dom/modules/resources/module-src-current-script.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-src-current-script.js.
* js/dom/modules/resources/module-src-dynamic-cocoa.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-src-dynamic-cocoa.js.
* js/dom/modules/resources/module-src-dynamic.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-src-dynamic.js.
* js/dom/modules/resources/module-src-simple-cocoa.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-src-simple-cocoa.js.
* js/dom/modules/resources/module-src-simple.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-src-simple.js.
* js/dom/modules/resources/module-will-fire-beforeload.js: Renamed from LayoutTests/js/dom/modules/script-tests/module-will-fire-beforeload.js.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@211280 268f45cc-cd09-0410-ab3c-d52691b4dbfc
120 files changed:
LayoutTests/ChangeLog
LayoutTests/http/tests/misc/import-absolute-url-expected.txt [new file with mode: 0644]
LayoutTests/http/tests/misc/import-absolute-url.html [new file with mode: 0644]
LayoutTests/http/tests/security/contentSecurityPolicy/1.1/import-scriptnonce-expected.txt [new file with mode: 0644]
LayoutTests/http/tests/security/contentSecurityPolicy/1.1/import-scriptnonce.html [new file with mode: 0644]
LayoutTests/http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-allowed1.js [new file with mode: 0644]
LayoutTests/http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-allowed2.js [new file with mode: 0644]
LayoutTests/http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-allowed3.js [new file with mode: 0644]
LayoutTests/http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-allowed4.js [new file with mode: 0644]
LayoutTests/http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-allowed5.js [new file with mode: 0644]
LayoutTests/http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-allowed6.js [new file with mode: 0644]
LayoutTests/http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-blocked1.js [new file with mode: 0644]
LayoutTests/http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-blocked2.js [new file with mode: 0644]
LayoutTests/http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-blocked3.js [new file with mode: 0644]
LayoutTests/http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-blocked4.js [new file with mode: 0644]
LayoutTests/http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-blocked5.js [new file with mode: 0644]
LayoutTests/http/tests/security/contentSecurityPolicy/1.1/resources/import-scriptnonce-blocked6.js [new file with mode: 0644]
LayoutTests/http/tests/security/import-module-crossorigin-loads-error-expected.txt [new file with mode: 0644]
LayoutTests/http/tests/security/import-module-crossorigin-loads-error-src-expected.txt [new file with mode: 0644]
LayoutTests/http/tests/security/import-module-crossorigin-loads-error-src.html [new file with mode: 0644]
LayoutTests/http/tests/security/import-module-crossorigin-loads-error.html [new file with mode: 0644]
LayoutTests/http/tests/security/import-module-crossorigin-loads-expected.txt [new file with mode: 0644]
LayoutTests/http/tests/security/import-module-crossorigin-loads-src-expected.txt [new file with mode: 0644]
LayoutTests/http/tests/security/import-module-crossorigin-loads-src.html [new file with mode: 0644]
LayoutTests/http/tests/security/import-module-crossorigin-loads.html [new file with mode: 0644]
LayoutTests/http/tests/security/import-script-crossorigin-loads-error-expected.txt [new file with mode: 0644]
LayoutTests/http/tests/security/import-script-crossorigin-loads-error.html [new file with mode: 0644]
LayoutTests/http/tests/security/import-script-crossorigin-loads-omit-expected.txt [new file with mode: 0644]
LayoutTests/http/tests/security/import-script-crossorigin-loads-omit.html [new file with mode: 0644]
LayoutTests/http/tests/security/resources/cors-deny.php [new file with mode: 0755]
LayoutTests/http/tests/security/resources/import-module-crossorigin-loads-error-src.js [new file with mode: 0644]
LayoutTests/http/tests/security/resources/import-module-crossorigin-loads-src.js [new file with mode: 0644]
LayoutTests/js/dom/modules/import-execution-order-expected.txt [new file with mode: 0644]
LayoutTests/js/dom/modules/import-execution-order.html [new file with mode: 0644]
LayoutTests/js/dom/modules/import-from-handler-expected.txt [new file with mode: 0644]
LayoutTests/js/dom/modules/import-from-handler.html [new file with mode: 0644]
LayoutTests/js/dom/modules/import-from-javascript-url-expected.txt [new file with mode: 0644]
LayoutTests/js/dom/modules/import-from-javascript-url.html [new file with mode: 0644]
LayoutTests/js/dom/modules/import-from-loaded-classic-expected.txt [new file with mode: 0644]
LayoutTests/js/dom/modules/import-from-loaded-classic.html [new file with mode: 0644]
LayoutTests/js/dom/modules/import-from-loaded-module-expected.txt [new file with mode: 0644]
LayoutTests/js/dom/modules/import-from-loaded-module.html [new file with mode: 0644]
LayoutTests/js/dom/modules/import-from-module-expected.txt [new file with mode: 0644]
LayoutTests/js/dom/modules/import-from-module.html [new file with mode: 0644]
LayoutTests/js/dom/modules/import-incorrect-relative-specifier-expected.txt [new file with mode: 0644]
LayoutTests/js/dom/modules/import-incorrect-relative-specifier.html [new file with mode: 0644]
LayoutTests/js/dom/modules/import-simple-expected.txt [new file with mode: 0644]
LayoutTests/js/dom/modules/import-simple.html [new file with mode: 0644]
LayoutTests/js/dom/modules/module-document-write-src.html
LayoutTests/js/dom/modules/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror.html
LayoutTests/js/dom/modules/module-execution-order-mixed-with-classic-scripts.html
LayoutTests/js/dom/modules/module-execution-order-mixed.html
LayoutTests/js/dom/modules/module-inline-dynamic.html
LayoutTests/js/dom/modules/module-inline-simple.html
LayoutTests/js/dom/modules/module-load-event-with-src.html
LayoutTests/js/dom/modules/module-load-same-module-from-different-entry-point-dynamic.html
LayoutTests/js/dom/modules/module-load-same-module-from-different-entry-point-in-src.html
LayoutTests/js/dom/modules/module-load-same-module-from-different-entry-point.html
LayoutTests/js/dom/modules/module-not-found-error-event-with-src-and-import.html
LayoutTests/js/dom/modules/module-src-current-script.html
LayoutTests/js/dom/modules/module-src-dynamic.html
LayoutTests/js/dom/modules/module-src-simple.html
LayoutTests/js/dom/modules/module-type-case-insensitive.html
LayoutTests/js/dom/modules/module-will-fire-beforeload.html
LayoutTests/js/dom/modules/nomodule-dynamic-classic-src.html
LayoutTests/js/dom/modules/nomodule-has-no-effect-on-module-inline.html
LayoutTests/js/dom/modules/nomodule-has-no-effect-on-module-src.html
LayoutTests/js/dom/modules/nomodule-prevents-execution-classic-script-src.html
LayoutTests/js/dom/modules/nomodule-reflect.html
LayoutTests/js/dom/modules/resources/error-classic-script.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/import-from-loaded-classic-finish.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/import-from-loaded-classic.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/import-from-loaded-module-finish.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/import-from-loaded-module.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/import-src-simple.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-document-write-src.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror-throw.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-execution-error-inside-dependent-module-should-be-propagated-to-onerror.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-execution-order-mixed-2.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-execution-order-mixed-cappuccino.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-execution-order-mixed-cocoa.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-execution-order-mixed-matcha.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-execution-order-mixed-with-classic-scripts-2.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-execution-order-mixed-with-classic-scripts-cappuccino.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-execution-order-mixed-with-classic-scripts-cocoa.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-execution-order-mixed-with-classic-scripts-matcha.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-execution-order-mixed-with-classic-scripts.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-execution-order-mixed.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-inline-dynamic.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-inline-simple.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-load-event-with-src.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-load-same-module-from-different-entry-point.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-not-found-error-event-with-src-and-import.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-src-current-script.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-src-dynamic-cocoa.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-src-dynamic.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-src-simple-cocoa.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-src-simple.js [new file with mode: 0644]
LayoutTests/js/dom/modules/resources/module-will-fire-beforeload.js [new file with mode: 0644]
LayoutTests/js/dom/modules/script-tests/error-classic-script.js
Source/WebCore/CMakeLists.txt
Source/WebCore/ChangeLog
Source/WebCore/WebCore.xcodeproj/project.pbxproj
Source/WebCore/bindings/js/CachedModuleScriptLoader.cpp
Source/WebCore/bindings/js/CachedScriptFetcher.cpp
Source/WebCore/bindings/js/CachedScriptFetcher.h
Source/WebCore/bindings/js/JSDOMWindowBase.cpp
Source/WebCore/bindings/js/JSDOMWindowBase.h
Source/WebCore/bindings/js/JSLazyEventListener.cpp
Source/WebCore/bindings/js/ScriptController.cpp
Source/WebCore/bindings/js/ScriptModuleLoader.cpp
Source/WebCore/bindings/js/ScriptModuleLoader.h
Source/WebCore/dom/InlineClassicScript.h
Source/WebCore/dom/LoadableClassicScript.cpp
Source/WebCore/dom/LoadableClassicScript.h
Source/WebCore/dom/LoadableModuleScript.h
Source/WebCore/dom/LoadableScript.h
Source/WebCore/dom/ScriptElement.h
Source/WebCore/dom/ScriptElementCachedScriptFetcher.cpp [new file with mode: 0644]
Source/WebCore/dom/ScriptElementCachedScriptFetcher.h [new file with mode: 0644]