WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-155440-20160314180154.patch (text/plain), 9.86 KB, created by
youenn fablet
on 2016-03-14 10:02:07 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
youenn fablet
Created:
2016-03-14 10:02:07 PDT
Size:
9.86 KB
patch
obsolete
>Subversion Revision: 198135 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 3eb6e8335e1707c8a9920095d8164186c0126b7c..f22712f0c807cd5680105c4d74ea2f176a74a966 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,15 @@ >+2016-03-14 Youenn Fablet <youenn.fablet@crf.canon.fr> >+ >+ [Fetch API] FetchLoader should check for empty bodies >+ https://bugs.webkit.org/show_bug.cgi?id=155440 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Covered by added tests. >+ >+ * Modules/fetch/FetchLoader.cpp: >+ (WebCore::FetchLoader::didFinishLoading): returning empty array buffer/empty string if no data received during loading. >+ > 2016-03-14 Alexey Proskuryakov <ap@apple.com> > > Build fix. >diff --git a/Source/WebCore/Modules/fetch/FetchLoader.cpp b/Source/WebCore/Modules/fetch/FetchLoader.cpp >index 30fccc7933e7b0c3093857730db27501b1dec593..97bc977839858c0a03be7682e3d0c35b855d11eb 100644 >--- a/Source/WebCore/Modules/fetch/FetchLoader.cpp >+++ b/Source/WebCore/Modules/fetch/FetchLoader.cpp >@@ -100,9 +100,9 @@ void FetchLoader::didReceiveData(const char* value, int size) > void FetchLoader::didFinishLoading(unsigned long, double) > { > if (m_type == Type::ArrayBuffer) >- m_client.didFinishLoadingAsArrayBuffer(m_data->createArrayBuffer()); >+ m_client.didFinishLoadingAsArrayBuffer(m_data ? m_data->createArrayBuffer() : ArrayBuffer::create(nullptr, 0)); > else >- m_client.didFinishLoadingAsText(TextResourceDecoder::create(ASCIILiteral("text/plain"), "UTF-8")->decodeAndFlush(m_data->data(), m_data->size())); >+ m_client.didFinishLoadingAsText(m_data ? TextResourceDecoder::create(ASCIILiteral("text/plain"), "UTF-8")->decodeAndFlush(m_data->data(), m_data->size()): String()); > m_data = nullptr; > > m_client.didSucceed(); >diff --git a/LayoutTests/imported/w3c/ChangeLog b/LayoutTests/imported/w3c/ChangeLog >index d139a8710f1172b01279ab8ee18aa1eb0693f1d0..287f8a7351018fba06354ad8a10a661ba036dc87 100644 >--- a/LayoutTests/imported/w3c/ChangeLog >+++ b/LayoutTests/imported/w3c/ChangeLog >@@ -1,5 +1,17 @@ > 2016-03-14 Youenn Fablet <youenn.fablet@crf.canon.fr> > >+ [Fetch API] FetchLoader should check for empty bodies >+ https://bugs.webkit.org/show_bug.cgi?id=155440 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * web-platform-tests/fetch/api/request/request-consume-empty-expected.txt: >+ * web-platform-tests/fetch/api/request/request-consume-empty.html: >+ * web-platform-tests/fetch/api/response/response-consume-empty-expected.txt: >+ * web-platform-tests/fetch/api/response/response-consume-empty.html: >+ >+2016-03-14 Youenn Fablet <youenn.fablet@crf.canon.fr> >+ > [Fetch API] Implement data resolution for blob stored in Body > https://bugs.webkit.org/show_bug.cgi?id=155359 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-consume-empty-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-consume-empty-expected.txt >index 99c41a5a0b319ec8e201ee2516f3ce815165d9b5..f3d133126d0284a88edb647d638e0ada84980c49 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-consume-empty-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-consume-empty-expected.txt >@@ -4,4 +4,8 @@ PASS Consume request's body as blob > PASS Consume request's body as arrayBuffer > PASS Consume request's body as json > FAIL Consume request's body as formData promise_test: Unhandled rejection with value: undefined >+PASS Consume empty blob response body as arrayBuffer >+PASS Consume empty text response body as arrayBuffer >+PASS Consume empty blob response body as text >+PASS Consume empty text response body as text > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-consume-empty.html b/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-consume-empty.html >index b228c27393a56af73077a232a267673f5cbe6f8c..65b14720e4e77efb1d5618ae21d76dcc821a4cff 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-consume-empty.html >+++ b/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-consume-empty.html >@@ -61,7 +61,7 @@ > }); > } > >- function checkRequestBody(bodyType, checkFunction) { >+ function checkRequestWithNoBody(bodyType, checkFunction) { > promise_test(function(test) { > var request = new Request("", {"method": "POST"}); > assert_false(request.bodyUsed); >@@ -70,12 +70,34 @@ > } > > var formData = new FormData(); >- checkRequestBody("text", checkBodyText); >- checkRequestBody("blob", checkBodyBlob); >- checkRequestBody("arrayBuffer", checkBodyArrayBuffer); >- checkRequestBody("json", checkBodyJSON); >- checkRequestBody("formData", checkBodyFormData); >+ checkRequestWithNoBody("text", checkBodyText); >+ checkRequestWithNoBody("blob", checkBodyBlob); >+ checkRequestWithNoBody("arrayBuffer", checkBodyArrayBuffer); >+ checkRequestWithNoBody("json", checkBodyJSON); >+ checkRequestWithNoBody("formData", checkBodyFormData); > >+ function checkResponseWithEmptyBody(bodyType, body, asText) { >+ promise_test(function(test) { >+ var response = new Response("", {"method": "POST", "body" : body}); >+ assert_false(response.bodyUsed, "bodyUsed is false at init"); >+ if (asText) { >+ return response.text().then(function(bodyAsString) { >+ assert_equals(bodyAsString.length, 0, "Resolved value should be empty"); >+ assert_true(response.bodyUsed, "bodyUsed is true after being consumed"); >+ }); >+ } >+ return response.arrayBuffer().then(function(bodyAsArrayBuffer) { >+ assert_equals(bodyAsArrayBuffer.byteLength, 0, "Resolved value should be empty"); >+ assert_true(response.bodyUsed, "bodyUsed is true after being consumed"); >+ }); >+ }, "Consume empty " + bodyType + " response body as " + (asText ? "text" : "arrayBuffer")); >+ } >+ >+ // FIXME: Add BufferSource, FormData and URLSearchParams. >+ checkResponseWithEmptyBody("blob", new Blob([], { "type" : "text/plain" }), false); >+ checkResponseWithEmptyBody("text", "", false); >+ checkResponseWithEmptyBody("blob", new Blob([], { "type" : "text/plain" }), true); >+ checkResponseWithEmptyBody("text", "", true); > </script> > </body> > </html> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-consume-empty-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-consume-empty-expected.txt >index ac4a116f98561ca0168b36c816ce0e479c2e740e..6704de1a442e5f1fd725b0cee22c7f0737a5e586 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-consume-empty-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-consume-empty-expected.txt >@@ -4,4 +4,8 @@ PASS Consume response's body as blob > PASS Consume response's body as arrayBuffer > PASS Consume response's body as json > FAIL Consume response's body as formData promise_test: Unhandled rejection with value: undefined >+PASS Consume empty blob response body as arrayBuffer >+PASS Consume empty text response body as arrayBuffer >+PASS Consume empty blob response body as text >+PASS Consume empty text response body as text > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-consume-empty.html b/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-consume-empty.html >index aaf521a844f8c88c87f6c8f29cc8e0a59a29d2b8..7016a04b944481998b026aa381435abd6c1ab307 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-consume-empty.html >+++ b/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-consume-empty.html >@@ -61,7 +61,7 @@ > }); > } > >- function checkResponseBody(bodyType, checkFunction) { >+ function checkResponseWithNoBody(bodyType, checkFunction) { > promise_test(function(test) { > var response = new Response(); > assert_false(response.bodyUsed); >@@ -70,12 +70,34 @@ > } > > var formData = new FormData(); >- checkResponseBody("text", checkBodyText); >- checkResponseBody("blob", checkBodyBlob); >- checkResponseBody("arrayBuffer", checkBodyArrayBuffer); >- checkResponseBody("json", checkBodyJSON); >- checkResponseBody("formData", checkBodyFormData); >+ checkResponseWithNoBody("text", checkBodyText); >+ checkResponseWithNoBody("blob", checkBodyBlob); >+ checkResponseWithNoBody("arrayBuffer", checkBodyArrayBuffer); >+ checkResponseWithNoBody("json", checkBodyJSON); >+ checkResponseWithNoBody("formData", checkBodyFormData); > >+ function checkResponseWithEmptyBody(bodyType, body, asText) { >+ promise_test(function(test) { >+ var response = new Response("", {"method": "POST", "body" : body}); >+ assert_false(response.bodyUsed, "bodyUsed is false at init"); >+ if (asText) { >+ return response.text().then(function(bodyAsString) { >+ assert_equals(bodyAsString.length, 0, "Resolved value should be empty"); >+ assert_true(response.bodyUsed, "bodyUsed is true after being consumed"); >+ }); >+ } >+ return response.arrayBuffer().then(function(bodyAsArrayBuffer) { >+ assert_equals(bodyAsArrayBuffer.byteLength, 0, "Resolved value should be empty"); >+ assert_true(response.bodyUsed, "bodyUsed is true after being consumed"); >+ }); >+ }, "Consume empty " + bodyType + " response body as " + (asText ? "text" : "arrayBuffer")); >+ } >+ >+ // FIXME: Add BufferSource, FormData and URLSearchParams. >+ checkResponseWithEmptyBody("blob", new Blob([], { "type" : "text/plain" }), false); >+ checkResponseWithEmptyBody("text", "", false); >+ checkResponseWithEmptyBody("blob", new Blob([], { "type" : "text/plain" }), true); >+ checkResponseWithEmptyBody("text", "", true); > </script> > </body> > </html>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 155440
:
273984
|
273985