Title: [222561] trunk
- Revision
- 222561
- Author
- commit-qu...@webkit.org
- Date
- 2017-09-27 11:01:29 -0700 (Wed, 27 Sep 2017)
Log Message
[Fetch API] Cloning an opaque response should not assert
https://bugs.webkit.org/show_bug.cgi?id=177548
Patch by Youenn Fablet <you...@apple.com> on 2017-09-27
Reviewed by Sam Weinig.
Source/WebCore:
Test: http/wpt/fetch/response-opaque-clone.html
* Modules/fetch/FetchBodyOwner.cpp:
(WebCore::FetchBodyOwner::readableStream): Returning null if response is opaque.
* Modules/fetch/FetchResponse.cpp:
(WebCore::FetchResponse::clone): Making sure cloned responses keep their opaque state.
(WebCore::FetchResponse::consumeBodyAsStream): Removing assertion as we need to create a stream for cloning.
LayoutTests:
* http/wpt/fetch/response-opaque-clone-expected.txt: Added.
* http/wpt/fetch/response-opaque-clone.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (222560 => 222561)
--- trunk/LayoutTests/ChangeLog 2017-09-27 17:57:08 UTC (rev 222560)
+++ trunk/LayoutTests/ChangeLog 2017-09-27 18:01:29 UTC (rev 222561)
@@ -1,3 +1,13 @@
+2017-09-27 Youenn Fablet <you...@apple.com>
+
+ [Fetch API] Cloning an opaque response should not assert
+ https://bugs.webkit.org/show_bug.cgi?id=177548
+
+ Reviewed by Sam Weinig.
+
+ * http/wpt/fetch/response-opaque-clone-expected.txt: Added.
+ * http/wpt/fetch/response-opaque-clone.html: Added.
+
2017-09-27 Chris Dumez <cdu...@apple.com>
cssFloat missing in CSSPropertyDeclaration.prototype
Added: trunk/LayoutTests/http/wpt/fetch/response-opaque-clone-expected.txt (0 => 222561)
--- trunk/LayoutTests/http/wpt/fetch/response-opaque-clone-expected.txt (rev 0)
+++ trunk/LayoutTests/http/wpt/fetch/response-opaque-clone-expected.txt 2017-09-27 18:01:29 UTC (rev 222561)
@@ -0,0 +1,3 @@
+
+PASS Check opaque response can be cloned
+
Added: trunk/LayoutTests/http/wpt/fetch/response-opaque-clone.html (0 => 222561)
--- trunk/LayoutTests/http/wpt/fetch/response-opaque-clone.html (rev 0)
+++ trunk/LayoutTests/http/wpt/fetch/response-opaque-clone.html 2017-09-27 18:01:29 UTC (rev 222561)
@@ -0,0 +1,25 @@
+<!doctype html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <title>Request clone</title>
+ <meta name="help" href=""
+ <script src=""
+ <script src=""
+ </head>
+ <body>
+ <script src=""
+ <script>
+promise_test(function(test) {
+ return fetch(get_host_info().HTTP_REMOTE_ORIGIN, { mode: "no-cors" }).then((response) => {
+ var clone = response.clone();
+ assert_equals(response.body, null, "opaque response body should be null");
+ assert_equals(clone.body, null, "clone body should be null");
+ return clone.arrayBuffer();
+ }).then((buffer) => {
+ assert_equals(buffer.byteLength, 0, "cloned opaque response buffer should be null");
+ });
+}, "Check opaque response can be cloned");
+ </script>
+ </body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (222560 => 222561)
--- trunk/Source/WebCore/ChangeLog 2017-09-27 17:57:08 UTC (rev 222560)
+++ trunk/Source/WebCore/ChangeLog 2017-09-27 18:01:29 UTC (rev 222561)
@@ -1,3 +1,18 @@
+2017-09-27 Youenn Fablet <you...@apple.com>
+
+ [Fetch API] Cloning an opaque response should not assert
+ https://bugs.webkit.org/show_bug.cgi?id=177548
+
+ Reviewed by Sam Weinig.
+
+ Test: http/wpt/fetch/response-opaque-clone.html
+
+ * Modules/fetch/FetchBodyOwner.cpp:
+ (WebCore::FetchBodyOwner::readableStream): Returning null if response is opaque.
+ * Modules/fetch/FetchResponse.cpp:
+ (WebCore::FetchResponse::clone): Making sure cloned responses keep their opaque state.
+ (WebCore::FetchResponse::consumeBodyAsStream): Removing assertion as we need to create a stream for cloning.
+
2017-09-26 Joseph Pecoraro <pecor...@apple.com>
Web Inspector: Remove unused parameter of Page.reload
Modified: trunk/Source/WebCore/Modules/fetch/FetchBodyOwner.cpp (222560 => 222561)
--- trunk/Source/WebCore/Modules/fetch/FetchBodyOwner.cpp 2017-09-27 17:57:08 UTC (rev 222560)
+++ trunk/Source/WebCore/Modules/fetch/FetchBodyOwner.cpp 2017-09-27 18:01:29 UTC (rev 222561)
@@ -287,7 +287,7 @@
RefPtr<ReadableStream> FetchBodyOwner::readableStream(JSC::ExecState& state)
{
- if (isBodyNull())
+ if (isBodyNullOrOpaque())
return nullptr;
if (!m_body->hasReadableStream()) {
Modified: trunk/Source/WebCore/Modules/fetch/FetchResponse.cpp (222560 => 222561)
--- trunk/Source/WebCore/Modules/fetch/FetchResponse.cpp 2017-09-27 17:57:08 UTC (rev 222560)
+++ trunk/Source/WebCore/Modules/fetch/FetchResponse.cpp 2017-09-27 18:01:29 UTC (rev 222561)
@@ -157,6 +157,8 @@
auto clone = adoptRef(*new FetchResponse(context, std::nullopt, FetchHeaders::create(headers()), ResourceResponse(m_response)));
clone->cloneBody(*this);
+ if (isBodyOpaque())
+ clone->setBodyAsOpaque();
return WTFMove(clone);
}
@@ -350,7 +352,6 @@
void FetchResponse::consumeBodyAsStream()
{
- ASSERT(!isBodyOpaque());
ASSERT(m_readableStreamSource);
if (!isLoading()) {
FetchBodyOwner::consumeBodyAsStream();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes