[Fetch] Extracting a body of type Blob should not set Content-Type to the empty string
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 20 Dec 2017 01:15:58 +0000 (01:15 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 20 Dec 2017 01:15:58 +0000 (01:15 +0000)
https://bugs.webkit.org/show_bug.cgi?id=180991

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline WPT test now that it is passing.

* web-platform-tests/service-workers/service-worker/invalid-blobtype.https-expected.txt:

Source/WebCore:

Extracting a body of type Blob should not set Content-Type to the empty string as per:
- https://fetch.spec.whatwg.org/#concept-bodyinit-extract

No new tests, rebaselined existing test.

* Modules/fetch/FetchBody.cpp:
(WebCore::FetchBody::extract):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226162 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/http/wpt/fetch/fetch-as-blob.js
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/invalid-blobtype.https-expected.txt
LayoutTests/platform/mac-sierra/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any-expected.txt
LayoutTests/platform/mac-sierra/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.worker-expected.txt
LayoutTests/platform/mac/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any-expected.txt
LayoutTests/platform/mac/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.worker-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/Modules/fetch/FetchBody.cpp

index 2ec400d..0130a8d 100644 (file)
@@ -29,7 +29,7 @@ promise_test(function(t) {
     return req.blob()
       .then(function(blob) {
           assert_equals(blob.type, '');
-          assert_equals(req.headers.get('Content-Type'), '');
+          assert_equals(req.headers.get('Content-Type'), null);
         });
   }, 'MIME type for Blob');
 
index 7cba9d9..28e2464 100644 (file)
@@ -1,5 +1,16 @@
 2017-12-19  Chris Dumez  <cdumez@apple.com>
 
+        [Fetch] Extracting a body of type Blob should not set Content-Type to the empty string
+        https://bugs.webkit.org/show_bug.cgi?id=180991
+
+        Reviewed by Youenn Fablet.
+
+        Rebaseline WPT test now that it is passing.
+
+        * web-platform-tests/service-workers/service-worker/invalid-blobtype.https-expected.txt:
+
+2017-12-19  Chris Dumez  <cdumez@apple.com>
+
         scopeURL should start with the provided scriptURL
         https://bugs.webkit.org/show_bug.cgi?id=180983
 
index 425b867..c7c90f2 100644 (file)
@@ -7,7 +7,7 @@ PASS Fetch with POST without body
 PASS Fetch with POST with text body 
 PASS Fetch with POST with FormData body 
 PASS Fetch with POST with URLSearchParams body 
-FAIL Fetch with POST with Blob body assert_equals: Request should have header content-type: null expected (object) null but got (string) ""
+FAIL Fetch with POST with Blob body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
 FAIL Fetch with POST with ArrayBuffer body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
 FAIL Fetch with POST with Uint8Array body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
 FAIL Fetch with POST with Int8Array body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
index 447fe1e..cb9429a 100644 (file)
@@ -7,7 +7,7 @@ PASS Fetch with POST without body
 PASS Fetch with POST with text body 
 FAIL Fetch with POST with FormData body Can't find variable: FormData
 PASS Fetch with POST with URLSearchParams body 
-FAIL Fetch with POST with Blob body assert_equals: Request should have header content-type: null expected (object) null but got (string) ""
+FAIL Fetch with POST with Blob body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
 FAIL Fetch with POST with ArrayBuffer body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
 FAIL Fetch with POST with Uint8Array body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
 FAIL Fetch with POST with Int8Array body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
index 425b867..c7c90f2 100644 (file)
@@ -7,7 +7,7 @@ PASS Fetch with POST without body
 PASS Fetch with POST with text body 
 PASS Fetch with POST with FormData body 
 PASS Fetch with POST with URLSearchParams body 
-FAIL Fetch with POST with Blob body assert_equals: Request should have header content-type: null expected (object) null but got (string) ""
+FAIL Fetch with POST with Blob body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
 FAIL Fetch with POST with ArrayBuffer body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
 FAIL Fetch with POST with Uint8Array body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
 FAIL Fetch with POST with Int8Array body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
index 447fe1e..cb9429a 100644 (file)
@@ -7,7 +7,7 @@ PASS Fetch with POST without body
 PASS Fetch with POST with text body 
 FAIL Fetch with POST with FormData body Can't find variable: FormData
 PASS Fetch with POST with URLSearchParams body 
-FAIL Fetch with POST with Blob body assert_equals: Request should have header content-type: null expected (object) null but got (string) ""
+FAIL Fetch with POST with Blob body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
 FAIL Fetch with POST with ArrayBuffer body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
 FAIL Fetch with POST with Uint8Array body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
 FAIL Fetch with POST with Int8Array body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
index 425b867..c7c90f2 100644 (file)
@@ -7,7 +7,7 @@ PASS Fetch with POST without body
 PASS Fetch with POST with text body 
 PASS Fetch with POST with FormData body 
 PASS Fetch with POST with URLSearchParams body 
-FAIL Fetch with POST with Blob body assert_equals: Request should have header content-type: null expected (object) null but got (string) ""
+FAIL Fetch with POST with Blob body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
 FAIL Fetch with POST with ArrayBuffer body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
 FAIL Fetch with POST with Uint8Array body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
 FAIL Fetch with POST with Int8Array body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
index 447fe1e..cb9429a 100644 (file)
@@ -7,7 +7,7 @@ PASS Fetch with POST without body
 PASS Fetch with POST with text body 
 FAIL Fetch with POST with FormData body Can't find variable: FormData
 PASS Fetch with POST with URLSearchParams body 
-FAIL Fetch with POST with Blob body assert_equals: Request should have header content-type: null expected (object) null but got (string) ""
+FAIL Fetch with POST with Blob body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
 FAIL Fetch with POST with ArrayBuffer body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
 FAIL Fetch with POST with Uint8Array body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
 FAIL Fetch with POST with Int8Array body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
index 3ff5599..cd66c79 100644 (file)
@@ -1,3 +1,18 @@
+2017-12-19  Chris Dumez  <cdumez@apple.com>
+
+        [Fetch] Extracting a body of type Blob should not set Content-Type to the empty string
+        https://bugs.webkit.org/show_bug.cgi?id=180991
+
+        Reviewed by Youenn Fablet.
+
+        Extracting a body of type Blob should not set Content-Type to the empty string as per:
+        - https://fetch.spec.whatwg.org/#concept-bodyinit-extract
+
+        No new tests, rebaselined existing test.
+
+        * Modules/fetch/FetchBody.cpp:
+        (WebCore::FetchBody::extract):
+
 2017-12-19  Commit Queue  <commit-queue@webkit.org>
 
         Unreviewed, rolling out r226094.
index a35baaf..5be2e7d 100644 (file)
@@ -44,7 +44,8 @@ FetchBody FetchBody::extract(ScriptExecutionContext& context, Init&& value, Stri
 {
     return WTF::switchOn(value, [&](RefPtr<Blob>& value) mutable {
         Ref<const Blob> blob = value.releaseNonNull();
-        contentType = blob->type();
+        if (!blob->type().isEmpty())
+            contentType = blob->type();
         return FetchBody(WTFMove(blob));
     }, [&](RefPtr<DOMFormData>& value) mutable {
         Ref<DOMFormData> domFormData = value.releaseNonNull();