[WebIDL] Remove JS builtin bindings for FetchRequest, DOMWindowFetch and WorkerGlobal...
authorweinig@apple.com <weinig@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 30 Jul 2017 20:27:19 +0000 (20:27 +0000)
committerweinig@apple.com <weinig@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 30 Jul 2017 20:27:19 +0000 (20:27 +0000)
https://bugs.webkit.org/show_bug.cgi?id=174974

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

* web-platform-tests/fetch/api/basic/mode-same-origin.any-expected.txt:
* web-platform-tests/fetch/api/basic/scheme-about.any-expected.txt:
* web-platform-tests/fetch/api/basic/scheme-blob-expected.txt:
* web-platform-tests/fetch/api/basic/scheme-others-expected.txt:
* web-platform-tests/fetch/api/cors/cors-cookies.any-expected.txt:
* web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-expected.txt:
* web-platform-tests/fetch/api/request/request-bad-port-expected.txt:
Update results to have the correct line number for exceptions reported in the console.

Source/WebCore:

* CMakeLists.txt:
* DerivedSources.make:
* WebCore.xcodeproj/project.pbxproj:
* Modules/fetch/DOMWindowFetch.js: Removed.
* Modules/fetch/FetchRequest.js: Removed.
* Modules/fetch/WorkerGlobalScopeFetch.js: Removed.
Remove builtin files.

* Modules/fetch/DOMWindowFetch.cpp:
(WebCore::DOMWindowFetch::fetch):
* Modules/fetch/DOMWindowFetch.h:
* Modules/fetch/DOMWindowFetch.idl:
* Modules/fetch/WorkerGlobalScopeFetch.cpp:
(WebCore::WorkerGlobalScopeFetch::fetch):
* Modules/fetch/WorkerGlobalScopeFetch.h:
* Modules/fetch/WorkerGlobalScopeFetch.idl:
Remove builtin and instead create FetchRequest in the implementation.

* Modules/fetch/FetchBody.cpp:
(WebCore::FetchBody::extract):
* Modules/fetch/FetchBody.h:
* Modules/fetch/FetchBodyOwner.cpp:
(WebCore::FetchBodyOwner::extractBody):
* Modules/fetch/FetchBodyOwner.h:
* Modules/fetch/FetchResponse.cpp:
* Modules/fetch/FetchResponse.h:
Rename FetchBody::BindingDataType to FetchBody::Init to match its IDL naming.

* Modules/fetch/FetchHeaders.cpp:
(WebCore::appendToHeaderMap):
(WebCore::fillHeaderMap):
(WebCore::FetchHeaders::create):
(WebCore::FetchHeaders::fill):
* Modules/fetch/FetchHeaders.h:
Add helpers to implement the fill algorithm for various input types.
Leave the existing fill for now, as it is still used by the FetchResponse
builtin, but will eventually be removed.

* Modules/fetch/FetchRequest.cpp:
(WebCore::FetchRequest::initializeOptions):
(WebCore::FetchRequest::initializeWith):
(WebCore::FetchRequest::setBody):
(WebCore::FetchRequest::create):
(WebCore::FetchRequest::setBodyFromInputRequest): Deleted.
* Modules/fetch/FetchRequest.h:
Migrate builtin code to the implementation. This is 1-to-1 re-implementation,
so I did not attempt to fix any conformance issues. That will come in follow up.

* Modules/fetch/FetchRequest.idl:
Replace builtins with an IDL constructor.

* Modules/fetch/FetchRequestInit.h:
* Modules/fetch/FetchRequestInit.idl:
Add missing headers and body to FetchRequestInit.

LayoutTests:

* http/tests/inspector/network/fetch-network-data-expected.txt:
Update results to have the correct line number for exceptions reported in the console.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@220050 268f45cc-cd09-0410-ab3c-d52691b4dbfc

36 files changed:
LayoutTests/ChangeLog
LayoutTests/http/tests/inspector/network/fetch-network-data-expected.txt
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-blob-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-others-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-bad-port-expected.txt
Source/WebCore/CMakeLists.txt
Source/WebCore/ChangeLog
Source/WebCore/DerivedSources.make
Source/WebCore/Modules/fetch/DOMWindowFetch.cpp
Source/WebCore/Modules/fetch/DOMWindowFetch.h
Source/WebCore/Modules/fetch/DOMWindowFetch.idl
Source/WebCore/Modules/fetch/DOMWindowFetch.js [deleted file]
Source/WebCore/Modules/fetch/FetchBody.cpp
Source/WebCore/Modules/fetch/FetchBody.h
Source/WebCore/Modules/fetch/FetchBodyOwner.cpp
Source/WebCore/Modules/fetch/FetchBodyOwner.h
Source/WebCore/Modules/fetch/FetchHeaders.cpp
Source/WebCore/Modules/fetch/FetchHeaders.h
Source/WebCore/Modules/fetch/FetchRequest.cpp
Source/WebCore/Modules/fetch/FetchRequest.h
Source/WebCore/Modules/fetch/FetchRequest.idl
Source/WebCore/Modules/fetch/FetchRequest.js [deleted file]
Source/WebCore/Modules/fetch/FetchRequestInit.h
Source/WebCore/Modules/fetch/FetchRequestInit.idl
Source/WebCore/Modules/fetch/FetchResponse.cpp
Source/WebCore/Modules/fetch/FetchResponse.h
Source/WebCore/Modules/fetch/WorkerGlobalScopeFetch.cpp
Source/WebCore/Modules/fetch/WorkerGlobalScopeFetch.h
Source/WebCore/Modules/fetch/WorkerGlobalScopeFetch.idl
Source/WebCore/Modules/fetch/WorkerGlobalScopeFetch.js [deleted file]
Source/WebCore/WebCore.xcodeproj/project.pbxproj

index 18c87a9..b6f9a09 100644 (file)
@@ -1,3 +1,13 @@
+2017-07-30  Sam Weinig  <sam@webkit.org>
+
+        [WebIDL] Remove JS builtin bindings for FetchRequest, DOMWindowFetch and WorkerGlobalScopeFetch
+        https://bugs.webkit.org/show_bug.cgi?id=174974
+
+        Reviewed by Darin Adler.
+
+        * http/tests/inspector/network/fetch-network-data-expected.txt:
+        Update results to have the correct line number for exceptions reported in the console.
+
 2017-07-30  Said Abou-Hallawa  <sabouhallawa@apple.com>
 
         RenderImageResourceStyleImage::image() should return the nullImage() if the image is not available
index 8ed4380..b8fcd13 100644 (file)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://localhost:8000/inspector/network/resources/cors-data.pl. Cross origin requests are not allowed when using same-origin fetch mode.
+CONSOLE MESSAGE: line 2: Fetch API cannot load http://localhost:8000/inspector/network/resources/cors-data.pl. Cross origin requests are not allowed when using same-origin fetch mode.
 Tests for Network data with different types of Fetch requests.
 
 
