Changeset 198151 in webkit
- Timestamp:
- Mar 14, 2016 1:13:30 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/imported/w3c/ChangeLog
r198133 r198151 1 2016-03-14 Youenn Fablet <youenn.fablet@crf.canon.fr> 2 3 [Fetch API] FetchLoader should check for empty bodies 4 https://bugs.webkit.org/show_bug.cgi?id=155440 5 6 Reviewed by Darin Adler. 7 8 * web-platform-tests/fetch/api/request/request-consume-empty-expected.txt: 9 * web-platform-tests/fetch/api/request/request-consume-empty.html: 10 * web-platform-tests/fetch/api/response/response-consume-empty-expected.txt: 11 * web-platform-tests/fetch/api/response/response-consume-empty.html: 12 1 13 2016-03-14 Youenn Fablet <youenn.fablet@crf.canon.fr> 2 14 -
trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-consume-empty-expected.txt
r198005 r198151 5 5 PASS Consume request's body as json 6 6 FAIL Consume request's body as formData promise_test: Unhandled rejection with value: undefined 7 PASS Consume empty blob request body as arrayBuffer 8 PASS Consume empty text request body as arrayBuffer 9 PASS Consume empty blob request body as text 10 PASS Consume empty text request body as text 7 11 -
trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-consume-empty.html
r198005 r198151 62 62 } 63 63 64 function checkRequest Body(bodyType, checkFunction) {64 function checkRequestWithNoBody(bodyType, checkFunction) { 65 65 promise_test(function(test) { 66 66 var request = new Request("", {"method": "POST"}); … … 71 71 72 72 var formData = new FormData(); 73 checkRequest Body("text", checkBodyText);74 checkRequest Body("blob", checkBodyBlob);75 checkRequest Body("arrayBuffer", checkBodyArrayBuffer);76 checkRequest Body("json", checkBodyJSON);77 checkRequest Body("formData", checkBodyFormData);73 checkRequestWithNoBody("text", checkBodyText); 74 checkRequestWithNoBody("blob", checkBodyBlob); 75 checkRequestWithNoBody("arrayBuffer", checkBodyArrayBuffer); 76 checkRequestWithNoBody("json", checkBodyJSON); 77 checkRequestWithNoBody("formData", checkBodyFormData); 78 78 79 function checkRequestWithEmptyBody(bodyType, body, asText) { 80 promise_test(function(test) { 81 var request = new Request("", {"method": "POST", "body" : body}); 82 assert_false(request.bodyUsed, "bodyUsed is false at init"); 83 if (asText) { 84 return request.text().then(function(bodyAsString) { 85 assert_equals(bodyAsString.length, 0, "Resolved value should be empty"); 86 assert_true(request.bodyUsed, "bodyUsed is true after being consumed"); 87 }); 88 } 89 return request.arrayBuffer().then(function(bodyAsArrayBuffer) { 90 assert_equals(bodyAsArrayBuffer.byteLength, 0, "Resolved value should be empty"); 91 assert_true(request.bodyUsed, "bodyUsed is true after being consumed"); 92 }); 93 }, "Consume empty " + bodyType + " request body as " + (asText ? "text" : "arrayBuffer")); 94 } 95 96 // FIXME: Add BufferSource, FormData and URLSearchParams. 97 checkRequestWithEmptyBody("blob", new Blob([], { "type" : "text/plain" }), false); 98 checkRequestWithEmptyBody("text", "", false); 99 checkRequestWithEmptyBody("blob", new Blob([], { "type" : "text/plain" }), true); 100 checkRequestWithEmptyBody("text", "", true); 79 101 </script> 80 102 </body> -
trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-consume-empty-expected.txt
r198005 r198151 5 5 PASS Consume response's body as json 6 6 FAIL Consume response's body as formData promise_test: Unhandled rejection with value: undefined 7 PASS Consume empty blob response body as arrayBuffer 8 PASS Consume empty text response body as arrayBuffer 9 PASS Consume empty blob response body as text 10 PASS Consume empty text response body as text 7 11 -
trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-consume-empty.html
r198005 r198151 62 62 } 63 63 64 function checkResponse Body(bodyType, checkFunction) {64 function checkResponseWithNoBody(bodyType, checkFunction) { 65 65 promise_test(function(test) { 66 66 var response = new Response(); … … 71 71 72 72 var formData = new FormData(); 73 checkResponse Body("text", checkBodyText);74 checkResponse Body("blob", checkBodyBlob);75 checkResponse Body("arrayBuffer", checkBodyArrayBuffer);76 checkResponse Body("json", checkBodyJSON);77 checkResponse Body("formData", checkBodyFormData);73 checkResponseWithNoBody("text", checkBodyText); 74 checkResponseWithNoBody("blob", checkBodyBlob); 75 checkResponseWithNoBody("arrayBuffer", checkBodyArrayBuffer); 76 checkResponseWithNoBody("json", checkBodyJSON); 77 checkResponseWithNoBody("formData", checkBodyFormData); 78 78 79 function checkResponseWithEmptyBody(bodyType, body, asText) { 80 promise_test(function(test) { 81 var response = new Response("", {"method": "POST", "body" : body}); 82 assert_false(response.bodyUsed, "bodyUsed is false at init"); 83 if (asText) { 84 return response.text().then(function(bodyAsString) { 85 assert_equals(bodyAsString.length, 0, "Resolved value should be empty"); 86 assert_true(response.bodyUsed, "bodyUsed is true after being consumed"); 87 }); 88 } 89 return response.arrayBuffer().then(function(bodyAsArrayBuffer) { 90 assert_equals(bodyAsArrayBuffer.byteLength, 0, "Resolved value should be empty"); 91 assert_true(response.bodyUsed, "bodyUsed is true after being consumed"); 92 }); 93 }, "Consume empty " + bodyType + " response body as " + (asText ? "text" : "arrayBuffer")); 94 } 95 96 // FIXME: Add BufferSource, FormData and URLSearchParams. 97 checkResponseWithEmptyBody("blob", new Blob([], { "type" : "text/plain" }), false); 98 checkResponseWithEmptyBody("text", "", false); 99 checkResponseWithEmptyBody("blob", new Blob([], { "type" : "text/plain" }), true); 100 checkResponseWithEmptyBody("text", "", true); 79 101 </script> 80 102 </body> -
trunk/Source/WebCore/ChangeLog
r198145 r198151 1 2016-03-14 Youenn Fablet <youenn.fablet@crf.canon.fr> 2 3 [Fetch API] FetchLoader should check for empty bodies 4 https://bugs.webkit.org/show_bug.cgi?id=155440 5 6 Reviewed by Darin Adler. 7 8 Covered by added tests. 9 10 * Modules/fetch/FetchLoader.cpp: 11 (WebCore::FetchLoader::didFinishLoading): returning empty array buffer/empty string if no data received during loading. 12 1 13 2016-03-14 Chris Dumez <cdumez@apple.com> 2 14 -
trunk/Source/WebCore/Modules/fetch/FetchLoader.cpp
r198133 r198151 101 101 { 102 102 if (m_type == Type::ArrayBuffer) 103 m_client.didFinishLoadingAsArrayBuffer(m_data ->createArrayBuffer());103 m_client.didFinishLoadingAsArrayBuffer(m_data ? m_data->createArrayBuffer() : ArrayBuffer::create(nullptr, 0)); 104 104 else 105 m_client.didFinishLoadingAsText( TextResourceDecoder::create(ASCIILiteral("text/plain"), "UTF-8")->decodeAndFlush(m_data->data(), m_data->size()));105 m_client.didFinishLoadingAsText(m_data ? TextResourceDecoder::create(ASCIILiteral("text/plain"), "UTF-8")->decodeAndFlush(m_data->data(), m_data->size()): String()); 106 106 m_data = nullptr; 107 107
Note: See TracChangeset
for help on using the changeset viewer.