[Fetch API] Implement Fetch API Request
https://bugs.webkit.org/show_bug.cgi?id=153437

LayoutTests/imported/w3c:

Reviewed by Darin Adler.

* web-platform-tests/fetch/api/headers/headers-basic.html:
* web-platform-tests/fetch/api/request/request-clone.sub-expected.txt: Added.
* web-platform-tests/fetch/api/request/request-clone.sub.html: Added.
* web-platform-tests/fetch/api/request/request-consume-expected.txt: Added.
* web-platform-tests/fetch/api/request/request-consume.html: Added.
* web-platform-tests/fetch/api/request/request-disturbed-expected.txt: Added.
* web-platform-tests/fetch/api/request/request-disturbed.html: Added.
* web-platform-tests/fetch/api/request/request-error-expected.txt: Added.
* web-platform-tests/fetch/api/request/request-error.html: Added.
* web-platform-tests/fetch/api/request/request-headers-expected.txt: Added.
* web-platform-tests/fetch/api/request/request-headers.html: Added.
* web-platform-tests/fetch/api/request/request-idl-expected.txt: Added.
* web-platform-tests/fetch/api/request/request-idl.html: Added.
* web-platform-tests/fetch/api/request/request-init-001.sub-expected.txt: Added.
* web-platform-tests/fetch/api/request/request-init-001.sub.html: Added.
* web-platform-tests/fetch/api/request/request-init-002-expected.txt: Added.
* web-platform-tests/fetch/api/request/request-init-002.html: Added.
* web-platform-tests/fetch/api/request/request-init-003.sub-expected.txt: Added.
* web-platform-tests/fetch/api/request/request-init-003.sub.html: Added.
* web-platform-tests/fetch/api/request/request-structure-expected.txt: Added.
* web-platform-tests/fetch/api/request/request-structure.html: Added.
* web-platform-tests/fetch/api/resources/authentication.py: Added.
(main):
* web-platform-tests/fetch/api/resources/clean-stash.py: Added.
(main):
* web-platform-tests/fetch/api/resources/inspect-headers.py: Added.
(main):
* web-platform-tests/fetch/api/resources/method.py: Added.
(main):
* web-platform-tests/fetch/api/resources/preflight.py: Added.
(main):
* web-platform-tests/fetch/api/resources/redirect.py: Added.
(main):
* web-platform-tests/fetch/api/resources/top.txt: Added.
* web-platform-tests/fetch/api/resources/trickle.py: Added.
(main):
* web-platform-tests/fetch/api/resources/utils.js: Added.
(catch):
(dirname):
(checkRequest):
(readTextStream):

Source/WebCore:

Added support for Fetch Request and Body.
Body is sharing functionality between Request and Response.
Conversion between various body types are not implemented yet.

Added a FetchOptions class. Options in this class are partially redundant with ResourceLoaderOptions.

Fixing bug in Headers constructor.
Making error reporting in case of modifying headers compliant with the spec.

Reviewed by Darin Adler.

Tests: imported/w3c/web-platform-tests/fetch/api/request/request-clone.sub.html
       imported/w3c/web-platform-tests/fetch/api/request/request-consume.html
       imported/w3c/web-platform-tests/fetch/api/request/request-disturbed.html
       imported/w3c/web-platform-tests/fetch/api/request/request-error.html
       imported/w3c/web-platform-tests/fetch/api/request/request-headers.html
       imported/w3c/web-platform-tests/fetch/api/request/request-idl.html
       imported/w3c/web-platform-tests/fetch/api/request/request-init-001.sub.html
       imported/w3c/web-platform-tests/fetch/api/request/request-init-002.html
       imported/w3c/web-platform-tests/fetch/api/request/request-init-003.sub.html
       imported/w3c/web-platform-tests/fetch/api/request/request-structure.html

