| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "config.h" | 5 #include "config.h" |
| 6 #include "FetchResponseData.h" | 6 #include "FetchResponseData.h" |
| 7 | 7 |
| 8 #include "core/fetch/CrossOriginAccessControl.h" | 8 #include "core/fetch/CrossOriginAccessControl.h" |
| 9 #include "modules/serviceworkers/FetchHeaderList.h" | 9 #include "modules/serviceworkers/FetchHeaderList.h" |
| 10 #include "public/platform/WebServiceWorkerResponse.h" | 10 #include "public/platform/WebServiceWorkerResponse.h" |
| 11 | 11 |
| 12 namespace blink { | 12 namespace blink { |
| 13 | 13 |
| 14 namespace { |
| 15 |
| 16 WebServiceWorkerResponseType fetchTypeToWebType(FetchResponseData::Type fetchTyp
e) |
| 17 { |
| 18 WebServiceWorkerResponseType webType = WebServiceWorkerResponseTypeDefault; |
| 19 switch (fetchType) { |
| 20 case FetchResponseData::BasicType: |
| 21 webType = WebServiceWorkerResponseTypeBasic; |
| 22 break; |
| 23 case FetchResponseData::CORSType: |
| 24 webType = WebServiceWorkerResponseTypeCORS; |
| 25 break; |
| 26 case FetchResponseData::DefaultType: |
| 27 webType = WebServiceWorkerResponseTypeDefault; |
| 28 break; |
| 29 case FetchResponseData::ErrorType: |
| 30 webType = WebServiceWorkerResponseTypeError; |
| 31 break; |
| 32 case FetchResponseData::OpaqueType: |
| 33 webType = WebServiceWorkerResponseTypeOpaque; |
| 34 break; |
| 35 } |
| 36 return webType; |
| 37 } |
| 38 |
| 39 } // namespace |
| 40 |
| 14 FetchResponseData* FetchResponseData::create() | 41 FetchResponseData* FetchResponseData::create() |
| 15 { | 42 { |
| 16 // "Unless stated otherwise, a response's url is null, status is 200, status | 43 // "Unless stated otherwise, a response's url is null, status is 200, status |
| 17 // message is `OK`, header list is an empty header list, and body is null." | 44 // message is `OK`, header list is an empty header list, and body is null." |
| 18 return new FetchResponseData(DefaultType, 200, "OK"); | 45 return new FetchResponseData(DefaultType, 200, "OK"); |
| 19 } | 46 } |
| 20 | 47 |
| 21 FetchResponseData* FetchResponseData::createNetworkErrorResponse() | 48 FetchResponseData* FetchResponseData::createNetworkErrorResponse() |
| 22 { | 49 { |
| 23 // "A network error is a response whose status is always 0, status message | 50 // "A network error is a response whose status is always 0, status message |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 // list is an empty list, and body is null." | 104 // list is an empty list, and body is null." |
| 78 FetchResponseData* response = new FetchResponseData(OpaqueType, 0, ""); | 105 FetchResponseData* response = new FetchResponseData(OpaqueType, 0, ""); |
| 79 response->m_internalResponse = this; | 106 response->m_internalResponse = this; |
| 80 return response; | 107 return response; |
| 81 } | 108 } |
| 82 | 109 |
| 83 void FetchResponseData::populateWebServiceWorkerResponse(WebServiceWorkerRespons
e& response) | 110 void FetchResponseData::populateWebServiceWorkerResponse(WebServiceWorkerRespons
e& response) |
| 84 { | 111 { |
| 85 if (m_internalResponse) { | 112 if (m_internalResponse) { |
| 86 m_internalResponse->populateWebServiceWorkerResponse(response); | 113 m_internalResponse->populateWebServiceWorkerResponse(response); |
| 114 response.setResponseType(fetchTypeToWebType(m_type)); |
| 87 return; | 115 return; |
| 88 } | 116 } |
| 117 |
| 89 response.setURL(url()); | 118 response.setURL(url()); |
| 90 response.setStatus(status()); | 119 response.setStatus(status()); |
| 91 response.setStatusText(statusMessage()); | 120 response.setStatusText(statusMessage()); |
| 121 response.setResponseType(fetchTypeToWebType(m_type)); |
| 92 for (size_t i = 0; i < headerList()->size(); ++i) { | 122 for (size_t i = 0; i < headerList()->size(); ++i) { |
| 93 const FetchHeaderList::Header* header = headerList()->list()[i].get(); | 123 const FetchHeaderList::Header* header = headerList()->list()[i].get(); |
| 94 response.appendHeader(header->first, header->second); | 124 response.appendHeader(header->first, header->second); |
| 95 } | 125 } |
| 96 response.setBlobDataHandle(blobDataHandle()); | 126 response.setBlobDataHandle(blobDataHandle()); |
| 97 } | 127 } |
| 98 | 128 |
| 99 FetchResponseData::FetchResponseData(Type type, unsigned short status, AtomicStr
ing statusMessage) | 129 FetchResponseData::FetchResponseData(Type type, unsigned short status, AtomicStr
ing statusMessage) |
| 100 : m_type(type) | 130 : m_type(type) |
| 101 , m_status(status) | 131 , m_status(status) |
| 102 , m_statusMessage(statusMessage) | 132 , m_statusMessage(statusMessage) |
| 103 , m_headerList(FetchHeaderList::create()) | 133 , m_headerList(FetchHeaderList::create()) |
| 104 { | 134 { |
| 105 } | 135 } |
| 106 | 136 |
| 107 void FetchResponseData::trace(Visitor* visitor) | 137 void FetchResponseData::trace(Visitor* visitor) |
| 108 { | 138 { |
| 109 visitor->trace(m_headerList); | 139 visitor->trace(m_headerList); |
| 110 visitor->trace(m_internalResponse); | 140 visitor->trace(m_internalResponse); |
| 111 } | 141 } |
| 112 | 142 |
| 113 } // namespace blink | 143 } // namespace blink |
| OLD | NEW |