Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Side by Side Diff: Source/modules/serviceworkers/FetchResponseData.cpp

Issue 617003003: Make WebServiceWorkerResponse support ResponseType (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Put WebServiceWorkerResponseType enum in its own file (so browser can load it) Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
OLDNEW
« no previous file with comments | « Source/modules/serviceworkers/CacheTest.cpp ('k') | Source/modules/serviceworkers/FetchResponseDataTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698