* CMakeLists.txt:
* DerivedSources.cpp:
* DerivedSources.make:
* Modules/fetch/FetchBody.cpp: Added.
(WebCore::FetchBody::initBody):
(WebCore::FetchBody::clear):
(WebCore::FetchBody::processIfEmptyOrDisturbed):
(WebCore::FetchBody::arrayBuffer):
(WebCore::FetchBody::formData):
(WebCore::FetchBody::blob):
(WebCore::FetchBody::text):
(WebCore::FetchBody::json):
* Modules/fetch/FetchBody.h: Added.
(WebCore::FetchBody::~FetchBody):
(WebCore::FetchBody::isEmpty):
(WebCore::FetchBody::isDisturbed):
(WebCore::FetchBody::setDisturbed):
(WebCore::FetchBody::setMimeType):
(WebCore::FetchBody::mimeType):
* Modules/fetch/FetchBody.idl: Added.
* Modules/fetch/FetchHeaders.cpp:
(WebCore::canWriteHeader):
(WebCore::FetchHeaders::append):
(WebCore::FetchHeaders::remove):
(WebCore::FetchHeaders::set):
(WebCore::FetchHeaders::fill): Helper routine implementing https://fetch.spec.whatwg.org/#concept-headers-fill
* Modules/fetch/FetchHeaders.h: Adding header getter/setter for FetchRequest.
(WebCore::FetchHeaders::fastGet):
(WebCore::FetchHeaders::fastSet):
* Modules/fetch/FetchHeaders.js: Fixing bug in constructor (covered by modified headers-basc.html test).
(initializeFetchHeaders):
* Modules/fetch/FetchOptions.h: Added.
(WebCore::FetchOptions::FetchOptions):
(WebCore::FetchOptions::type):
(WebCore::FetchOptions::destination):
(WebCore::FetchOptions::mode):
(WebCore::FetchOptions::credentials):
(WebCore::FetchOptions::cache):
(WebCore::FetchOptions::redirect):
(WebCore::FetchOptions::referrerPolicy):
(WebCore::FetchOptions::setType):
(WebCore::FetchOptions::setDestination):
(WebCore::FetchOptions::setMode):
(WebCore::FetchOptions::setCredentials):
(WebCore::FetchOptions::setCache):
(WebCore::FetchOptions::setRedirect):
(WebCore::FetchOptions::setReferrerPolicy):
* Modules/fetch/FetchRequest.cpp: Added.
(WebCore::FetchRequest::create):
(WebCore::FetchRequest::FetchRequest):
(WebCore::FetchRequest::init):
(WebCore::FetchRequest::setReferrer):
(WebCore::FetchRequest::setReferrerPolicy):
(WebCore::FetchRequest::setMode):
(WebCore::FetchRequest::setCredentials):
(WebCore::FetchRequest::setCache):
(WebCore::FetchRequest::setRedirect):
(WebCore::FetchRequest::type):
(WebCore::FetchRequest::destination):
(WebCore::FetchRequest::referrerPolicy):
(WebCore::FetchRequest::referrer):
(WebCore::FetchRequest::mode):
(WebCore::FetchRequest::credentials):
(WebCore::FetchRequest::cache):
(WebCore::FetchRequest::redirect):
(WebCore::FetchRequest::setMethod):
(WebCore::FetchRequest::clone):
* Modules/fetch/FetchRequest.h: Added.
(WebCore::FetchRequest::method):
(WebCore::FetchRequest::url):
(WebCore::FetchRequest::integrity):
(WebCore::FetchRequest::headers):
* Modules/fetch/FetchRequest.idl: Added.
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/Dictionary.h:
(WebCore::Dictionary::execState):
* bindings/js/JSDictionary.cpp:
(WebCore::JSDictionary::convertValue):
* bindings/js/JSDictionary.h:
(WebCore::JSDictionary::get):

LayoutTests:

Reviewed by Darin Adler.

* js/dom/global-constructors-attributes-dedicated-worker-expected.txt:
* js/dom/global-constructors-attributes-expected.txt:
* platform/efl/js/dom/global-constructors-attributes-dedicated-worker-expected.txt:
* platform/efl/js/dom/global-constructors-attributes-expected.txt:
* platform/gtk/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-mavericks/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
* platform/mac/js/dom/global-constructors-attributes-expected.txt:
* platform/win/js/dom/global-constructors-attributes-expected.txt:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@195954 268f45cc-cd09-0410-ab3c-d52691b4dbfc
59 files changed