index 1c2415a..29eceb9 100644 (file)
@@ -1,3 +1,19 @@
+2017-07-30  Sam Weinig  <sam@webkit.org>
+
+        [WebIDL] Remove JS builtin bindings for FetchRequest, DOMWindowFetch and WorkerGlobalScopeFetch
+        https://bugs.webkit.org/show_bug.cgi?id=174974
+
+        Reviewed by Darin Adler.
+
+        * web-platform-tests/fetch/api/basic/mode-same-origin.any-expected.txt:
+        * web-platform-tests/fetch/api/basic/scheme-about.any-expected.txt:
+        * web-platform-tests/fetch/api/basic/scheme-blob-expected.txt:
+        * web-platform-tests/fetch/api/basic/scheme-others-expected.txt:
+        * web-platform-tests/fetch/api/cors/cors-cookies.any-expected.txt:
+        * web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-expected.txt:
+        * web-platform-tests/fetch/api/request/request-bad-port-expected.txt:
+        Update results to have the correct line number for exceptions reported in the console.
+
 2017-07-28  Sam Weinig  <sam@webkit.org>
 
         [WebIDL] Remove JS builtin bindings for FetchHeaders
index 6380023..289605c 100644 (file)
@@ -1,5 +1,5 @@
-CONSOLE MESSAGE: line 1: Fetch API cannot load https://localhost:9443/fetch/api/resources/top.txt. Cross origin requests are not allowed when using same-origin fetch mode.
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://127.0.0.1:8800/fetch/api/resources/top.txt. Cross origin requests are not allowed when using same-origin fetch mode.
+CONSOLE MESSAGE: line 12: Fetch API cannot load https://localhost:9443/fetch/api/resources/top.txt. Cross origin requests are not allowed when using same-origin fetch mode.
+CONSOLE MESSAGE: line 12: Fetch API cannot load http://127.0.0.1:8800/fetch/api/resources/top.txt. Cross origin requests are not allowed when using same-origin fetch mode.
 CONSOLE MESSAGE: Unsafe attempt to load URL https://localhost:9443/fetch/api/resources/top.txt?location=https%3A%2F%2Flocalhost%3A9443%2Ffetch%2Fapi%2Fresources%2Ftop.txt&count=1 from frame with URL http://localhost:8800/fetch/api/basic/mode-same-origin.any.html. Domains, protocols and ports must match.
 
 CONSOLE MESSAGE: Unsafe attempt to load URL http://127.0.0.1:8800/fetch/api/resources/top.txt?location=http%3A%2F%2F127.0.0.1%3A8800%2Ffetch%2Fapi%2Fresources%2Ftop.txt&count=1 from frame with URL http://localhost:8800/fetch/api/basic/mode-same-origin.any.html. Domains, protocols and ports must match.
index 3aa502a..b608de7 100644 (file)
@@ -1,9 +1,9 @@
-CONSOLE MESSAGE: line 1: Fetch API cannot load about:blank. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 10: Fetch API cannot load about:blank. Cross origin requests are only supported for HTTP.
 CONSOLE MESSAGE: Fetch API cannot load about:blank. Preflight response is not successful
-CONSOLE MESSAGE: line 1: Fetch API cannot load about:blank. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load about:invalid.com. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load about:config. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load about:unicorn. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 10: Fetch API cannot load about:blank. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 27: Fetch API cannot load about:invalid.com. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 27: Fetch API cannot load about:config. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 27: Fetch API cannot load about:unicorn. Cross origin requests are only supported for HTTP.
 
 FAIL Fetching about:blank (GET) is OK promise_test: Unhandled rejection with value: object "TypeError: Type error"
 FAIL Fetching about:blank (PUT) is OK promise_test: Unhandled rejection with value: object "TypeError: Type error"
index a5fb5e6..c9f880c 100644 (file)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: line 1: Fetch API cannot load blob:http://www.localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 27: Fetch API cannot load blob:http://www.localhost:8800/. Cross origin requests are only supported for HTTP.
 
 PASS Fetching [GET] URL.createObjectURL(blob) is OK 
 PASS Fetching [GET] blob:http://www.localhost:8800/ is KO 
index 8fda94d..ed68ec6 100644 (file)
@@ -1,19 +1,19 @@
-CONSOLE MESSAGE: line 1: Fetch API cannot load aaa://localhost:8800/. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load cap://localhost:8800/. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load cid://localhost:8800/. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load dav://localhost:8800/. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load dict://localhost:8800/. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load dns://localhost:8800/. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load geo://localhost:8800/. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load im://localhost:8800/. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load imap://localhost:8800/. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load ipp://localhost:8800/. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load ldap://localhost:8800/. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load mailto://localhost:8800/. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load nfs://localhost:8800/. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load pop://localhost:8800/. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load rtsp://localhost:8800/. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load snmp://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 10: Fetch API cannot load aaa://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 10: Fetch API cannot load cap://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 10: Fetch API cannot load cid://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 10: Fetch API cannot load dav://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 10: Fetch API cannot load dict://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 10: Fetch API cannot load dns://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 10: Fetch API cannot load geo://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 10: Fetch API cannot load im://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 10: Fetch API cannot load imap://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 10: Fetch API cannot load ipp://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 10: Fetch API cannot load ldap://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 10: Fetch API cannot load mailto://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 10: Fetch API cannot load nfs://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 10: Fetch API cannot load pop://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 10: Fetch API cannot load rtsp://localhost:8800/. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 10: Fetch API cannot load snmp://localhost:8800/. Cross origin requests are only supported for HTTP.
 
 PASS Fetching aaa://localhost:8800/ is KO 
 PASS Fetching cap://localhost:8800/ is KO 
index 1775ffc..53edcd4 100644 (file)
@@ -1,5 +1,5 @@
 Blocked access to external URL http://www.localhost:8800/fetch/api/resources/inspect-headers.py?cors&headers=cookie
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://www.localhost:8800/fetch/api/resources/inspect-headers.py?cors&headers=cookie due to access control checks.
+CONSOLE MESSAGE: line 26: Fetch API cannot load http://www.localhost:8800/fetch/api/resources/inspect-headers.py?cors&headers=cookie due to access control checks.
 
 PASS Omit mode: no cookie sent 
 FAIL Include mode: 1 cookie assert_equals: Request includes cookie(s) expected (string) "a=1" but got (object) null
index da6c6ad..94b8a59 100644 (file)
@@ -1,5 +1,5 @@
 Blocked access to external URL https://www.localhost:9443/fetch/api/resources/inspect-headers.py?cors&headers=referer
-CONSOLE MESSAGE: line 1: Fetch API cannot load https://www.localhost:9443/fetch/api/resources/inspect-headers.py?cors&headers=referer due to access control checks.
+CONSOLE MESSAGE: line 14: Fetch API cannot load https://www.localhost:9443/fetch/api/resources/inspect-headers.py?cors&headers=referer due to access control checks.
 
 FAIL Request's referrer is origin promise_test: Unhandled rejection with value: object "TypeError: Type error"
 
