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

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

Issue 478693005: Oilpan: Ship Oilpan for serviceworkers/ (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
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 "Response.h" 6 #include "Response.h"
7 7
8 #include "bindings/core/v8/Dictionary.h" 8 #include "bindings/core/v8/Dictionary.h"
9 #include "core/fileapi/Blob.h" 9 #include "core/fileapi/Blob.h"
10 #include "modules/serviceworkers/FetchBodyStream.h" 10 #include "modules/serviceworkers/FetchBodyStream.h"
11 #include "modules/serviceworkers/ResponseInit.h" 11 #include "modules/serviceworkers/ResponseInit.h"
12 12
13 namespace blink { 13 namespace blink {
14 14
15 DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(Response); 15 Response* Response::create(Blob* body, const Dictionary& responseInit, Exception State& exceptionState)
16
17 PassRefPtrWillBeRawPtr<Response> Response::create(Blob* body, const Dictionary& responseInit, ExceptionState& exceptionState)
18 { 16 {
19 return create(body, ResponseInit(responseInit), exceptionState); 17 return create(body, ResponseInit(responseInit), exceptionState);
20 } 18 }
21 19
22 PassRefPtrWillBeRawPtr<Response> Response::create(const String& body, const Dict ionary& responseInit, ExceptionState& exceptionState) 20 Response* Response::create(const String& body, const Dictionary& responseInit, E xceptionState& exceptionState)
23 { 21 {
24 OwnPtr<BlobData> blobData = BlobData::create(); 22 OwnPtr<BlobData> blobData = BlobData::create();
25 blobData->appendText(body, false); 23 blobData->appendText(body, false);
26 // "Set |Content-Type| to `text/plain;charset=UTF-8`." 24 // "Set |Content-Type| to `text/plain;charset=UTF-8`."
27 blobData->setContentType("text/plain;charset=UTF-8"); 25 blobData->setContentType("text/plain;charset=UTF-8");
28 const long long length = blobData->length(); 26 const long long length = blobData->length();
29 RefPtrWillBeRawPtr<Blob> blob = Blob::create(BlobDataHandle::create(blobData .release(), length)); 27 RefPtrWillBeRawPtr<Blob> blob = Blob::create(BlobDataHandle::create(blobData .release(), length));
30 return create(blob.get(), ResponseInit(responseInit), exceptionState); 28 return create(blob.get(), ResponseInit(responseInit), exceptionState);
31 } 29 }
32 30
33 PassRefPtrWillBeRawPtr<Response> Response::create(Blob* body, const ResponseInit & responseInit, ExceptionState& exceptionState) 31 Response* Response::create(Blob* body, const ResponseInit& responseInit, Excepti onState& exceptionState)
34 { 32 {
35 // "1. If |init|'s status member is not in the range 200 to 599, throw a 33 // "1. If |init|'s status member is not in the range 200 to 599, throw a
36 // RangeError." 34 // RangeError."
37 if (responseInit.status < 200 || 599 < responseInit.status) { 35 if (responseInit.status < 200 || 599 < responseInit.status) {
38 exceptionState.throwRangeError("Invalid status"); 36 exceptionState.throwRangeError("Invalid status");
39 return nullptr; 37 return 0;
40 } 38 }
41 39
42 // FIXME: "2. If |init|'s statusText member does not match the Reason-Phrase 40 // FIXME: "2. If |init|'s statusText member does not match the Reason-Phrase
43 // token production, throw a TypeError." 41 // token production, throw a TypeError."
44 42
45 // "3. Let |r| be a new Response object, associated with a new response, 43 // "3. Let |r| be a new Response object, associated with a new response,
46 // Headers object, and FetchBodyStream object." 44 // Headers object, and FetchBodyStream object."
47 RefPtrWillBeRawPtr<Response> r = adoptRefWillBeNoop(new Response()); 45 Response* r = new Response();
48 46
49 // "4. Set |r|'s response's status to |init|'s status member." 47 // "4. Set |r|'s response's status to |init|'s status member."
50 r->m_response->setStatus(responseInit.status); 48 r->m_response->setStatus(responseInit.status);
51 49
52 // "5. Set |r|'s response's status message to |init|'s statusText member." 50 // "5. Set |r|'s response's status message to |init|'s statusText member."
53 r->m_response->setStatusMessage(AtomicString(responseInit.statusText)); 51 r->m_response->setStatusMessage(AtomicString(responseInit.statusText));
54 52
55 // "6. If |init|'s headers member is present, run these substeps:" 53 // "6. If |init|'s headers member is present, run these substeps:"
56 if (responseInit.headers) { 54 if (responseInit.headers) {
57 // "1. Empty |r|'s response's header list." 55 // "1. Empty |r|'s response's header list."
58 r->m_response->headerList()->clearList(); 56 r->m_response->headerList()->clearList();
59 // "2. Fill |r|'s Headers object with |init|'s headers member. Rethrow 57 // "2. Fill |r|'s Headers object with |init|'s headers member. Rethrow
60 // any exceptions." 58 // any exceptions."
61 r->m_headers->fillWith(responseInit.headers.get(), exceptionState); 59 r->m_headers->fillWith(responseInit.headers.get(), exceptionState);
62 if (exceptionState.hadException()) 60 if (exceptionState.hadException())
63 return nullptr; 61 return 0;
64 } else if (!responseInit.headersDictionary.isUndefinedOrNull()) { 62 } else if (!responseInit.headersDictionary.isUndefinedOrNull()) {
65 // "1. Empty |r|'s response's header list." 63 // "1. Empty |r|'s response's header list."
66 r->m_response->headerList()->clearList(); 64 r->m_response->headerList()->clearList();
67 // "2. Fill |r|'s Headers object with |init|'s headers member. Rethrow 65 // "2. Fill |r|'s Headers object with |init|'s headers member. Rethrow
68 // any exceptions." 66 // any exceptions."
69 r->m_headers->fillWith(responseInit.headersDictionary, exceptionState); 67 r->m_headers->fillWith(responseInit.headersDictionary, exceptionState);
70 if (exceptionState.hadException()) 68 if (exceptionState.hadException())
71 return nullptr; 69 return 0;
72 } 70 }
73 // "7. If body is given, run these substeps:" 71 // "7. If body is given, run these substeps:"
74 if (body) { 72 if (body) {
75 // "1. Let |stream| and |Content-Type| be the result of extracting body. " 73 // "1. Let |stream| and |Content-Type| be the result of extracting body. "
76 // "2. Set |r|'s response's body to |stream|." 74 // "2. Set |r|'s response's body to |stream|."
77 // "3. If |r|'s response's header list contains no header named 75 // "3. If |r|'s response's header list contains no header named
78 // `Content-Type`, append `Content-Type`/|Content-Type| to |r|'s 76 // `Content-Type`, append `Content-Type`/|Content-Type| to |r|'s
79 // response's header list." 77 // response's header list."
80 r->m_response->setBlobDataHandle(body->blobDataHandle()); 78 r->m_response->setBlobDataHandle(body->blobDataHandle());
81 if (!r->m_response->headerList()->has("Content-Type")) { 79 if (!r->m_response->headerList()->has("Content-Type")) {
82 if (body->type().isNull()) 80 if (body->type().isNull())
83 r->m_response->headerList()->append("Content-Type", ""); 81 r->m_response->headerList()->append("Content-Type", "");
84 else 82 else
85 r->m_response->headerList()->append("Content-Type", body->type() ); 83 r->m_response->headerList()->append("Content-Type", body->type() );
86 } 84 }
87 } 85 }
88 86
89 // FIXME: "8. Set |r|'s FetchBodyStream object's MIME type to the result of 87 // FIXME: "8. Set |r|'s FetchBodyStream object's MIME type to the result of
90 // extracting a MIME type from |r|'s response's header list." 88 // extracting a MIME type from |r|'s response's header list."
91 89
92 // "9. Return |r|." 90 // "9. Return |r|."
93 return r.release(); 91 return r;
94 } 92 }
95 93
96 PassRefPtrWillBeRawPtr<Response> Response::create(PassRefPtrWillBeRawPtr<FetchRe sponseData> response) 94 Response* Response::create(FetchResponseData* response)
97 { 95 {
98 return adoptRefWillBeNoop(new Response(response)); 96 return new Response(response);
99 } 97 }
100 98
101 String Response::type() const 99 String Response::type() const
102 { 100 {
103 // "The type attribute's getter must return response's type." 101 // "The type attribute's getter must return response's type."
104 switch (m_response->type()) { 102 switch (m_response->type()) {
105 case FetchResponseData::BasicType: 103 case FetchResponseData::BasicType:
106 return "basic"; 104 return "basic";
107 case FetchResponseData::CORSType: 105 case FetchResponseData::CORSType:
108 return "cors"; 106 return "cors";
(...skipping 25 matching lines...) Expand all
134 // "The status attribute's getter must return response's status." 132 // "The status attribute's getter must return response's status."
135 return m_response->status(); 133 return m_response->status();
136 } 134 }
137 135
138 String Response::statusText() const 136 String Response::statusText() const
139 { 137 {
140 // "The statusText attribute's getter must return response's status message. " 138 // "The statusText attribute's getter must return response's status message. "
141 return m_response->statusMessage(); 139 return m_response->statusMessage();
142 } 140 }
143 141
144 PassRefPtrWillBeRawPtr<Headers> Response::headers() const 142 Headers* Response::headers() const
145 { 143 {
146 // "The headers attribute's getter must return the associated Headers object ." 144 // "The headers attribute's getter must return the associated Headers object ."
147 return m_headers; 145 return m_headers;
148 } 146 }
149 147
150 PassRefPtrWillBeRawPtr<FetchBodyStream> Response::body(ExecutionContext* context ) 148 FetchBodyStream* Response::body(ExecutionContext* context)
151 { 149 {
152 if (!m_response->blobDataHandle()) 150 if (!m_response->blobDataHandle())
153 return nullptr; 151 return 0;
154 if (!m_fetchBodyStream) 152 if (!m_fetchBodyStream)
155 m_fetchBodyStream = FetchBodyStream::create(context, m_response->blobDat aHandle()); 153 m_fetchBodyStream = FetchBodyStream::create(context, m_response->blobDat aHandle());
156 return m_fetchBodyStream; 154 return m_fetchBodyStream;
157 } 155 }
158 156
159 void Response::populateWebServiceWorkerResponse(WebServiceWorkerResponse& respon se) 157 void Response::populateWebServiceWorkerResponse(WebServiceWorkerResponse& respon se)
160 { 158 {
161 m_response->populateWebServiceWorkerResponse(response); 159 m_response->populateWebServiceWorkerResponse(response);
162 } 160 }
163 161
164 Response::Response() 162 Response::Response()
165 : m_response(FetchResponseData::create()) 163 : m_response(FetchResponseData::create())
166 , m_headers(Headers::create(m_response->headerList())) 164 , m_headers(Headers::create(m_response->headerList()))
167 { 165 {
168 m_headers->setGuard(Headers::ResponseGuard); 166 m_headers->setGuard(Headers::ResponseGuard);
169 ScriptWrappable::init(this); 167 ScriptWrappable::init(this);
170 } 168 }
171 169
172 Response::Response(PassRefPtrWillBeRawPtr<FetchResponseData> response) 170 Response::Response(FetchResponseData* response)
173 : m_response(response) 171 : m_response(response)
174 , m_headers(Headers::create(m_response->headerList())) 172 , m_headers(Headers::create(m_response->headerList()))
175 { 173 {
176 m_headers->setGuard(Headers::ResponseGuard); 174 m_headers->setGuard(Headers::ResponseGuard);
177 ScriptWrappable::init(this); 175 ScriptWrappable::init(this);
178 } 176 }
179 177
180 void Response::trace(Visitor* visitor) 178 void Response::trace(Visitor* visitor)
181 { 179 {
182 visitor->trace(m_response); 180 visitor->trace(m_response);
183 visitor->trace(m_headers); 181 visitor->trace(m_headers);
184 visitor->trace(m_fetchBodyStream); 182 visitor->trace(m_fetchBodyStream);
185 } 183 }
186 184
187 } // namespace blink 185 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698