(headers = kEmptyObject)
| 38 | |
| 39 | // Convert a Headers object (Map<string, number | string | string[]>) to a plain object (Map<string, string>) |
| 40 | const convertHeaderObject = (headers = kEmptyObject) => { |
| 41 | // The 'host' header that contains the host and port of the URL. |
| 42 | let host; |
| 43 | let charset; |
| 44 | let mimeType; |
| 45 | const dict = {}; |
| 46 | for (const { 0: key, 1: value } of ObjectEntries(headers)) { |
| 47 | const lowerCasedKey = key.toLowerCase(); |
| 48 | if (lowerCasedKey === 'host') { |
| 49 | host = value; |
| 50 | } |
| 51 | if (lowerCasedKey === 'content-type') { |
| 52 | const result = sniffMimeType(value); |
| 53 | charset = result.charset; |
| 54 | mimeType = result.mimeType; |
| 55 | } |
| 56 | if (typeof value === 'string') { |
| 57 | dict[key] = value; |
| 58 | } else if (ArrayIsArray(value)) { |
| 59 | if (lowerCasedKey === 'cookie') dict[key] = value.join('; '); |
| 60 | // ChromeDevTools frontend treats 'set-cookie' as a special case |
| 61 | // https://github.com/ChromeDevTools/devtools-frontend/blob/4275917f84266ef40613db3c1784a25f902ea74e/front_end/core/sdk/NetworkRequest.ts#L1368 |
| 62 | else if (lowerCasedKey === 'set-cookie') dict[key] = value.join('\n'); |
| 63 | else dict[key] = value.join(', '); |
| 64 | } else { |
| 65 | dict[key] = String(value); |
| 66 | } |
| 67 | } |
| 68 | return [dict, host, charset, mimeType]; |
| 69 | }; |
| 70 | |
| 71 | /** |
| 72 | * When a client request is created, emit Network.requestWillBeSent event. |
no test coverage detected
searching dependent graphs…