index a8e6ac8..6d6a44d 100644 (file)
 Blocked access to external URL http://example.com:1/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:1/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:1/ due to access control checks.
 Blocked access to external URL http://example.com:7/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:7/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:7/ due to access control checks.
 Blocked access to external URL http://example.com:9/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:9/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:9/ due to access control checks.
 Blocked access to external URL http://example.com:11/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:11/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:11/ due to access control checks.
 Blocked access to external URL http://example.com:13/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:13/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:13/ due to access control checks.
 Blocked access to external URL http://example.com:15/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:15/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:15/ due to access control checks.
 Blocked access to external URL http://example.com:17/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:17/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:17/ due to access control checks.
 Blocked access to external URL http://example.com:19/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:19/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:19/ due to access control checks.
 Blocked access to external URL http://example.com:20/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:20/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:20/ due to access control checks.
 Blocked access to external URL http://example.com:21/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:21/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:21/ due to access control checks.
 Blocked access to external URL http://example.com:22/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:22/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:22/ due to access control checks.
 Blocked access to external URL http://example.com:23/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:23/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:23/ due to access control checks.
 Blocked access to external URL http://example.com:25/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:25/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:25/ due to access control checks.
 Blocked access to external URL http://example.com:37/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:37/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:37/ due to access control checks.
 Blocked access to external URL http://example.com:42/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:42/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:42/ due to access control checks.
 Blocked access to external URL http://example.com:43/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:43/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:43/ due to access control checks.
 Blocked access to external URL http://example.com:53/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:53/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:53/ due to access control checks.
 Blocked access to external URL http://example.com:77/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:77/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:77/ due to access control checks.
 Blocked access to external URL http://example.com:79/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:79/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:79/ due to access control checks.
 Blocked access to external URL http://example.com:87/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:87/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:87/ due to access control checks.
 Blocked access to external URL http://example.com:95/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:95/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:95/ due to access control checks.
 Blocked access to external URL http://example.com:101/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:101/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:101/ due to access control checks.
 Blocked access to external URL http://example.com:102/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:102/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:102/ due to access control checks.
 Blocked access to external URL http://example.com:103/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:103/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:103/ due to access control checks.
 Blocked access to external URL http://example.com:104/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:104/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:104/ due to access control checks.
 Blocked access to external URL http://example.com:109/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:109/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:109/ due to access control checks.
 Blocked access to external URL http://example.com:110/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:110/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:110/ due to access control checks.
 Blocked access to external URL http://example.com:111/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:111/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:111/ due to access control checks.
 Blocked access to external URL http://example.com:113/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:113/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:113/ due to access control checks.
 Blocked access to external URL http://example.com:115/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:115/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:115/ due to access control checks.
 Blocked access to external URL http://example.com:117/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:117/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:117/ due to access control checks.
 Blocked access to external URL http://example.com:119/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:119/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:119/ due to access control checks.
 Blocked access to external URL http://example.com:123/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:123/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:123/ due to access control checks.
 Blocked access to external URL http://example.com:135/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:135/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:135/ due to access control checks.
 Blocked access to external URL http://example.com:139/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:139/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:139/ due to access control checks.
 Blocked access to external URL http://example.com:143/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:143/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:143/ due to access control checks.
 Blocked access to external URL http://example.com:179/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:179/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:179/ due to access control checks.
 Blocked access to external URL http://example.com:389/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:389/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:389/ due to access control checks.
 Blocked access to external URL http://example.com:465/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:465/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:465/ due to access control checks.
 Blocked access to external URL http://example.com:512/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:512/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:512/ due to access control checks.
 Blocked access to external URL http://example.com:513/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:513/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:513/ due to access control checks.
 Blocked access to external URL http://example.com:514/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:514/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:514/ due to access control checks.
 Blocked access to external URL http://example.com:515/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:515/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:515/ due to access control checks.
 Blocked access to external URL http://example.com:526/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:526/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:526/ due to access control checks.
 Blocked access to external URL http://example.com:530/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:530/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:530/ due to access control checks.
 Blocked access to external URL http://example.com:531/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:531/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:531/ due to access control checks.
 Blocked access to external URL http://example.com:532/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:532/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:532/ due to access control checks.
 Blocked access to external URL http://example.com:540/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:540/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:540/ due to access control checks.
 Blocked access to external URL http://example.com:556/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:556/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:556/ due to access control checks.
 Blocked access to external URL http://example.com:563/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:563/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:563/ due to access control checks.
 Blocked access to external URL http://example.com:587/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:587/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:587/ due to access control checks.
 Blocked access to external URL http://example.com:601/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:601/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:601/ due to access control checks.
 Blocked access to external URL http://example.com:636/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:636/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:636/ due to access control checks.
 Blocked access to external URL http://example.com:993/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:993/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:993/ due to access control checks.
 Blocked access to external URL http://example.com:995/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:995/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:995/ due to access control checks.
 Blocked access to external URL http://example.com:2049/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:2049/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:2049/ due to access control checks.
 Blocked access to external URL http://example.com:3659/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:3659/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:3659/ due to access control checks.
 Blocked access to external URL http://example.com:4045/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:4045/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:4045/ due to access control checks.
 Blocked access to external URL http://example.com:6000/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:6000/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:6000/ due to access control checks.
 Blocked access to external URL http://example.com:6665/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:6665/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:6665/ due to access control checks.
 Blocked access to external URL http://example.com:6666/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:6666/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:6666/ due to access control checks.
 Blocked access to external URL http://example.com:6667/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:6667/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:6667/ due to access control checks.
 Blocked access to external URL http://example.com:6668/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:6668/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:6668/ due to access control checks.
 Blocked access to external URL http://example.com:6669/
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:6669/ due to access control checks.
+CONSOLE MESSAGE: line 79: Fetch API cannot load http://example.com:6669/ due to access control checks.
 
 PASS Request on bad port 1 should throw TypeError. 
 PASS Request on bad port 7 should throw TypeError. 
