XMLHttpRequest: overrideMimeType should not update the response's "Content-Type"...
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 10 Sep 2018 08:28:02 +0000 (08:28 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 10 Sep 2018 08:28:02 +0000 (08:28 +0000)
https://bugs.webkit.org/show_bug.cgi?id=189465

Patch by Rob Buis <rbuis@igalia.com> on 2018-09-10
Reviewed by Frédéric Wang.

LayoutTests/imported/w3c:

* web-platform-tests/xhr/overridemimetype-invalid-mime-type-expected.txt:

Source/WebCore:

The xhr spec changed [1, 2] so that overrideMimeType should not update the
response's "Content-Type" header anymore.

Behavior matches Firefox and Chrome.

[1] https://xhr.spec.whatwg.org/#dom-xmlhttprequest-overridemimetype
[2] https://github.com/whatwg/xhr/issues/157

Tests: http/tests/xmlhttprequest/xmlhttprequest-overridemimetype-content-type-header.html
       web-platform-tests/xhr/overridemimetype-invalid-mime-type.htm

* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::didReceiveResponse):

LayoutTests:

Change existing test to reflect new behavior.

* http/tests/xmlhttprequest/xmlhttprequest-overridemimetype-content-type-header-expected.txt:
* http/tests/xmlhttprequest/xmlhttprequest-overridemimetype-content-type-header.html:

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

LayoutTests/ChangeLog
LayoutTests/http/tests/xmlhttprequest/xmlhttprequest-overridemimetype-content-type-header-expected.txt
LayoutTests/http/tests/xmlhttprequest/xmlhttprequest-overridemimetype-content-type-header.html
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/xhr/overridemimetype-invalid-mime-type-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/xml/XMLHttpRequest.cpp

index e03cb26..c731fe4 100644 (file)
@@ -1,3 +1,15 @@
+2018-09-10  Rob Buis  <rbuis@igalia.com>
+
+        XMLHttpRequest: overrideMimeType should not update the response's "Content-Type" header
+        https://bugs.webkit.org/show_bug.cgi?id=189465
+
+        Reviewed by Frédéric Wang.
+
+        Change existing test to reflect new behavior.
+
+        * http/tests/xmlhttprequest/xmlhttprequest-overridemimetype-content-type-header-expected.txt:
+        * http/tests/xmlhttprequest/xmlhttprequest-overridemimetype-content-type-header.html:
+
 2018-09-10  Antoine Quint  <graouts@apple.com>
 
         [Web Animations] Interrupting an accelerated CSS transition on a composited element in flight fails
index 0fbe1e8..880b205 100644 (file)
@@ -1,9 +1,9 @@
-This tests that XMLHttpRequest overrideMimeType() properly updates the Content-Type header for the response.
+This tests that XMLHttpRequest overrideMimeType() does not update the Content-Type header for the response.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS xhr.getResponseHeader("Content-Type") is "text/xml;charset=GBK"
+PASS xhr.getResponseHeader("Content-Type") is "application/xml"
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 9c2b968..04add7a 100644 (file)
@@ -5,7 +5,7 @@
 </head>
 <body>
     <script>
-        description('This tests that XMLHttpRequest overrideMimeType() properly updates the Content-Type header for the response.');
+        description('This tests that XMLHttpRequest overrideMimeType() does not update the Content-Type header for the response.');
         window.jsTestIsAsync = true;
 
         var xhr = new XMLHttpRequest();
@@ -13,7 +13,7 @@
 
         xhr.onreadystatechange = function () {
             if (xhr.readyState == xhr.LOADING) {
-                shouldBe('xhr.getResponseHeader("Content-Type")', '"text/xml;charset=GBK"');
+                shouldBe('xhr.getResponseHeader("Content-Type")', '"application/xml"');
                 finishJSTest();
             }
         }
index c0bc2d6..fe5c4bc 100644 (file)
@@ -1,3 +1,12 @@
+2018-09-10  Rob Buis  <rbuis@igalia.com>
+
+        XMLHttpRequest: overrideMimeType should not update the response's "Content-Type" header
+        https://bugs.webkit.org/show_bug.cgi?id=189465
+
+        Reviewed by Frédéric Wang.
+
+        * web-platform-tests/xhr/overridemimetype-invalid-mime-type-expected.txt:
+
 2018-09-07  Youenn Fablet  <youenn@apple.com>
 
         Add support for unified plan transceivers
index b043d7e..5758656 100644 (file)
@@ -1,5 +1,5 @@
 
-FAIL Bogus MIME type does not override encoding assert_equals: expected "text/html;charset=windows-1252" but got "bogus"
+PASS Bogus MIME type does not override encoding 
 FAIL Bogus MIME type does not override encoding, 2 assert_equals: expected "ÿ" but got "\x1a"
-FAIL Bogus MIME type does override MIME type assert_equals: expected "text/xml" but got "bogus"
+PASS Bogus MIME type does override MIME type 
 
index 7ce60b1..43d342d 100644 (file)
@@ -1,3 +1,24 @@
+2018-09-10  Rob Buis  <rbuis@igalia.com>
+
+        XMLHttpRequest: overrideMimeType should not update the response's "Content-Type" header
+        https://bugs.webkit.org/show_bug.cgi?id=189465
+
+        Reviewed by Frédéric Wang.
+
+        The xhr spec changed [1, 2] so that overrideMimeType should not update the
+        response's "Content-Type" header anymore.
+
+        Behavior matches Firefox and Chrome.
+
+        [1] https://xhr.spec.whatwg.org/#dom-xmlhttprequest-overridemimetype
+        [2] https://github.com/whatwg/xhr/issues/157
+
+        Tests: http/tests/xmlhttprequest/xmlhttprequest-overridemimetype-content-type-header.html
+               web-platform-tests/xhr/overridemimetype-invalid-mime-type.htm
+
+        * xml/XMLHttpRequest.cpp:
+        (WebCore::XMLHttpRequest::didReceiveResponse):
+
 2018-09-10  Antoine Quint  <graouts@apple.com>
 
         [Web Animations] Interrupting an accelerated CSS transition on a composited element in flight fails
index a9ab362..8d8f83d 100644 (file)
@@ -965,8 +965,6 @@ void XMLHttpRequest::didSendData(unsigned long long bytesSent, unsigned long lon
 void XMLHttpRequest::didReceiveResponse(unsigned long, const ResourceResponse& response)
 {
     m_response = response;
-    if (!m_mimeTypeOverride.isEmpty())
-        m_response.setHTTPHeaderField(HTTPHeaderName::ContentType, m_mimeTypeOverride);
 }
 
 static inline bool shouldDecodeResponse(XMLHttpRequest::ResponseType type)
@@ -1026,7 +1024,6 @@ void XMLHttpRequest::didReceiveData(const char* data, int len)
     if (readyState() < HEADERS_RECEIVED)
         changeState(HEADERS_RECEIVED);
 
-    // FIXME: Should we update "Content-Type" header field with m_mimeTypeOverride value in case it has changed since didReceiveResponse?
     if (!m_mimeTypeOverride.isEmpty())
         m_responseEncoding = extractCharsetFromMediaType(m_mimeTypeOverride);
     if (m_responseEncoding.isEmpty())