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 "modules/fetch/Response.h" | 5 #include "modules/fetch/Response.h" |
6 | 6 |
7 #include "bindings/core/v8/ExceptionState.h" | 7 #include "bindings/core/v8/ExceptionState.h" |
8 #include "bindings/core/v8/ScriptState.h" | 8 #include "bindings/core/v8/ScriptState.h" |
9 #include "bindings/core/v8/V8BindingForTesting.h" | 9 #include "bindings/core/v8/V8BindingForTesting.h" |
10 #include "core/dom/Document.h" | 10 #include "core/dom/Document.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 const unsigned short status = 200; | 31 const unsigned short status = 200; |
32 const String statusText = "the best status text"; | 32 const String statusText = "the best status text"; |
33 struct { | 33 struct { |
34 const char* key; | 34 const char* key; |
35 const char* value; | 35 const char* value; |
36 } headers[] = {{"cache-control", "no-cache"}, | 36 } headers[] = {{"cache-control", "no-cache"}, |
37 {"set-cookie", "foop"}, | 37 {"set-cookie", "foop"}, |
38 {"foo", "bar"}, | 38 {"foo", "bar"}, |
39 {0, 0}}; | 39 {0, 0}}; |
40 Vector<WebURL> urlList; | 40 Vector<WebURL> urlList; |
41 urlList.append(url); | 41 urlList.push_back(url); |
42 std::unique_ptr<WebServiceWorkerResponse> webResponse = | 42 std::unique_ptr<WebServiceWorkerResponse> webResponse = |
43 WTF::makeUnique<WebServiceWorkerResponse>(); | 43 WTF::makeUnique<WebServiceWorkerResponse>(); |
44 webResponse->setURLList(urlList); | 44 webResponse->setURLList(urlList); |
45 webResponse->setStatus(status); | 45 webResponse->setStatus(status); |
46 webResponse->setStatusText(statusText); | 46 webResponse->setStatusText(statusText); |
47 webResponse->setResponseType(WebServiceWorkerResponseTypeDefault); | 47 webResponse->setResponseType(WebServiceWorkerResponseTypeDefault); |
48 for (int i = 0; headers[i].key; ++i) | 48 for (int i = 0; headers[i].key; ++i) |
49 webResponse->setHeader(WebString::fromUTF8(headers[i].key), | 49 webResponse->setHeader(WebString::fromUTF8(headers[i].key), |
50 WebString::fromUTF8(headers[i].value)); | 50 WebString::fromUTF8(headers[i].value)); |
51 return webResponse; | 51 return webResponse; |
52 } | 52 } |
53 | 53 |
54 TEST(ServiceWorkerResponseTest, FromFetchResponseData) { | 54 TEST(ServiceWorkerResponseTest, FromFetchResponseData) { |
55 std::unique_ptr<DummyPageHolder> page = | 55 std::unique_ptr<DummyPageHolder> page = |
56 DummyPageHolder::create(IntSize(1, 1)); | 56 DummyPageHolder::create(IntSize(1, 1)); |
57 const KURL url(ParsedURLString, "http://www.response.com"); | 57 const KURL url(ParsedURLString, "http://www.response.com"); |
58 | 58 |
59 FetchResponseData* fetchResponseData = FetchResponseData::create(); | 59 FetchResponseData* fetchResponseData = FetchResponseData::create(); |
60 Vector<KURL> urlList; | 60 Vector<KURL> urlList; |
61 urlList.append(url); | 61 urlList.push_back(url); |
62 fetchResponseData->setURLList(urlList); | 62 fetchResponseData->setURLList(urlList); |
63 Response* response = Response::create(&page->document(), fetchResponseData); | 63 Response* response = Response::create(&page->document(), fetchResponseData); |
64 ASSERT(response); | 64 ASSERT(response); |
65 EXPECT_EQ(url, response->url()); | 65 EXPECT_EQ(url, response->url()); |
66 } | 66 } |
67 | 67 |
68 TEST(ServiceWorkerResponseTest, FromWebServiceWorkerResponse) { | 68 TEST(ServiceWorkerResponseTest, FromWebServiceWorkerResponse) { |
69 V8TestingScope scope; | 69 V8TestingScope scope; |
70 std::unique_ptr<WebServiceWorkerResponse> webResponse = | 70 std::unique_ptr<WebServiceWorkerResponse> webResponse = |
71 createTestWebServiceWorkerResponse(); | 71 createTestWebServiceWorkerResponse(); |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 src->add(Command(Command::Done)); | 221 src->add(Command(Command::Done)); |
222 return new BodyStreamBuffer(scriptState, src); | 222 return new BodyStreamBuffer(scriptState, src); |
223 } | 223 } |
224 | 224 |
225 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneDefault) { | 225 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneDefault) { |
226 V8TestingScope scope; | 226 V8TestingScope scope; |
227 BodyStreamBuffer* buffer = createHelloWorldBuffer(scope.getScriptState()); | 227 BodyStreamBuffer* buffer = createHelloWorldBuffer(scope.getScriptState()); |
228 FetchResponseData* fetchResponseData = | 228 FetchResponseData* fetchResponseData = |
229 FetchResponseData::createWithBuffer(buffer); | 229 FetchResponseData::createWithBuffer(buffer); |
230 Vector<KURL> urlList; | 230 Vector<KURL> urlList; |
231 urlList.append(KURL(ParsedURLString, "http://www.response.com")); | 231 urlList.push_back(KURL(ParsedURLString, "http://www.response.com")); |
232 fetchResponseData->setURLList(urlList); | 232 fetchResponseData->setURLList(urlList); |
233 Response* response = | 233 Response* response = |
234 Response::create(scope.getExecutionContext(), fetchResponseData); | 234 Response::create(scope.getExecutionContext(), fetchResponseData); |
235 EXPECT_EQ(response->internalBodyBuffer(), buffer); | 235 EXPECT_EQ(response->internalBodyBuffer(), buffer); |
236 checkResponseStream(scope.getScriptState(), response, true); | 236 checkResponseStream(scope.getScriptState(), response, true); |
237 } | 237 } |
238 | 238 |
239 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneBasic) { | 239 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneBasic) { |
240 V8TestingScope scope; | 240 V8TestingScope scope; |
241 BodyStreamBuffer* buffer = createHelloWorldBuffer(scope.getScriptState()); | 241 BodyStreamBuffer* buffer = createHelloWorldBuffer(scope.getScriptState()); |
242 FetchResponseData* fetchResponseData = | 242 FetchResponseData* fetchResponseData = |
243 FetchResponseData::createWithBuffer(buffer); | 243 FetchResponseData::createWithBuffer(buffer); |
244 Vector<KURL> urlList; | 244 Vector<KURL> urlList; |
245 urlList.append(KURL(ParsedURLString, "http://www.response.com")); | 245 urlList.push_back(KURL(ParsedURLString, "http://www.response.com")); |
246 fetchResponseData->setURLList(urlList); | 246 fetchResponseData->setURLList(urlList); |
247 fetchResponseData = fetchResponseData->createBasicFilteredResponse(); | 247 fetchResponseData = fetchResponseData->createBasicFilteredResponse(); |
248 Response* response = | 248 Response* response = |
249 Response::create(scope.getExecutionContext(), fetchResponseData); | 249 Response::create(scope.getExecutionContext(), fetchResponseData); |
250 EXPECT_EQ(response->internalBodyBuffer(), buffer); | 250 EXPECT_EQ(response->internalBodyBuffer(), buffer); |
251 checkResponseStream(scope.getScriptState(), response, true); | 251 checkResponseStream(scope.getScriptState(), response, true); |
252 } | 252 } |
253 | 253 |
254 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneCORS) { | 254 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneCORS) { |
255 V8TestingScope scope; | 255 V8TestingScope scope; |
256 BodyStreamBuffer* buffer = createHelloWorldBuffer(scope.getScriptState()); | 256 BodyStreamBuffer* buffer = createHelloWorldBuffer(scope.getScriptState()); |
257 FetchResponseData* fetchResponseData = | 257 FetchResponseData* fetchResponseData = |
258 FetchResponseData::createWithBuffer(buffer); | 258 FetchResponseData::createWithBuffer(buffer); |
259 Vector<KURL> urlList; | 259 Vector<KURL> urlList; |
260 urlList.append(KURL(ParsedURLString, "http://www.response.com")); | 260 urlList.push_back(KURL(ParsedURLString, "http://www.response.com")); |
261 fetchResponseData->setURLList(urlList); | 261 fetchResponseData->setURLList(urlList); |
262 fetchResponseData = fetchResponseData->createCORSFilteredResponse(); | 262 fetchResponseData = fetchResponseData->createCORSFilteredResponse(); |
263 Response* response = | 263 Response* response = |
264 Response::create(scope.getExecutionContext(), fetchResponseData); | 264 Response::create(scope.getExecutionContext(), fetchResponseData); |
265 EXPECT_EQ(response->internalBodyBuffer(), buffer); | 265 EXPECT_EQ(response->internalBodyBuffer(), buffer); |
266 checkResponseStream(scope.getScriptState(), response, true); | 266 checkResponseStream(scope.getScriptState(), response, true); |
267 } | 267 } |
268 | 268 |
269 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneOpaque) { | 269 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneOpaque) { |
270 V8TestingScope scope; | 270 V8TestingScope scope; |
271 BodyStreamBuffer* buffer = createHelloWorldBuffer(scope.getScriptState()); | 271 BodyStreamBuffer* buffer = createHelloWorldBuffer(scope.getScriptState()); |
272 FetchResponseData* fetchResponseData = | 272 FetchResponseData* fetchResponseData = |
273 FetchResponseData::createWithBuffer(buffer); | 273 FetchResponseData::createWithBuffer(buffer); |
274 Vector<KURL> urlList; | 274 Vector<KURL> urlList; |
275 urlList.append(KURL(ParsedURLString, "http://www.response.com")); | 275 urlList.push_back(KURL(ParsedURLString, "http://www.response.com")); |
276 fetchResponseData->setURLList(urlList); | 276 fetchResponseData->setURLList(urlList); |
277 fetchResponseData = fetchResponseData->createOpaqueFilteredResponse(); | 277 fetchResponseData = fetchResponseData->createOpaqueFilteredResponse(); |
278 Response* response = | 278 Response* response = |
279 Response::create(scope.getExecutionContext(), fetchResponseData); | 279 Response::create(scope.getExecutionContext(), fetchResponseData); |
280 EXPECT_EQ(response->internalBodyBuffer(), buffer); | 280 EXPECT_EQ(response->internalBodyBuffer(), buffer); |
281 checkResponseStream(scope.getScriptState(), response, false); | 281 checkResponseStream(scope.getScriptState(), response, false); |
282 } | 282 } |
283 | 283 |
284 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneError) { | 284 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneError) { |
285 V8TestingScope scope; | 285 V8TestingScope scope; |
286 BodyStreamBuffer* buffer = new BodyStreamBuffer( | 286 BodyStreamBuffer* buffer = new BodyStreamBuffer( |
287 scope.getScriptState(), | 287 scope.getScriptState(), |
288 BytesConsumer::createErrored(BytesConsumer::Error())); | 288 BytesConsumer::createErrored(BytesConsumer::Error())); |
289 FetchResponseData* fetchResponseData = | 289 FetchResponseData* fetchResponseData = |
290 FetchResponseData::createWithBuffer(buffer); | 290 FetchResponseData::createWithBuffer(buffer); |
291 Vector<KURL> urlList; | 291 Vector<KURL> urlList; |
292 urlList.append(KURL(ParsedURLString, "http://www.response.com")); | 292 urlList.push_back(KURL(ParsedURLString, "http://www.response.com")); |
293 fetchResponseData->setURLList(urlList); | 293 fetchResponseData->setURLList(urlList); |
294 Response* response = | 294 Response* response = |
295 Response::create(scope.getExecutionContext(), fetchResponseData); | 295 Response::create(scope.getExecutionContext(), fetchResponseData); |
296 DummyExceptionStateForTesting exceptionState; | 296 DummyExceptionStateForTesting exceptionState; |
297 Response* clonedResponse = | 297 Response* clonedResponse = |
298 response->clone(scope.getScriptState(), exceptionState); | 298 response->clone(scope.getScriptState(), exceptionState); |
299 EXPECT_FALSE(exceptionState.hadException()); | 299 EXPECT_FALSE(exceptionState.hadException()); |
300 | 300 |
301 BytesConsumerTestUtil::MockFetchDataLoaderClient* client1 = | 301 BytesConsumerTestUtil::MockFetchDataLoaderClient* client1 = |
302 new BytesConsumerTestUtil::MockFetchDataLoaderClient(); | 302 new BytesConsumerTestUtil::MockFetchDataLoaderClient(); |
303 BytesConsumerTestUtil::MockFetchDataLoaderClient* client2 = | 303 BytesConsumerTestUtil::MockFetchDataLoaderClient* client2 = |
304 new BytesConsumerTestUtil::MockFetchDataLoaderClient(); | 304 new BytesConsumerTestUtil::MockFetchDataLoaderClient(); |
305 EXPECT_CALL(*client1, didFetchDataLoadFailed()); | 305 EXPECT_CALL(*client1, didFetchDataLoadFailed()); |
306 EXPECT_CALL(*client2, didFetchDataLoadFailed()); | 306 EXPECT_CALL(*client2, didFetchDataLoadFailed()); |
307 | 307 |
308 response->internalBodyBuffer()->startLoading( | 308 response->internalBodyBuffer()->startLoading( |
309 FetchDataLoader::createLoaderAsString(), client1); | 309 FetchDataLoader::createLoaderAsString(), client1); |
310 clonedResponse->internalBodyBuffer()->startLoading( | 310 clonedResponse->internalBodyBuffer()->startLoading( |
311 FetchDataLoader::createLoaderAsString(), client2); | 311 FetchDataLoader::createLoaderAsString(), client2); |
312 blink::testing::runPendingTasks(); | 312 blink::testing::runPendingTasks(); |
313 } | 313 } |
314 | 314 |
315 } // namespace | 315 } // namespace |
316 } // namespace blink | 316 } // namespace blink |
OLD | NEW |