index 7410151..37407b8 100644 (file)
@@ -3823,11 +3823,8 @@ add_dependencies(WebCoreTestSupportBindings WebCoreDerivedSources)
 # WebCore JS Builtins
 
 set(WebCore_BUILTINS_SOURCES
-    ${WEBCORE_DIR}/Modules/fetch/DOMWindowFetch.js
     ${WEBCORE_DIR}/Modules/fetch/FetchInternals.js
-    ${WEBCORE_DIR}/Modules/fetch/FetchRequest.js
     ${WEBCORE_DIR}/Modules/fetch/FetchResponse.js
-    ${WEBCORE_DIR}/Modules/fetch/WorkerGlobalScopeFetch.js
     ${WEBCORE_DIR}/Modules/mediastream/NavigatorUserMedia.js
     ${WEBCORE_DIR}/Modules/mediastream/RTCPeerConnection.js
     ${WEBCORE_DIR}/Modules/mediastream/RTCPeerConnectionInternals.js
index 02fcee6..7f590bc 100644 (file)
@@ -1,3 +1,65 @@
+2017-07-30  Sam Weinig  <sam@webkit.org>
+
+        [WebIDL] Remove JS builtin bindings for FetchRequest, DOMWindowFetch and WorkerGlobalScopeFetch
+        https://bugs.webkit.org/show_bug.cgi?id=174974
+
+        Reviewed by Darin Adler.
+
+        * CMakeLists.txt:
+        * DerivedSources.make:
+        * WebCore.xcodeproj/project.pbxproj:
+        * Modules/fetch/DOMWindowFetch.js: Removed.
+        * Modules/fetch/FetchRequest.js: Removed.
+        * Modules/fetch/WorkerGlobalScopeFetch.js: Removed.
+        Remove builtin files.
+
+        * Modules/fetch/DOMWindowFetch.cpp:
+        (WebCore::DOMWindowFetch::fetch):
+        * Modules/fetch/DOMWindowFetch.h:
+        * Modules/fetch/DOMWindowFetch.idl:
+        * Modules/fetch/WorkerGlobalScopeFetch.cpp:
+        (WebCore::WorkerGlobalScopeFetch::fetch):
+        * Modules/fetch/WorkerGlobalScopeFetch.h:
+        * Modules/fetch/WorkerGlobalScopeFetch.idl:
+        Remove builtin and instead create FetchRequest in the implementation.
+
+        * Modules/fetch/FetchBody.cpp:
+        (WebCore::FetchBody::extract):
+        * Modules/fetch/FetchBody.h:
+        * Modules/fetch/FetchBodyOwner.cpp:
+        (WebCore::FetchBodyOwner::extractBody):
+        * Modules/fetch/FetchBodyOwner.h:
+        * Modules/fetch/FetchResponse.cpp:
+        * Modules/fetch/FetchResponse.h:
+        Rename FetchBody::BindingDataType to FetchBody::Init to match its IDL naming.
+
+        * Modules/fetch/FetchHeaders.cpp:
+        (WebCore::appendToHeaderMap):
+        (WebCore::fillHeaderMap):
+        (WebCore::FetchHeaders::create):
+        (WebCore::FetchHeaders::fill):
+        * Modules/fetch/FetchHeaders.h:
+        Add helpers to implement the fill algorithm for various input types.
+        Leave the existing fill for now, as it is still used by the FetchResponse
+        builtin, but will eventually be removed.
+
+        * Modules/fetch/FetchRequest.cpp:
+        (WebCore::FetchRequest::initializeOptions):
+        (WebCore::FetchRequest::initializeWith):
+        (WebCore::FetchRequest::setBody):
+        (WebCore::FetchRequest::create):
+        (WebCore::FetchRequest::setBodyFromInputRequest): Deleted.
+        * Modules/fetch/FetchRequest.h:
+        Migrate builtin code to the implementation. This is 1-to-1 re-implementation,
+        so I did not attempt to fix any conformance issues. That will come in follow up.
+
+        * Modules/fetch/FetchRequest.idl:
+        Replace builtins with an IDL constructor.
+
+        * Modules/fetch/FetchRequestInit.h:
+        * Modules/fetch/FetchRequestInit.idl:
+        Add missing headers and body to FetchRequestInit.
+
 2017-07-30  Said Abou-Hallawa  <sabouhallawa@apple.com>
 
         RenderImageResourceStyleImage::image() should return the nullImage() if the image is not available
index 736a7fc..c9516b5 100644 (file)
@@ -1381,11 +1381,8 @@ CommandLineAPIModuleSource.h : CommandLineAPIModuleSource.js
 # WebCore JS Builtins
 
 WebCore_BUILTINS_SOURCES = \
-    ${WebCore}/Modules/fetch/DOMWindowFetch.js \
     $(WebCore)/Modules/fetch/FetchInternals.js \
-    $(WebCore)/Modules/fetch/FetchRequest.js \
     $(WebCore)/Modules/fetch/FetchResponse.js \
-    ${WebCore}/Modules/fetch/WorkerGlobalScopeFetch.js \
     $(WebCore)/Modules/mediastream/NavigatorUserMedia.js \
     $(WebCore)/Modules/mediastream/RTCPeerConnection.js \
     $(WebCore)/Modules/mediastream/RTCPeerConnectionInternals.js \
index c59d365..44832cc 100644 (file)
 
 namespace WebCore {
 
-void DOMWindowFetch::fetch(DOMWindow& window, FetchRequest& request, Ref<DeferredPromise>&& promise)
+void DOMWindowFetch::fetch(DOMWindow& window, FetchRequest::Info&& input, FetchRequest::Init&& init, Ref<DeferredPromise>&& promise)
 {
     auto* document = window.document();
-    if (!document)
+    if (!document) {
+        promise->reject(InvalidStateError);
         return;
-    FetchResponse::fetch(*document, request, WTFMove(promise));
+    }
+
+    auto request = FetchRequest::create(*document, WTFMove(input), WTFMove(init));
+    if (request.hasException()) {
+        promise->reject(request.releaseException());
+        return;
+    }
+
+    FetchResponse::fetch(*document, request.releaseReturnValue().get(), WTFMove(promise));
 }
 
 } // namespace WebCore
index 13bf75a..df71174 100644 (file)
 
 #if ENABLE(FETCH_API)
 
+#include "FetchRequest.h"
 #include "JSDOMPromiseDeferred.h"
 #include <wtf/Forward.h>
 
 namespace WebCore {
 
 class DOMWindow;
-class FetchRequest;
 
 class DOMWindowFetch {
 public:
-    static void fetch(DOMWindow&, FetchRequest&, Ref<DeferredPromise>&&);
+    static void fetch(DOMWindow&, FetchRequest::Info&&, FetchRequest::Init&&, Ref<DeferredPromise>&&);
 };
 
 } // namespace WebCore
index 077bcab..30961a6 100644 (file)
@@ -32,6 +32,5 @@ typedef (FetchRequest or USVString) RequestInfo;
     Conditional=FETCH_API,
     EnabledAtRuntime=FetchAPI,
 ] partial interface DOMWindow {
-    [JSBuiltin] Promise<FetchResponse> fetch(RequestInfo input, optional FetchRequestInit init);
-    [PrivateIdentifier, ImplementedAs=fetch] Promise<FetchResponse> fetchRequest(FetchRequest request);
+    Promise<FetchResponse> fetch(RequestInfo input, optional FetchRequestInit init);
 };
