Title: [206770] trunk
Revision
206770
Author
[email protected]
Date
2016-10-04 08:17:34 -0700 (Tue, 04 Oct 2016)

Log Message

[Fetch API] ReadableStream should be errored with TypeError values
https://bugs.webkit.org/show_bug.cgi?id=162895

Patch by Youenn Fablet <[email protected]> on 2016-10-04
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

* 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:

Source/WebCore:

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.

Modified Paths

Added Paths

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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to