LCOV - code coverage report
Current view: top level - test/wpt/xhr - setrequestheader-content-type.js (source / functions) Hit Total Coverage
Test: lcov.info Lines: 452 454 99.6 %
Date: 2024-12-07 00:20:21 Functions: 7 7 100.0 %
Branches: 28 29 96.6 %

           Branch data     Line data    Source code
       1            [ + ]:          2 : import assert from 'node:assert/strict';
       2                 :          2 : import { XMLHttpRequest } from '../../../lib/whatwg-xhr.js';
       3                 :          2 : import { FormData } from '../../../lib/whatwg-xhr.js';
       4                 :          2 : 
       5            [ + ]:          2 : export default (activeURL) => {
       6                 :          1 : 
       7                 :          1 :         request(
       8            [ + ]:          1 :                 function _String() { return ""; },
       9                 :          1 :                 {"Content-Type": ""},
      10                 :          1 :                 "",
      11                 :          1 :                 'setRequestHeader("") sends a blank string'
      12                 :          1 :         );
      13                 :          1 :         request(
      14            [ + ]:          1 :                 function _String() { return ""; },
      15                 :          1 :                 {"Content-Type": " "},
      16                 :          1 :                 "",
      17                 :          1 :                 'setRequestHeader(" ") sends the string " "'
      18                 :          1 :         );
      19                 :          1 :         request(
      20            [ + ]:          1 :                 function _String() { return ""; },
      21                 :          1 :                 {"Content-Type": null},
      22                 :          1 :                 "null",
      23                 :          1 :                 'setRequestHeader(null) sends the string "null"'
      24                 :          1 :         );
      25                 :          1 :         request(
      26            [ + ]:          1 :                 function _String() { return ""; },
      27                 :          1 :                 {"Content-Type": undefined},
      28                 :          1 :                 "undefined",
      29                 :          1 :                 'setRequestHeader(undefined) sends the string "undefined"'
      30                 :          1 :         );
      31                 :          1 :         request(
      32            [ + ]:          1 :                 function _String() { return "test"; },
      33                 :          1 :                 {},
      34                 :          1 :                 "text/plain;charset=UTF-8",
      35                 :          1 :                 'String request has correct default Content-Type of "text/plain;charset=UTF-8"'
      36                 :          1 :         );
      37                 :          1 :         request(
      38            [ + ]:          1 :                 function _String() { return "test()"; },
      39                 :          1 :                 {"Content-Type": "text/javascript;charset=ASCII"},
      40                 :          1 :                 "text/javascript;charset=UTF-8",
      41                 :          1 :                 "String request keeps setRequestHeader() Content-Type, with charset adjusted to UTF-8"
      42                 :          1 :         );
      43                 :          1 : /*
      44                 :          1 :         request(
      45                 :          1 :                 function _XMLDocument() { return new DOMParser().parseFromString("<xml/>", "application/xml"); },
      46                 :          1 :                 {"Content-Type": ""},
      47                 :          1 :                 "",
      48                 :          1 :                 'XML Document request respects setRequestHeader("")'
      49                 :          1 :         );
      50                 :          1 :         request(
      51                 :          1 :                 function _XMLDocument() { return new DOMParser().parseFromString("<xml/>", "application/xml"); },
      52                 :          1 :                 {},
      53                 :          1 :                 "application/xml;charset=UTF-8",
      54                 :          1 :                 'XML Document request has correct default Content-Type of "application/xml;charset=UTF-8"'
      55                 :          1 :         );
      56                 :          1 :         request(
      57                 :          1 :                 function _XMLDocument() { return new DOMParser().parseFromString("<xml/>", "application/xml"); },
      58                 :          1 :                 {"Content-Type": "application/xhtml+xml;charset=ASCII"},
      59                 :          1 :                 "application/xhtml+xml;charset=UTF-8",
      60                 :          1 :                 "XML Document request keeps setRequestHeader() Content-Type, with charset adjusted to UTF-8"
      61                 :          1 :         );
      62                 :          1 :         request(
      63                 :          1 :                 function _HTMLDocument() { return new DOMParser().parseFromString("<html></html>", "text/html"); },
      64                 :          1 :                 {"Content-Type": ""},
      65                 :          1 :                 "",
      66                 :          1 :                 'HTML Document request respects setRequestHeader("")'
      67                 :          1 :         );
      68                 :          1 :         request(
      69                 :          1 :                 function _HTMLDocument() { return new DOMParser().parseFromString("<html></html>", "text/html"); },
      70                 :          1 :                 {},
      71                 :          1 :                 "text/html;charset=UTF-8",
      72                 :          1 :                 'HTML Document request has correct default Content-Type of "text/html;charset=UTF-8"'
      73                 :          1 :         );
      74                 :          1 :         request(
      75                 :          1 :                 function _HTMLDocument() { return new DOMParser().parseFromString("<html></html>", "text/html"); },
      76                 :          1 :                 {"Content-Type": "text/html+junk;charset=ASCII"},
      77                 :          1 :                 "text/html+junk;charset=UTF-8",
      78                 :          1 :                 "HTML Document request keeps setRequestHeader() Content-Type, with charset adjusted to UTF-8"
      79                 :          1 :         );
      80                 :          1 : */
      81                 :          1 :         request(
      82            [ + ]:          1 :                 function _Blob() { return new Blob(["test"]); },
      83                 :          1 :                 {"Content-Type": ""},
      84                 :          1 :                 "",
      85                 :          1 :                 'Blob request respects setRequestHeader("") to be specified'
      86                 :          1 :         );
      87                 :          1 :         request(
      88            [ + ]:          1 :                 function _Blob() { return new Blob(["test"]); },
      89                 :          1 :                 {},
      90                 :          1 :                 undefined,
      91                 :          1 :                 "Blob request with unset type sends no Content-Type without setRequestHeader() call"
      92                 :          1 :         );
      93                 :          1 :         request(
      94            [ + ]:          1 :                 function _Blob() { return new Blob(["test"]); },
      95                 :          1 :                 {"Content-Type": "application/xml;charset=ASCII"},
      96                 :          1 :                 "application/xml;charset=ASCII",
      97                 :          1 :                 "Blob request with unset type keeps setRequestHeader() Content-Type and charset"
      98                 :          1 :         );
      99                 :          1 :         request(
     100            [ + ]:          1 :                 function _Blob() { return new Blob(["<xml/>"], {type : "application/xml;charset=ASCII"}); },
     101                 :          1 :                 {"Content-Type": ""},
     102                 :          1 :                 "",
     103                 :          1 :                 'Blob request with set type respects setRequestHeader("") to be specified'
     104                 :          1 :         );
     105                 :          1 :         request(
     106            [ + ]:          1 :                 function _Blob() { return new Blob(["<xml/>"], {type : "application/xml;charset=ASCII"}); },
     107                 :          1 :                 {},
     108                 :          1 :                 "application/xml;charset=ascii", // new Blob lowercases the type argument
     109                 :          1 :                 "Blob request with set type uses that it for Content-Type unless setRequestHeader()"
     110                 :          1 :         );
     111                 :          1 :         request(
     112            [ + ]:          1 :                 function _Blob() { return new Blob(["<xml/>"], {type : "application/xml;charset=UTF8"}); },
     113                 :          1 :                 {"Content-Type": "application/xml+junk;charset=ASCII"},
     114                 :          1 :                 "application/xml+junk;charset=ASCII",
     115                 :          1 :                 "Blob request with set type keeps setRequestHeader() Content-Type and charset"
     116                 :          1 :         );
     117                 :          1 :         request(
     118            [ + ]:          1 :                 function _ArrayBuffer() { return new ArrayBuffer(10); },
     119                 :          1 :                 {"Content-Type": ""},
     120                 :          1 :                 "",
     121                 :          1 :                 'ArrayBuffer request respects setRequestHeader("")'
     122                 :          1 :         );
     123                 :          1 :         request(
     124            [ + ]:          1 :                 function _ArrayBuffer() { return new ArrayBuffer(10); },
     125                 :          1 :                 {},
     126                 :          1 :                 undefined,
     127                 :          1 :                 "ArrayBuffer request sends no Content-Type without setRequestHeader() call"
     128                 :          1 :         );
     129                 :          1 :         request(
     130            [ + ]:          1 :                 function _ArrayBuffer() { return new ArrayBuffer(10); },
     131                 :          1 :                 {"Content-Type": "application/xml;charset=ASCII"},
     132                 :          1 :                 "application/xml;charset=ASCII",
     133                 :          1 :                 "ArrayBuffer request keeps setRequestHeader() Content-Type and charset"
     134                 :          1 :         );
     135                 :          1 :         request(
     136            [ + ]:          1 :                 function _Uint8Array() { return new Uint8Array(new ArrayBuffer(10)); },
     137                 :          1 :                 {"Content-Type": ""},
     138                 :          1 :                 "",
     139                 :          1 :                 'ArrayBufferView request respects setRequestHeader("")'
     140                 :          1 :         );
     141                 :          1 :         request(
     142            [ + ]:          1 :                 function _Uint8Array() { return new Uint8Array(new ArrayBuffer(10)); },
     143                 :          1 :                 {},
     144                 :          1 :                 undefined,
     145                 :          1 :                 "ArrayBufferView request sends no Content-Type without setRequestHeader() call"
     146                 :          1 :         );
     147                 :          1 :         request(
     148            [ + ]:          1 :                 function _Uint8Array() { return new Uint8Array(new ArrayBuffer(10)); },
     149                 :          1 :                 {"Content-Type": "application/xml;charset=ASCII"},
     150                 :          1 :                 "application/xml;charset=ASCII",
     151                 :          1 :                 "ArrayBufferView request keeps setRequestHeader() Content-Type and charset"
     152                 :          1 :         );
     153                 :          1 : /*
     154                 :          1 :         request(
     155                 :          1 :                 function _FormData() { return new FormData(); },
     156                 :          1 :                 {"Content-Type": ""},
     157                 :          1 :                 "",
     158                 :          1 :                 'FormData request respects setRequestHeader("")'
     159                 :          1 :         );
     160                 :          1 :         request(
     161                 :          1 :                 function _FormData() { return new FormData(); },
     162                 :          1 :                 {},
     163                 :          1 :                 /multipart\/form-data; boundary=(.*)/,
     164                 :          1 :                 'FormData request has correct default Content-Type of "multipart\/form-data; boundary=_"'
     165                 :          1 :         );
     166                 :          1 :         request(
     167                 :          1 :                 function _FormData() { return new FormData(); },
     168                 :          1 :                 {"Content-Type": "application/xml;charset=ASCII"},
     169                 :          1 :                 "application/xml;charset=ASCII",
     170                 :          1 :                 "FormData request keeps setRequestHeader() Content-Type and charset"
     171                 :          1 :         );
     172                 :          1 : */
     173                 :          1 :         request(
     174            [ + ]:          1 :                 function _URLSearchParams() { return new URLSearchParams("q=testQ&topic=testTopic") },
     175                 :          1 :                 {"Content-Type": ""},
     176                 :          1 :                 "",
     177                 :          1 :                 'URLSearchParams respects setRequestHeader("")'
     178                 :          1 :         );
     179                 :          1 :         request(
     180            [ + ]:          1 :                 function _URLSearchParams() { return new URLSearchParams("q=testQ&topic=testTopic") },
     181                 :          1 :                 {},
     182                 :          1 :                 "application/x-www-form-urlencoded;charset=UTF-8",
     183                 :          1 :                 'URLSearchParams request has correct default Content-Type of "application/x-www-form-urlencoded;charset=UTF-8"'
     184                 :          1 :         );
     185                 :          1 :         request(
     186            [ + ]:          1 :                 function _URLSearchParams() { return new URLSearchParams("q=testQ&topic=testTopic") },
     187                 :          1 :                 {"Content-Type": "application/xml;charset=ASCII"},
     188                 :          1 :                 "application/xml;charset=UTF-8",
     189                 :          1 :                 "URLSearchParams request keeps setRequestHeader() Content-Type, with charset adjusted to UTF-8"
     190                 :          1 : 
     191                 :          1 :                 // the default Content-Type for URLSearchParams has a charset specified (utf-8) in
     192                 :          1 :                 // https://fetch.spec.whatwg.org/#bodyinit, so the user's must be changed to match it
     193                 :          1 :                 // as per https://xhr.spec.whatwg.org/#the-send%28%29-method step 4.
     194                 :          1 :         );
     195                 :          1 : 
     196            [ + ]:          1 :         function request(inputGenerator, headersToSend, expectedType, title){
     197                 :         21 : 
     198                 :         21 :                 const toSend = inputGenerator();
     199                 :         21 : 
     200                 :         21 :                 const xhr = new XMLHttpRequest();
     201                 :         21 : 
     202                 :         21 :                 xhr.open('POST', `${activeURL}/inspect-headers.py?filter_name=Content-Type`, false);
     203                 :         21 : 
     204            [ + ]:         21 :                 for(let header in headersToSend){
     205                 :         15 :                         if(headersToSend.hasOwnProperty(header)){
     206                 :         15 :                                 xhr.setRequestHeader(header, headersToSend[header]);
     207                 :         15 :                         }
     208                 :         15 :                 }
     209                 :         21 : 
     210                 :         21 :                 xhr.send(toSend);
     211                 :         21 : 
     212                 :         21 :                 const actual = xhr.responseText;
     213                 :         21 : 
     214       [ + ][ + ]:         21 :                 if(expectedType === undefined || expectedType === null){
     215                 :          3 :                         assert.strictEqual(actual, '');
     216            [ + ]:          3 :                 }
     217                 :         18 :                 else
     218            [ - ]:         18 :                 if(expectedType instanceof RegExp){
     219                 :          0 :                         assert(expectedType.test(equal));
     220                 :          0 :                 }
     221                 :         18 :                 else{
     222                 :         18 :                         assert.strictEqual(actual, `Content-Type: ${expectedType}\n`);
     223                 :         18 :                 }
     224                 :         21 :         }
     225                 :          1 : }
     226                 :          2 : 
     227                 :          2 : /*
     228                 :          2 :  * setrequestheader-content-type.htm
     229                 :          2 :  *
     230                 :          2 : 
     231                 :          2 : <!DOCTYPE html>
     232                 :          2 : <html>
     233                 :          2 :   <head>
     234                 :          2 :     <title>XMLHttpRequest: setRequestHeader() - Content-Type header</title>
     235                 :          2 :     <meta name="timeout" content="long">
     236                 :          2 :     <script src="/resources/testharness.js"></script>
     237                 :          2 :     <script src="/resources/testharnessreport.js"></script>
     238                 :          2 :     <link rel="help" href="https://xhr.spec.whatwg.org/#the-setrequestheader()-method">
     239                 :          2 :   </head>
     240                 :          2 :   <body>
     241                 :          2 :     <div id="log"></div>
     242                 :          2 :     <script>
     243                 :          2 :       function request(inputGenerator, headersToSend, expectedType, title) {
     244                 :          2 :         test(function() {
     245                 :          2 :           const toSend = inputGenerator(),
     246                 :          2 :                 client = new XMLHttpRequest()
     247                 :          2 :           client.open("POST", "resources/inspect-headers.py?filter_name=Content-Type", false)
     248                 :          2 :           for(header in headersToSend) {
     249                 :          2 :             if (headersToSend.hasOwnProperty(header)) {
     250                 :          2 :               client.setRequestHeader(header, headersToSend[header]);
     251                 :          2 :             }
     252                 :          2 :           }
     253                 :          2 :           client.send(toSend)
     254                 :          2 : 
     255                 :          2 :           const actual = client.responseText
     256                 :          2 :           if (expectedType === undefined || expectedType === null) {
     257                 :          2 :             assert_equals(actual, "");
     258                 :          2 :           } else if (expectedType instanceof RegExp) {
     259                 :          2 :             assert_regexp_match(actual, expectedType);
     260                 :          2 :           } else {
     261                 :          2 :             assert_equals(actual, "Content-Type: " + expectedType + "\n");
     262                 :          2 :           }
     263                 :          2 :         }, title)
     264                 :          2 :       }
     265                 :          2 :       request(
     266                 :          2 :         function _String() { return ""; },
     267                 :          2 :         {"Content-Type": ""},
     268                 :          2 :         "",
     269                 :          2 :         'setRequestHeader("") sends a blank string'
     270                 :          2 :       )
     271                 :          2 :       request(
     272                 :          2 :         function _String() { return ""; },
     273                 :          2 :         {"Content-Type": " "},
     274                 :          2 :         "",
     275                 :          2 :         'setRequestHeader(" ") sends the string " "'
     276                 :          2 :       )
     277                 :          2 :       request(
     278                 :          2 :         function _String() { return ""; },
     279                 :          2 :         {"Content-Type": null},
     280                 :          2 :         "null",
     281                 :          2 :         'setRequestHeader(null) sends the string "null"'
     282                 :          2 :       )
     283                 :          2 :       request(
     284                 :          2 :         function _String() { return ""; },
     285                 :          2 :         {"Content-Type": undefined},
     286                 :          2 :         "undefined",
     287                 :          2 :         'setRequestHeader(undefined) sends the string "undefined"'
     288                 :          2 :       )
     289                 :          2 :       request(
     290                 :          2 :         function _String() { return "test"; },
     291                 :          2 :         {},
     292                 :          2 :         "text/plain;charset=UTF-8",
     293                 :          2 :         'String request has correct default Content-Type of "text/plain;charset=UTF-8"'
     294                 :          2 :       )
     295                 :          2 :       request(
     296                 :          2 :         function _String() { return "test()"; },
     297                 :          2 :         {"Content-Type": "text/javascript;charset=ASCII"},
     298                 :          2 :         "text/javascript;charset=UTF-8",
     299                 :          2 :         "String request keeps setRequestHeader() Content-Type, with charset adjusted to UTF-8"
     300                 :          2 :       )
     301                 :          2 :       request(
     302                 :          2 :         function _XMLDocument() { return new DOMParser().parseFromString("<xml/>", "application/xml"); },
     303                 :          2 :         {"Content-Type": ""},
     304                 :          2 :         "",
     305                 :          2 :         'XML Document request respects setRequestHeader("")'
     306                 :          2 :       )
     307                 :          2 :       request(
     308                 :          2 :         function _XMLDocument() { return new DOMParser().parseFromString("<xml/>", "application/xml"); },
     309                 :          2 :         {},
     310                 :          2 :         "application/xml;charset=UTF-8",
     311                 :          2 :         'XML Document request has correct default Content-Type of "application/xml;charset=UTF-8"'
     312                 :          2 :       )
     313                 :          2 :       request(
     314                 :          2 :         function _XMLDocument() { return new DOMParser().parseFromString("<xml/>", "application/xml"); },
     315                 :          2 :         {"Content-Type": "application/xhtml+xml;charset=ASCII"},
     316                 :          2 :         "application/xhtml+xml;charset=UTF-8",
     317                 :          2 :         "XML Document request keeps setRequestHeader() Content-Type, with charset adjusted to UTF-8"
     318                 :          2 :       )
     319                 :          2 :       request(
     320                 :          2 :         function _HTMLDocument() { return new DOMParser().parseFromString("<html></html>", "text/html"); },
     321                 :          2 :         {"Content-Type": ""},
     322                 :          2 :         "",
     323                 :          2 :         'HTML Document request respects setRequestHeader("")'
     324                 :          2 :       )
     325                 :          2 :       request(
     326                 :          2 :         function _HTMLDocument() { return new DOMParser().parseFromString("<html></html>", "text/html"); },
     327                 :          2 :         {},
     328                 :          2 :         "text/html;charset=UTF-8",
     329                 :          2 :         'HTML Document request has correct default Content-Type of "text/html;charset=UTF-8"'
     330                 :          2 :       )
     331                 :          2 :       request(
     332                 :          2 :         function _HTMLDocument() { return new DOMParser().parseFromString("<html></html>", "text/html"); },
     333                 :          2 :         {"Content-Type": "text/html+junk;charset=ASCII"},
     334                 :          2 :         "text/html+junk;charset=UTF-8",
     335                 :          2 :         "HTML Document request keeps setRequestHeader() Content-Type, with charset adjusted to UTF-8"
     336                 :          2 :       )
     337                 :          2 :       request(
     338                 :          2 :         function _Blob() { return new Blob(["test"]); },
     339                 :          2 :         {"Content-Type": ""},
     340                 :          2 :         "",
     341                 :          2 :         'Blob request respects setRequestHeader("") to be specified'
     342                 :          2 :       )
     343                 :          2 :       request(
     344                 :          2 :         function _Blob() { return new Blob(["test"]); },
     345                 :          2 :         {},
     346                 :          2 :         undefined,
     347                 :          2 :         "Blob request with unset type sends no Content-Type without setRequestHeader() call"
     348                 :          2 :       )
     349                 :          2 :       request(
     350                 :          2 :         function _Blob() { return new Blob(["test"]); },
     351                 :          2 :         {"Content-Type": "application/xml;charset=ASCII"},
     352                 :          2 :         "application/xml;charset=ASCII",
     353                 :          2 :         "Blob request with unset type keeps setRequestHeader() Content-Type and charset"
     354                 :          2 :       )
     355                 :          2 :       request(
     356                 :          2 :         function _Blob() { return new Blob(["<xml/>"], {type : "application/xml;charset=ASCII"}); },
     357                 :          2 :         {"Content-Type": ""},
     358                 :          2 :         "",
     359                 :          2 :         'Blob request with set type respects setRequestHeader("") to be specified'
     360                 :          2 :       )
     361                 :          2 :       request(
     362                 :          2 :         function _Blob() { return new Blob(["<xml/>"], {type : "application/xml;charset=ASCII"}); },
     363                 :          2 :         {},
     364                 :          2 :         "application/xml;charset=ascii", // new Blob lowercases the type argument
     365                 :          2 :         "Blob request with set type uses that it for Content-Type unless setRequestHeader()"
     366                 :          2 :       )
     367                 :          2 :       request(
     368                 :          2 :         function _Blob() { return new Blob(["<xml/>"], {type : "application/xml;charset=UTF8"}); },
     369                 :          2 :         {"Content-Type": "application/xml+junk;charset=ASCII"},
     370                 :          2 :         "application/xml+junk;charset=ASCII",
     371                 :          2 :         "Blob request with set type keeps setRequestHeader() Content-Type and charset"
     372                 :          2 :       )
     373                 :          2 :       request(
     374                 :          2 :         function _ArrayBuffer() { return new ArrayBuffer(10); },
     375                 :          2 :         {"Content-Type": ""},
     376                 :          2 :         "",
     377                 :          2 :         'ArrayBuffer request respects setRequestHeader("")'
     378                 :          2 :       )
     379                 :          2 :       request(
     380                 :          2 :         function _ArrayBuffer() { return new ArrayBuffer(10); },
     381                 :          2 :         {},
     382                 :          2 :         undefined,
     383                 :          2 :         "ArrayBuffer request sends no Content-Type without setRequestHeader() call"
     384                 :          2 :       )
     385                 :          2 :       request(
     386                 :          2 :         function _ArrayBuffer() { return new ArrayBuffer(10); },
     387                 :          2 :         {"Content-Type": "application/xml;charset=ASCII"},
     388                 :          2 :         "application/xml;charset=ASCII",
     389                 :          2 :         "ArrayBuffer request keeps setRequestHeader() Content-Type and charset"
     390                 :          2 :       )
     391                 :          2 :       request(
     392                 :          2 :         function _Uint8Array() { return new Uint8Array(new ArrayBuffer(10)); },
     393                 :          2 :         {"Content-Type": ""},
     394                 :          2 :         "",
     395                 :          2 :         'ArrayBufferView request respects setRequestHeader("")'
     396                 :          2 :       )
     397                 :          2 :       request(
     398                 :          2 :         function _Uint8Array() { return new Uint8Array(new ArrayBuffer(10)); },
     399                 :          2 :         {},
     400                 :          2 :         undefined,
     401                 :          2 :         "ArrayBufferView request sends no Content-Type without setRequestHeader() call"
     402                 :          2 :       )
     403                 :          2 :       request(
     404                 :          2 :         function _Uint8Array() { return new Uint8Array(new ArrayBuffer(10)); },
     405                 :          2 :         {"Content-Type": "application/xml;charset=ASCII"},
     406                 :          2 :         "application/xml;charset=ASCII",
     407                 :          2 :         "ArrayBufferView request keeps setRequestHeader() Content-Type and charset"
     408                 :          2 :       )
     409                 :          2 :       request(
     410                 :          2 :         function _FormData() { return new FormData(); },
     411                 :          2 :         {"Content-Type": ""},
     412                 :          2 :         "",
     413                 :          2 :         'FormData request respects setRequestHeader("")'
     414                 :          2 :       )
     415                 :          2 :       request(
     416                 :          2 :         function _FormData() { return new FormData(); },
     417                 :          2 :         {},
     418                 :          2 :         /multipart\/form-data; boundary=(.*)/,
     419                 :          2 :         'FormData request has correct default Content-Type of "multipart\/form-data; boundary=_"'
     420                 :          2 :       )
     421                 :          2 :       request(
     422                 :          2 :         function _FormData() { return new FormData(); },
     423                 :          2 :         {"Content-Type": "application/xml;charset=ASCII"},
     424                 :          2 :         "application/xml;charset=ASCII",
     425                 :          2 :         "FormData request keeps setRequestHeader() Content-Type and charset"
     426                 :          2 :       )
     427                 :          2 :       request(
     428                 :          2 :         function _URLSearchParams() { return new URLSearchParams("q=testQ&topic=testTopic") },
     429                 :          2 :         {"Content-Type": ""},
     430                 :          2 :         "",
     431                 :          2 :         'URLSearchParams respects setRequestHeader("")'
     432                 :          2 :       )
     433                 :          2 :       request(
     434                 :          2 :         function _URLSearchParams() { return new URLSearchParams("q=testQ&topic=testTopic") },
     435                 :          2 :         {},
     436                 :          2 :         "application/x-www-form-urlencoded;charset=UTF-8",
     437                 :          2 :         'URLSearchParams request has correct default Content-Type of "application/x-www-form-urlencoded;charset=UTF-8"'
     438                 :          2 :       )
     439                 :          2 :       request(
     440                 :          2 :         function _URLSearchParams() { return new URLSearchParams("q=testQ&topic=testTopic") },
     441                 :          2 :         {"Content-Type": "application/xml;charset=ASCII"},
     442                 :          2 :         "application/xml;charset=UTF-8",
     443                 :          2 :         "URLSearchParams request keeps setRequestHeader() Content-Type, with charset adjusted to UTF-8"
     444                 :          2 :         // the default Content-Type for URLSearchParams has a charset specified (utf-8) in
     445                 :          2 :         // https://fetch.spec.whatwg.org/#bodyinit, so the user's must be changed to match it
     446                 :          2 :         // as per https://xhr.spec.whatwg.org/#the-send%28%29-method step 4.
     447                 :          2 :       )
     448                 :          2 :     </script>
     449                 :          2 :   </body>
     450                 :          2 : </html>
     451                 :          2 : 
     452                 :          2 :  *
     453                 :          2 :  * setrequestheader-content-type.htm
     454                 :          2 :  */

Generated by: LCOV version 1.14