diff --git a/Source/WebCore/Modules/fetch/DOMWindowFetch.js b/Source/WebCore/Modules/fetch/DOMWindowFetch.js
deleted file mode 100644 (file)
index ef6d075..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2016 Apple Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// @conditional=ENABLE(FETCH_API)
-
-function fetch(input, init)
-{
-    "use strict";
-
-    try {
-        return @fetchRequest(new @Request(input, init));
-    } catch (e) {
-        return @Promise.@reject(e);
-    }
-}
index 1014c94..8de530f 100644 (file)
@@ -42,7 +42,7 @@
 
 namespace WebCore {
 
-FetchBody FetchBody::extract(ScriptExecutionContext& context, BindingDataType&& value, String& contentType)
+FetchBody FetchBody::extract(ScriptExecutionContext& context, Init&& value, String& contentType)
 {
     if (WTF::holds_alternative<RefPtr<Blob>>(value)) {
         Ref<const Blob> blob = WTF::get<RefPtr<Blob>>(value).releaseNonNull();
index ebafc9b..e464fb9 100644 (file)
@@ -63,8 +63,8 @@ public:
     bool isText() const { return WTF::holds_alternative<String>(m_data); }
     bool isReadableStream() const { return m_isReadableStream; }
 
-    using BindingDataType = Variant<RefPtr<Blob>, RefPtr<ArrayBufferView>, RefPtr<ArrayBuffer>, RefPtr<DOMFormData>, RefPtr<URLSearchParams>, String>;
-    static FetchBody extract(ScriptExecutionContext&, BindingDataType&&, String&);
+    using Init = Variant<RefPtr<Blob>, RefPtr<ArrayBufferView>, RefPtr<ArrayBuffer>, RefPtr<DOMFormData>, RefPtr<URLSearchParams>, String>;
+    static FetchBody extract(ScriptExecutionContext&, Init&&, String&);
     static FetchBody loadingBody() { return { }; }
     static FetchBody readableStreamBody();
 
index 650faab..fcc93e2 100644 (file)
@@ -109,7 +109,7 @@ void FetchBodyOwner::cloneBody(const FetchBodyOwner& owner)
     m_body = owner.m_body->clone();
 }
 
-void FetchBodyOwner::extractBody(ScriptExecutionContext& context, FetchBody::BindingDataType&& value)
+void FetchBodyOwner::extractBody(ScriptExecutionContext& context, FetchBody::Init&& value)
 {
     m_body = FetchBody::extract(context, WTFMove(value), m_contentType);
 }
index 4eb4801..f716326 100644 (file)
@@ -65,7 +65,7 @@ protected:
     bool isBodyNull() const { return !m_body; }
     void cloneBody(const FetchBodyOwner&);
 
-    void extractBody(ScriptExecutionContext&, FetchBody::BindingDataType&&);
+    void extractBody(ScriptExecutionContext&, FetchBody::Init&&);
     void updateContentType();
     void consumeOnceLoadingFinished(FetchBodyConsumer::Type, Ref<DeferredPromise>&&);
 
index 46fa014..a834edd 100644 (file)
@@ -62,34 +62,72 @@ static ExceptionOr<void> appendToHeaderMap(const String& name, const String& val
     return { };
 }
 
+static ExceptionOr<void> appendToHeaderMap(const HTTPHeaderMap::HTTPHeaderMapConstIterator::KeyValue& header, HTTPHeaderMap& headers, FetchHeaders::Guard guard)
+{
+    auto canWriteResult = canWriteHeader(header.key, header.value, guard);
+    if (canWriteResult.hasException())
+        return canWriteResult.releaseException();
+    if (!canWriteResult.releaseReturnValue())
+        return { };
+    if (header.keyAsHTTPHeaderName)
+        headers.add(header.keyAsHTTPHeaderName.value(), header.value);
+    else
+        headers.add(header.key, header.value);
+    return { };
+}
+
+// https://fetch.spec.whatwg.org/#concept-headers-fill
+static ExceptionOr<void> fillHeaderMap(HTTPHeaderMap& headers, const FetchHeaders::Init& headersInit, FetchHeaders::Guard guard)
+{
+    if (WTF::holds_alternative<Vector<Vector<String>>>(headersInit)) {
+        auto& sequence = WTF::get<Vector<Vector<String>>>(headersInit);
+        for (auto& header : sequence) {
+            if (header.size() != 2)
+                return Exception { TypeError, "Header sub-sequence must contain exactly two items" };
+            auto result = appendToHeaderMap(header[0], header[1], headers, guard);
+            if (result.hasException())
+                return result.releaseException();
+        }
+    } else {
+        auto& record = WTF::get<Vector<WTF::KeyValuePair<String, String>>>(headersInit);
+        for (auto& header : record) {
+            auto result = appendToHeaderMap(header.key, header.value, headers, guard);
+            if (result.hasException())
+                return result.releaseException();
+        }
+    }
 
-ExceptionOr<Ref<FetchHeaders>> FetchHeaders::create(std::optional<HeadersInit>&& headersInit)
+    return { };
+}
+
+ExceptionOr<Ref<FetchHeaders>> FetchHeaders::create(std::optional<Init>&& headersInit)
 {
     HTTPHeaderMap headers;
 
     if (headersInit) {
-        if (WTF::holds_alternative<Vector<Vector<String>>>(*headersInit)) {
-            auto& sequence = WTF::get<Vector<Vector<String>>>(*headersInit);
-            for (auto& header : sequence) {
-                if (header.size() != 2)
-                    return Exception { TypeError, "Header sub-sequence must contain exactly two items" };
-                auto result = appendToHeaderMap(header[0], header[1], headers, Guard::None);
-                if (result.hasException())
-                    return result.releaseException();
-            }
-        } else {
-            auto& record = WTF::get<Vector<WTF::KeyValuePair<String, String>>>(*headersInit);
-            for (auto& header : record) {
-                auto result = appendToHeaderMap(header.key, header.value, headers, Guard::None);
-                if (result.hasException())
-                    return result.releaseException();
-            }
-        }
+        auto result = fillHeaderMap(headers, *headersInit, Guard::None);
+        if (result.hasException())
+            return result.releaseException();
     }
 
     return adoptRef(*new FetchHeaders { Guard::None, WTFMove(headers) });
 }
 
+ExceptionOr<void> FetchHeaders::fill(const Init& headerInit)
+{
+    return fillHeaderMap(m_headers, headerInit, m_guard);
+}
+
+ExceptionOr<void> FetchHeaders::fill(const FetchHeaders& otherHeaders)
+{
+    for (auto& header : otherHeaders.m_headers) {
+        auto result = appendToHeaderMap(header, m_headers, m_guard);
+        if (result.hasException())
+            return result.releaseException();
+    }
+
+    return { };
+}
 
 ExceptionOr<void> FetchHeaders::append(const String& name, const String& value)
 {
index 2e52cd5..00e3bf5 100644 (file)
@@ -49,9 +49,7 @@ public:
     };
 
     using Init = Variant<Vector<Vector<String>>, Vector<WTF::KeyValuePair<String, String>>>;
-
-    using HeadersInit = Variant<Vector<Vector<String>>, Vector<WTF::KeyValuePair<String, String>>>;
-    static ExceptionOr<Ref<FetchHeaders>> create(std::optional<HeadersInit>&&);
+    static ExceptionOr<Ref<FetchHeaders>> create(std::optional<Init>&&);
 
     static Ref<FetchHeaders> create(Guard guard = Guard::None) { return adoptRef(*new FetchHeaders { guard }); }
     static Ref<FetchHeaders> create(const FetchHeaders& headers) { return adoptRef(*new FetchHeaders { headers }); }
@@ -62,6 +60,9 @@ public:
     ExceptionOr<bool> has(const String&) const;
     ExceptionOr<void> set(const String& name, const String& value);
 
+    ExceptionOr<void> fill(const Init&);
+    ExceptionOr<void> fill(const FetchHeaders&);
+
     void fill(const FetchHeaders*);
     void filterAndFill(const HTTPHeaderMap&, Guard);
 
@@ -85,18 +86,19 @@ public:
     void setGuard(Guard);
 
 private:
-    FetchHeaders(Guard guard, HTTPHeaderMap&& headers = { })
-        : m_guard(guard)
-        , m_headers(WTFMove(headers))
-    {
-    }
-
+    explicit FetchHeaders(Guard guard, HTTPHeaderMap&& headers = { });
     FetchHeaders(const FetchHeaders&);
 
     Guard m_guard;
     HTTPHeaderMap m_headers;
 };
 
+inline FetchHeaders::FetchHeaders(Guard guard, HTTPHeaderMap&& headers)
+    : m_guard(guard)
+    , m_headers(WTFMove(headers))
+{
+}
+
 inline FetchHeaders::FetchHeaders(const FetchHeaders& other)
     : m_guard(other.m_guard)
     , m_headers(other.m_headers)
index 8c44d01..d5f87cd 100644 (file)
@@ -119,7 +119,7 @@ static bool methodCanHaveBody(const FetchRequest::InternalRequest& internalReque
     return internalRequest.request.httpMethod() != "GET" && internalRequest.request.httpMethod() != "HEAD";
 }
 
-ExceptionOr<FetchHeaders&> FetchRequest::initializeOptions(const Init& init)
+ExceptionOr<void> FetchRequest::initializeOptions(const Init& init)
 {
     ASSERT(scriptExecutionContext());
 
@@ -135,10 +135,11 @@ ExceptionOr<FetchHeaders&> FetchRequest::initializeOptions(const Init& init)
             return Exception { TypeError, ASCIILiteral("There cannot be an integrity in no-cors mode.") };
         m_headers->setGuard(FetchHeaders::Guard::RequestNoCors);
     }
-    return m_headers.get();
+    
+    return { };
 }
 
