Diff
Modified: trunk/LayoutTests/imported/w3c/ChangeLog (206769 => 206770)
--- trunk/LayoutTests/imported/w3c/ChangeLog 2016-10-04 15:15:35 UTC (rev 206769)
+++ trunk/LayoutTests/imported/w3c/ChangeLog 2016-10-04 15:17:34 UTC (rev 206770)
@@ -1,3 +1,16 @@
+2016-10-04 Youenn Fablet <[email protected]>
+
+ [Fetch API] ReadableStream should be errored with TypeError values
+ https://bugs.webkit.org/show_bug.cgi?id=162895
+
+ Reviewed by Alex Christensen.
+
+ * web-platform-tests/fetch/api/basic/error-after-response-expected.txt: Added.
+ * web-platform-tests/fetch/api/basic/error-after-response.html: Added.
+ * web-platform-tests/fetch/api/resources/bad-chunk-encoding.py: Added.
+ (main):
+ * web-platform-tests/fetch/api/response/response-consume-stream-expected.txt:
+
2016-10-03 Chris Dumez <[email protected]>
Add support for KeyboardEvent.key attribute
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/error-after-response-expected.txt (0 => 206770)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/error-after-response-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/error-after-response-expected.txt 2016-10-04 15:17:34 UTC (rev 206770)
@@ -0,0 +1,4 @@
+
+PASS Response reader read() promise should reject after a network error happening after resolving fetch promise
+PASS Response reader closed promise should reject after a network error happening after resolving fetch promise
+
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/error-after-response.html (0 => 206770)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/error-after-response.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/error-after-response.html 2016-10-04 15:17:34 UTC (rev 206770)
@@ -0,0 +1,34 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Fetch: network timeout after receiving the HTTP response headers</title>
+ <script src=""
+ <script src=""
+ <script src=""
+ </head>
+ <body>
+ <div id="log"></div>
+ <script>
+function checkReader(test, reader, checkRead)
+{
+ return reader.read().then((value) => {
+ validateBufferFromString(value.value, "TEST_CHUNK", "Should receive first chunk");
+ return promise_rejects(test, new TypeError(), checkRead ? reader.read() : reader.closed);
+ });
+}
+
+promise_test((test) => {
+ return fetch("../resources/bad-chunk-encoding.py?count=1").then((response) => {
+ return checkReader(test, response.body.getReader(), true);
+ });
+}, "Response reader read() promise should reject after a network error happening after resolving fetch promise");
+
+promise_test((test) => {
+ return fetch("../resources/bad-chunk-encoding.py?count=1").then((response) => {
+ return checkReader(test, response.body.getReader(), false);
+ });
+}, "Response reader closed promise should reject after a network error happening after resolving fetch promise");
+ </script>
+ </body>
+</html>
+
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/resources/bad-chunk-encoding.py (0 => 206770)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/resources/bad-chunk-encoding.py (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/resources/bad-chunk-encoding.py 2016-10-04 15:17:34 UTC (rev 206770)
@@ -0,0 +1,14 @@
+import time
+
+def main(request, response):
+ delay = float(request.GET.first("ms", 1000)) / 1E3
+ count = int(request.GET.first("count", 50))
+ time.sleep(delay)
+ response.headers.set("Transfer-Encoding", "chunked")
+ response.write_status_headers()
+ time.sleep(delay);
+ for i in xrange(count):
+ response.writer.write_content("a\r\nTEST_CHUNK\r\n")
+ time.sleep(delay)
+ response.writer.write_content("garbage")
+
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-consume-stream-expected.txt (206769 => 206770)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-consume-stream-expected.txt 2016-10-04 15:15:35 UTC (rev 206769)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-consume-stream-expected.txt 2016-10-04 15:17:34 UTC (rev 206770)
@@ -5,7 +5,7 @@
PASS Read text response's body as readableStream
PASS Read text response's body as readableStream
PASS Read array buffer response's body as readableStream
-FAIL Read form data response's body as readableStream promise_test: Unhandled rejection with value: "not implemented"
+FAIL Read form data response's body as readableStream promise_test: Unhandled rejection with value: object "TypeError: not implemented"
PASS Getting an error Response stream
PASS Getting a redirect Response stream
Modified: trunk/Source/WebCore/ChangeLog (206769 => 206770)
--- trunk/Source/WebCore/ChangeLog 2016-10-04 15:15:35 UTC (rev 206769)
+++ trunk/Source/WebCore/ChangeLog 2016-10-04 15:17:34 UTC (rev 206770)
@@ -1,3 +1,17 @@
+2016-10-04 Youenn Fablet <[email protected]>
+
+ [Fetch API] ReadableStream should be errored with TypeError values
+ https://bugs.webkit.org/show_bug.cgi?id=162895
+
+ Reviewed by Alex Christensen.
+
+ Test: imported/w3c/web-platform-tests/fetch/api/basic/error-after-response.html
+
+ * Modules/fetch/FetchResponse.cpp:
+ (WebCore::FetchResponse::BodyLoader::didFail): Removing FIXME.
+ * bindings/js/ReadableStreamDefaultController.h:
+ (WebCore::ReadableStreamDefaultController::error<String>): Erroring with TypeError values.
+
2016-10-03 Chris Dumez <[email protected]>
Bindings do not throw a TypeError if a required dictionary member is missing
Modified: trunk/Source/WebCore/Modules/fetch/FetchResponse.cpp (206769 => 206770)
--- trunk/Source/WebCore/Modules/fetch/FetchResponse.cpp 2016-10-04 15:15:35 UTC (rev 206769)
+++ trunk/Source/WebCore/Modules/fetch/FetchResponse.cpp 2016-10-04 15:17:34 UTC (rev 206770)
@@ -159,8 +159,6 @@
if (m_loader->isStarted())
m_response.m_bodyLoader = Nullopt;
- // FIXME: Handle the case of failing after didReceiveResponse is called.
-
m_response.unsetPendingActivity(&m_response);
}
Modified: trunk/Source/WebCore/bindings/js/ReadableStreamDefaultController.h (206769 => 206770)
--- trunk/Source/WebCore/bindings/js/ReadableStreamDefaultController.h 2016-10-04 15:15:35 UTC (rev 206769)
+++ trunk/Source/WebCore/bindings/js/ReadableStreamDefaultController.h 2016-10-04 15:17:34 UTC (rev 206770)
@@ -108,11 +108,11 @@
}
template<>
-inline void ReadableStreamDefaultController::error<String>(const String& result)
+inline void ReadableStreamDefaultController::error<String>(const String& errorMessage)
{
JSC::ExecState& state = globalExec();
JSC::JSLockHolder locker(&state);
- error(state, jsString(&state, result));
+ error(state, JSC::createTypeError(&state, errorMessage));
}
} // namespace WebCore