Diff
Modified: branches/safari-603-branch/LayoutTests/ChangeLog (210904 => 210905)
--- branches/safari-603-branch/LayoutTests/ChangeLog 2017-01-19 03:06:56 UTC (rev 210904)
+++ branches/safari-603-branch/LayoutTests/ChangeLog 2017-01-19 03:07:01 UTC (rev 210905)
@@ -1,5 +1,18 @@
2017-01-18 Matthew Hanson <[email protected]>
+ Merge r210860. rdar://problem/30080035
+
+ 2017-01-18 Youenn Fablet <[email protected]>
+
+ Reject fetch promise in case of ReadableStream upload
+ https://bugs.webkit.org/show_bug.cgi?id=167145
+
+ Reviewed by Alex Christensen.
+
+ * TestExpectations:
+
+2017-01-18 Matthew Hanson <[email protected]>
+
Merge r210831. rdar://problem/29057611
2017-01-17 Zalan Bujtas <[email protected]>
Modified: branches/safari-603-branch/LayoutTests/imported/w3c/ChangeLog (210904 => 210905)
--- branches/safari-603-branch/LayoutTests/imported/w3c/ChangeLog 2017-01-19 03:06:56 UTC (rev 210904)
+++ branches/safari-603-branch/LayoutTests/imported/w3c/ChangeLog 2017-01-19 03:07:01 UTC (rev 210905)
@@ -1,3 +1,17 @@
+2017-01-18 Matthew Hanson <[email protected]>
+
+ Merge r210860. rdar://problem/30080035
+
+ 2017-01-18 Youenn Fablet <[email protected]>
+
+ Reject fetch promise in case of ReadableStream upload
+ https://bugs.webkit.org/show_bug.cgi?id=167145
+
+ Reviewed by Alex Christensen.
+
+ * web-platform-tests/fetch/api/basic/request-upload-expected.txt:
+ * web-platform-tests/fetch/api/basic/request-upload-worker-expected.txt:
+
2017-01-12 Matthew Hanson <[email protected]>
Merge r210616. rdar://problem/29971105
Modified: branches/safari-603-branch/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-expected.txt (210904 => 210905)
--- branches/safari-603-branch/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-expected.txt 2017-01-19 03:06:56 UTC (rev 210904)
+++ branches/safari-603-branch/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-expected.txt 2017-01-19 03:07:01 UTC (rev 210905)
@@ -10,4 +10,5 @@
PASS Fetch with POST with Float64Array body
PASS Fetch with POST with DataView body
PASS Fetch with POST with Blob body with mime type
+FAIL Fetch with POST with ReadableStream promise_test: Unhandled rejection with value: object "TypeError: ReadableStream uploading is not supported"
Modified: branches/safari-603-branch/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-worker-expected.txt (210904 => 210905)
--- branches/safari-603-branch/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-worker-expected.txt 2017-01-19 03:06:56 UTC (rev 210904)
+++ branches/safari-603-branch/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-worker-expected.txt 2017-01-19 03:07:01 UTC (rev 210905)
@@ -10,4 +10,4 @@
PASS Fetch with POST with Float64Array body
PASS Fetch with POST with DataView body
PASS Fetch with POST with Blob body with mime type
-
+FAIL Fetch with POST with ReadableStream promise_test: Unhandled rejection with value: object "TypeError: ReadableStream uploading is not supported"
Modified: branches/safari-603-branch/Source/WebCore/ChangeLog (210904 => 210905)
--- branches/safari-603-branch/Source/WebCore/ChangeLog 2017-01-19 03:06:56 UTC (rev 210904)
+++ branches/safari-603-branch/Source/WebCore/ChangeLog 2017-01-19 03:07:01 UTC (rev 210905)
@@ -1,5 +1,26 @@
2017-01-18 Matthew Hanson <[email protected]>
+ Merge r210860. rdar://problem/30080035
+
+ 2017-01-18 Youenn Fablet <[email protected]>
+
+ Reject fetch promise in case of ReadableStream upload
+ https://bugs.webkit.org/show_bug.cgi?id=167145
+
+ Reviewed by Alex Christensen.
+
+ Covered by rebased tests.
+
+ * Modules/fetch/FetchBody.cpp:
+ (WebCore::FetchBody::extract): Storing the fact that body data is represented as a ReadableStream.
+ * Modules/fetch/FetchBody.h:
+ (WebCore::FetchBody::isReadableStream):
+ * Modules/fetch/FetchRequest.h:
+ * Modules/fetch/FetchResponse.cpp:
+ (WebCore::FetchResponse::fetch): Rejecting if request body data is a ReadableStream.
+
+2017-01-18 Matthew Hanson <[email protected]>
+
Merge r210774. rdar://problem/30019773
2017-01-14 Chris Dumez <[email protected]>
Modified: branches/safari-603-branch/Source/WebCore/Modules/fetch/FetchBody.cpp (210904 => 210905)
--- branches/safari-603-branch/Source/WebCore/Modules/fetch/FetchBody.cpp 2017-01-19 03:06:56 UTC (rev 210904)
+++ branches/safari-603-branch/Source/WebCore/Modules/fetch/FetchBody.cpp 2017-01-19 03:07:01 UTC (rev 210905)
@@ -68,8 +68,11 @@
contentType = HTTPHeaderValues::formURLEncodedContentType();
return FetchBody(*JSURLSearchParams::toWrapped(value));
}
- if (value.inherits(JSReadableStream::info()))
- return FetchBody();
+ if (value.inherits(JSReadableStream::info())) {
+ FetchBody body;
+ body.m_isReadableStream = true;
+ return WTFMove(body);
+ }
if (value.inherits(JSC::JSArrayBuffer::info())) {
ArrayBuffer* data = ""
ASSERT(data);
Modified: branches/safari-603-branch/Source/WebCore/Modules/fetch/FetchBody.h (210904 => 210905)
--- branches/safari-603-branch/Source/WebCore/Modules/fetch/FetchBody.h 2017-01-19 03:06:56 UTC (rev 210904)
+++ branches/safari-603-branch/Source/WebCore/Modules/fetch/FetchBody.h 2017-01-19 03:07:01 UTC (rev 210905)
@@ -68,6 +68,7 @@
bool isArrayBufferView() const { return WTF::holds_alternative<Ref<const ArrayBufferView>>(m_data); }
bool isURLSearchParams() const { return WTF::holds_alternative<Ref<const URLSearchParams>>(m_data); }
bool isText() const { return WTF::holds_alternative<String>(m_data); }
+ bool isReadableStream() const { return m_isReadableStream; }
static std::optional<FetchBody> extract(ScriptExecutionContext&, JSC::ExecState&, JSC::JSValue, String&);
static FetchBody loadingBody() { return { }; }
@@ -114,6 +115,9 @@
FetchBodyConsumer m_consumer { FetchBodyConsumer::Type::None };
RefPtr<DeferredPromise> m_consumePromise;
+
+ // FIXME: We probably want to keep the stream as a specific field in m_data when we will support stream data upload.
+ bool m_isReadableStream { false };
};
} // namespace WebCore
Modified: branches/safari-603-branch/Source/WebCore/Modules/fetch/FetchRequest.h (210904 => 210905)
--- branches/safari-603-branch/Source/WebCore/Modules/fetch/FetchRequest.h 2017-01-19 03:06:56 UTC (rev 210904)
+++ branches/safari-603-branch/Source/WebCore/Modules/fetch/FetchRequest.h 2017-01-19 03:07:01 UTC (rev 210905)
@@ -96,6 +96,7 @@
const FetchOptions& fetchOptions() const { return m_internalRequest.options; }
ResourceRequest internalRequest() const;
+ bool isBodyReadableStream() const { return !isBodyNull() && body().isReadableStream(); }
const String& internalRequestReferrer() const { return m_internalRequest.referrer; }
Modified: branches/safari-603-branch/Source/WebCore/Modules/fetch/FetchResponse.cpp (210904 => 210905)
--- branches/safari-603-branch/Source/WebCore/Modules/fetch/FetchResponse.cpp 2017-01-19 03:06:56 UTC (rev 210904)
+++ branches/safari-603-branch/Source/WebCore/Modules/fetch/FetchResponse.cpp 2017-01-19 03:07:01 UTC (rev 210905)
@@ -100,6 +100,10 @@
void FetchResponse::fetch(ScriptExecutionContext& context, FetchRequest& request, FetchPromise&& promise)
{
+ if (request.isBodyReadableStream()) {
+ promise.reject(TypeError, "ReadableStream uploading is not supported");
+ return;
+ }
auto response = adoptRef(*new FetchResponse(context, FetchBody::loadingBody(), FetchHeaders::create(FetchHeaders::Guard::Immutable), { }));
// Setting pending activity until BodyLoader didFail or didSucceed callback is called.