-ExceptionOr<FetchHeaders&> FetchRequest::initializeWith(const String& url, const Init& init)
+ExceptionOr<void> FetchRequest::initializeWith(const String& url, Init&& init)
 {
     ASSERT(scriptExecutionContext());
     // FIXME: Tighten the URL parsing algorithm according https://url.spec.whatwg.org/#concept-url-parser.
@@ -153,42 +154,99 @@ ExceptionOr<FetchHeaders&> FetchRequest::initializeWith(const String& url, const
     m_internalRequest.request.setRequester(ResourceRequest::Requester::Fetch);
     m_internalRequest.request.setInitiatorIdentifier(scriptExecutionContext()->resourceRequestIdentifier());
 
-    return initializeOptions(init);
+    auto optionsResult = initializeOptions(init);
+    if (optionsResult.hasException())
+        return optionsResult.releaseException();
+
+    if (init.headers) {
+        auto fillResult = m_headers->fill(*init.headers);
+        if (fillResult.hasException())
+            return fillResult.releaseException();
+    }
+
+    if (init.body) {
+        auto setBodyResult = setBody(WTFMove(*init.body));
+        if (setBodyResult.hasException())
+            return setBodyResult.releaseException();
+    }
+
+    updateContentType();
+    return { };
 }
 
-ExceptionOr<FetchHeaders&> FetchRequest::initializeWith(FetchRequest& input, const Init& init)
+ExceptionOr<void> FetchRequest::initializeWith(FetchRequest& input, Init&& init)
 {
     if (input.isDisturbedOrLocked())
         return Exception {TypeError, ASCIILiteral("Request input is disturbed or locked.") };
 
     m_internalRequest = input.m_internalRequest;
 
-    return initializeOptions(init);
+    auto optionsResult = initializeOptions(init);
+    if (optionsResult.hasException())
+        return optionsResult.releaseException();
+
+    if (init.headers) {
+        auto fillResult = m_headers->fill(*init.headers);
+        if (fillResult.hasException())
+            return fillResult.releaseException();
+    } else {
+        auto fillResult = m_headers->fill(input.headers());
+        if (fillResult.hasException())
+            return fillResult.releaseException();
+    }
+
+    if (init.body) {
+        auto setBodyResult = setBody(WTFMove(*init.body));
+        if (setBodyResult.hasException())
+            return setBodyResult.releaseException();
+    } else {
+        auto setBodyResult = setBody(input);
+        if (setBodyResult.hasException())
+            return setBodyResult.releaseException();
+    }
+
+    updateContentType();
+    return { };
 }
 
-ExceptionOr<void> FetchRequest::setBody(FetchBody::BindingDataType&& body)
+ExceptionOr<void> FetchRequest::setBody(FetchBody::Init&& body)
 {
     if (!methodCanHaveBody(m_internalRequest))
         return Exception { TypeError };
 
     ASSERT(scriptExecutionContext());
     extractBody(*scriptExecutionContext(), WTFMove(body));
-    updateContentType();
     return { };
 }
 
-ExceptionOr<void> FetchRequest::setBodyFromInputRequest(FetchRequest* request)
+ExceptionOr<void> FetchRequest::setBody(FetchRequest& request)
 {
-    if (request && !request->isBodyNull()) {
+    if (!request.isBodyNull()) {
         if (!methodCanHaveBody(m_internalRequest))
             return Exception { TypeError };
-        m_body = WTFMove(request->m_body);
-        request->setDisturbed();
+        m_body = WTFMove(request.m_body);
+        request.setDisturbed();
     }
-    updateContentType();
     return { };
 }
 
+ExceptionOr<Ref<FetchRequest>> FetchRequest::create(ScriptExecutionContext& context, Info&& input, Init&& init)
+{
+    auto request = adoptRef(*new FetchRequest(context, std::nullopt, FetchHeaders::create(FetchHeaders::Guard::Request), { }));
+
+    if (WTF::holds_alternative<String>(input)) {
+        auto result = request->initializeWith(WTF::get<String>(input), WTFMove(init));
+        if (result.hasException())
+            return result.releaseException();
+    } else {
+        auto result = request->initializeWith(*WTF::get<RefPtr<FetchRequest>>(input), WTFMove(init));
+        if (result.hasException())
+            return result.releaseException();
+    }
+
+    return WTFMove(request);
+}
+
 String FetchRequest::referrer() const
 {
     if (m_internalRequest.referrer == "no-referrer")
index 8d2e7c5..b71edd1 100644 (file)
@@ -45,6 +45,9 @@ class URLSearchParams;
 
 class FetchRequest final : public FetchBodyOwner {
 public:
+    using Init = FetchRequestInit;
+    using Info = Variant<RefPtr<FetchRequest>, String>;
+
     using Cache = FetchOptions::Cache;
     using Credentials = FetchOptions::Credentials;
     using Destination = FetchOptions::Destination;
@@ -52,14 +55,8 @@ public:
     using Redirect = FetchOptions::Redirect;
     using ReferrerPolicy = FetchOptions::ReferrerPolicy;
     using Type = FetchOptions::Type;
-    using Init = FetchRequestInit;
-
-    static Ref<FetchRequest> create(ScriptExecutionContext& context) { return adoptRef(*new FetchRequest(context, std::nullopt, FetchHeaders::create(FetchHeaders::Guard::Request), { })); }
 
-    ExceptionOr<FetchHeaders&> initializeWith(FetchRequest&, const Init&);
-    ExceptionOr<FetchHeaders&> initializeWith(const String&, const Init&);
-    ExceptionOr<void> setBody(FetchBody::BindingDataType&&);
-    ExceptionOr<void> setBodyFromInputRequest(FetchRequest*);
+    static ExceptionOr<Ref<FetchRequest>> create(ScriptExecutionContext&, Info&&, Init&&);
 
     const String& method() const { return m_internalRequest.request.httpMethod(); }
     const String& url() const;
@@ -93,7 +90,11 @@ public:
 private:
     FetchRequest(ScriptExecutionContext&, std::optional<FetchBody>&&, Ref<FetchHeaders>&&, InternalRequest&&);
 
-    ExceptionOr<FetchHeaders&> initializeOptions(const Init&);
+    ExceptionOr<void> initializeOptions(const Init&);
+    ExceptionOr<void> initializeWith(FetchRequest&, Init&&);
+    ExceptionOr<void> initializeWith(const String&, Init&&);
+    ExceptionOr<void> setBody(FetchBody::Init&&);
+    ExceptionOr<void> setBody(FetchRequest&);
 
     const char* activeDOMObjectName() const final;
     bool canSuspendForDocumentSuspension() const final;
index e0f6d6a..216f9b5 100644 (file)
@@ -29,7 +29,7 @@
 enum FetchRequestType { "", "audio", "font", "image", "script", "style", "track", "video" };
 enum FetchRequestDestination { "", "document", "sharedworker", "subresource", "unknown", "worker" };
 
-typedef (Request or USVString) RequestInfo;
+typedef (FetchRequest or USVString) RequestInfo;
 
 // FIXME: Should include ReadableStream
 typedef (Blob or BufferSource or DOMFormData or URLSearchParams or USVString) BodyInit;
@@ -38,12 +38,11 @@ typedef (Blob or BufferSource or DOMFormData or URLSearchParams or USVString) Bo
     ActiveDOMObject,
     Conditional=FETCH_API,
     Constructor(RequestInfo input, optional FetchRequestInit init),
+    ConstructorMayThrowException,
+    ConstructorCallWith=ScriptExecutionContext,
     EnabledAtRuntime=FetchAPI,
     Exposed=(Window,Worker),
     InterfaceName=Request,
-    JSBuiltinConstructor,
-    PrivateIdentifier,
-    PublicIdentifier,
 ] interface FetchRequest {
     readonly attribute ByteString method;
     readonly attribute USVString url;
@@ -62,11 +61,6 @@ typedef (Blob or BufferSource or DOMFormData or URLSearchParams or USVString) Bo
     // readonly attribute boolean keepalive;
 
     [CallWith=ScriptExecutionContext, MayThrowException, NewObject] FetchRequest clone();
-
-    [MayThrowException, NewObject, PrivateIdentifier] FetchHeaders initializeWith(FetchRequest input, FetchRequestInit init);
-    [MayThrowException, NewObject, PrivateIdentifier] FetchHeaders initializeWith(DOMString input, FetchRequestInit init);
-    [MayThrowException, PrivateIdentifier] void setBody(BodyInit body);
-    [MayThrowException, PrivateIdentifier] void setBodyFromInputRequest(FetchRequest? request);
 };
 
 FetchRequest implements FetchBody;
diff --git a/Source/WebCore/Modules/fetch/FetchRequest.js b/Source/WebCore/Modules/fetch/FetchRequest.js
deleted file mode 100644 (file)
index 9c6e515..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2016 Apple Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// @conditional=ENABLE(FETCH_API)
-
-function initializeFetchRequest(input, init)
-{
-    "use strict";
-
-    if (init === @undefined)
-        init = { };
-    else if (!@isObject(init))
-        @throwTypeError("Request init must be an object");
-
-    const headers = this.@initializeWith(input, init);
-    @assert(headers instanceof @Headers);
-
-    const inputIsRequest = input instanceof @Request;
-    if ("headers" in init)
-        @fillFetchHeaders(headers, init.headers)
-    else if (inputIsRequest)
-        @fillFetchHeaders(headers, input.headers)
-
-    const hasInitBody = init.body !== @undefined && init.body !== null;
-    if (hasInitBody)
-        this.@setBody(init.body)
-    else
-        this.@setBodyFromInputRequest(inputIsRequest ? input : null);
-
-    return this;
-}
index 233a203..6ab0f55 100644 (file)
@@ -25,6 +25,8 @@
 
 #pragma once
 
+#include "FetchBody.h"
+#include "FetchHeaders.h"
 #include "FetchOptions.h"
 #include <runtime/JSCJSValue.h>
 #include <wtf/Optional.h>
@@ -34,8 +36,8 @@ namespace WebCore {
 
 struct FetchRequestInit {
     String method;
-    // FIXME: Should add: HeadersInit headers;
-    // FIXME: Should add: BodyInit? body;
+    std::optional<FetchHeaders::Init> headers;
+    std::optional<FetchBody::Init> body;
     String referrer;
     std::optional<FetchOptions::ReferrerPolicy> referrerPolicy;
     std::optional<FetchOptions::Mode> mode;
index 10235d1..993d5a6 100644 (file)
@@ -30,8 +30,8 @@ typedef (Blob or BufferSource or DOMFormData or URLSearchParams or USVString) Bo
 
 dictionary FetchRequestInit {
     ByteString method;
-    // HeadersInit headers;
-    // BodyInit? body;
+    HeadersInit headers;
+    BodyInit? body;
     USVString referrer;
     FetchReferrerPolicy referrerPolicy;
     FetchRequestMode mode;
index 8709c2f..c2d6b2b 100644 (file)
@@ -74,7 +74,7 @@ ExceptionOr<void> FetchResponse::setStatus(int status, const String& statusText)
     return { };
 }
 
-void FetchResponse::initializeWith(FetchBody::BindingDataType&& body)
+void FetchResponse::initializeWith(FetchBody::Init&& body)
 {
     ASSERT(scriptExecutionContext());
     extractBody(*scriptExecutionContext(), WTFMove(body));
index 048ac6f..5abbe2c 100644 (file)
@@ -70,7 +70,7 @@ public:
 #endif
 
     ExceptionOr<void> setStatus(int status, const String& statusText);
-    void initializeWith(FetchBody::BindingDataType&&);
+    void initializeWith(FetchBody::Init&&);
     void setBodyAsReadableStream();
 
     Type type() const { return m_response.type(); }
index 1a30d56..c57041a 100644 (file)
 
 namespace WebCore {
 
-void WorkerGlobalScopeFetch::fetch(WorkerGlobalScope& scope, FetchRequest& request, Ref<DeferredPromise>&& promise)
+void WorkerGlobalScopeFetch::fetch(WorkerGlobalScope& scope, FetchRequest::Info&& input, FetchRequest::Init&& init, Ref<DeferredPromise>&& promise)
 {
-    FetchResponse::fetch(scope, request, WTFMove(promise));
+    auto request = FetchRequest::create(scope, WTFMove(input), WTFMove(init));
+    if (request.hasException()) {
+        promise->reject(request.releaseException());
+        return;
+    }
+
+    FetchResponse::fetch(scope, request.releaseReturnValue().get(), WTFMove(promise));
 }
 
 } // namespace WebCore
index 477069f..0b26e72 100644 (file)
 
 #if ENABLE(FETCH_API)
 
+#include "FetchRequest.h"
 #include "JSDOMPromiseDeferred.h"
 
 namespace WebCore {
 
-class FetchRequest;
 class WorkerGlobalScope;
 
 class WorkerGlobalScopeFetch {
 public:
-    static void fetch(WorkerGlobalScope&, FetchRequest&, Ref<DeferredPromise>&&);
+    static void fetch(WorkerGlobalScope&, FetchRequest::Info&&, FetchRequest::Init&&, Ref<DeferredPromise>&&);
 };
 
 } // namespace WebCore
index fac327b..a9f05d5 100644 (file)
@@ -32,6 +32,5 @@ typedef (FetchRequest or USVString) RequestInfo;
     Conditional=FETCH_API,
     EnabledAtRuntime=FetchAPI,
 ] partial interface WorkerGlobalScope {
-    [JSBuiltin] Promise<FetchResponse> fetch(RequestInfo input, optional FetchRequestInit init);
-    [PrivateIdentifier, ImplementedAs=fetch] Promise<FetchResponse> fetchRequest(FetchRequest request);
+    Promise<FetchResponse> fetch(RequestInfo input, optional FetchRequestInit init);
 };
diff --git a/Source/WebCore/Modules/fetch/WorkerGlobalScopeFetch.js b/Source/WebCore/Modules/fetch/WorkerGlobalScopeFetch.js
deleted file mode 100644 (file)
index ef6d075..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2016 Apple Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// @conditional=ENABLE(FETCH_API)
-
-function fetch(input, init)
-{
-    "use strict";
-
-    try {
-        return @fetchRequest(new @Request(input, init));
-    } catch (e) {
-        return @Promise.@reject(e);
-    }
-}
index 0fce103..fbf742a 100644 (file)
                41103AAE1E39791000769F03 /* RealtimeIncomingAudioSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41103AAA1E39790A00769F03 /* RealtimeIncomingAudioSource.cpp */; };
                4123081B138C429700BCCFCA /* WebCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 93F19B1A08245E5A001E9ABC /* WebCore.framework */; };
                41230913138C42FF00BCCFCA /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8216299029F4FB501000131 /* JavaScriptCore.framework */; };
-               412455341EF442C500F11809 /* FetchRequest.js in Resources */ = {isa = PBXBuildFile; fileRef = 412455331EF442C400F11809 /* FetchRequest.js */; };
-               412455361EF442D000F11809 /* DOMWindowFetch.js in Resources */ = {isa = PBXBuildFile; fileRef = 412455351EF442CE00F11809 /* DOMWindowFetch.js */; };
-               412455381EF442DB00F11809 /* WorkerGlobalScopeFetch.js in Resources */ = {isa = PBXBuildFile; fileRef = 412455371EF442DA00F11809 /* WorkerGlobalScopeFetch.js */; };
                4127D5370F8AAB1D00E424F5 /* ScriptState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4127D5360F8AAB1D00E424F5 /* ScriptState.cpp */; };
                4129DF851BB5B80700322A16 /* JSReadableStreamPrivateConstructors.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4129DF831BB5B7F700322A16 /* JSReadableStreamPrivateConstructors.cpp */; };
                4129DF861BB5B80C00322A16 /* JSReadableStreamPrivateConstructors.h in Headers */ = {isa = PBXBuildFile; fileRef = 4129DF841BB5B7F700322A16 /* JSReadableStreamPrivateConstructors.h */; settings = {ATTRIBUTES = (Private, ); }; };
                41189EF71AD8232800B90A0D /* ReadableStreamDefaultController.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ReadableStreamDefaultController.idl; sourceTree = "<group>"; };
                41189EF71AD8232800B93F64 /* ReadableByteStreamController.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ReadableByteStreamController.idl; sourceTree = "<group>"; };
                41189EF71AD8232800B95672 /* ReadableStreamBYOBRequest.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ReadableStreamBYOBRequest.idl; sourceTree = "<group>"; };
-               412455331EF442C400F11809 /* FetchRequest.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = FetchRequest.js; sourceTree = "<group>"; };
-               412455351EF442CE00F11809 /* DOMWindowFetch.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = DOMWindowFetch.js; sourceTree = "<group>"; };
-               412455371EF442DA00F11809 /* WorkerGlobalScopeFetch.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = WorkerGlobalScopeFetch.js; sourceTree = "<group>"; };
                4127D5360F8AAB1D00E424F5 /* ScriptState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptState.cpp; sourceTree = "<group>"; };
                4129DF831BB5B7F700322A16 /* JSReadableStreamPrivateConstructors.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSReadableStreamPrivateConstructors.cpp; sourceTree = "<group>"; };
                4129DF841BB5B7F700322A16 /* JSReadableStreamPrivateConstructors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSReadableStreamPrivateConstructors.h; sourceTree = "<group>"; };
                                418C39521C8DAC7B0051C8A3 /* DOMWindowFetch.cpp */,
                                418C39531C8DAC7B0051C8A3 /* DOMWindowFetch.h */,
                                418C39541C8DAC7B0051C8A3 /* DOMWindowFetch.idl */,
-                               412455351EF442CE00F11809 /* DOMWindowFetch.js */,
                                41F54F7D1C50C4F600338488 /* FetchBody.cpp */,
                                41F54F7E1C50C4F600338488 /* FetchBody.h */,
                                41F54F7F1C50C4F600338488 /* FetchBody.idl */,
                                41F54F871C50C4F600338488 /* FetchRequest.cpp */,
                                41F54F881C50C4F600338488 /* FetchRequest.h */,
                                41F54F891C50C4F600338488 /* FetchRequest.idl */,
-                               412455331EF442C400F11809 /* FetchRequest.js */,
                                7CE1914B1F2A9AFB00272F78 /* FetchReferrerPolicy.h */,
                                7CE1914C1F2A9AFB00272F78 /* FetchReferrerPolicy.idl */,
                                7CE1914F1F2A9B0A00272F78 /* FetchRequestMode.h */,
                                418C39571C8DD6960051C8A3 /* WorkerGlobalScopeFetch.cpp */,
                                418C39581C8DD6960051C8A3 /* WorkerGlobalScopeFetch.h */,
                                418C39591C8DD6960051C8A3 /* WorkerGlobalScopeFetch.idl */,
-                               412455371EF442DA00F11809 /* WorkerGlobalScopeFetch.js */,
                        );
                        path = fetch;
                        sourceTree = "<group>";
                                A11E8C051B1E28F40003A7C7 /* copyCursor.png in Resources */,
                                D02B64B214089E56006EFA21 /* DictationPhraseWithAlternativesDot.png in Resources */,
                                D02B64B314089E56006EFA21 /* DictationPhraseWithAlternativesDot@2x.png in Resources */,
-                               412455361EF442D000F11809 /* DOMWindowFetch.js in Resources */,
-                               412455341EF442C500F11809 /* FetchRequest.js in Resources */,
                                7CC7E3D717208C0F003C5277 /* IDNScriptWhiteList.txt in Resources */,
                                2D9F0E1314FF1CBF00BA0FF7 /* linearSRGB.icc in Resources */,
                                BCAD180A131C7A0D00990406 /* Localizable.strings in Resources */,
                                1C2417BA1992C04100EF9938 /* SpellingDot@3x.png in Resources */,
                                93153BDC141959BC00FCF5BE /* textAreaResizeCorner.png in Resources */,
                                9370918D1416D86B00477333 /* textAreaResizeCorner@2x.png in Resources */,
-                               412455381EF442DB00F11809 /* WorkerGlobalScopeFetch.js in Resources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };