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

Side by Side Diff: third_party/WebKit/Source/modules/fetch/ResponseTest.cpp

Issue 2516353002: Introduce url_list to the Response scheme of CacheStorage. (Closed)
Patch Set: Created 4 years 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 "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"
11 #include "core/frame/Frame.h" 11 #include "core/frame/Frame.h"
12 #include "core/testing/DummyPageHolder.h" 12 #include "core/testing/DummyPageHolder.h"
13 #include "modules/fetch/BodyStreamBuffer.h" 13 #include "modules/fetch/BodyStreamBuffer.h"
14 #include "modules/fetch/BytesConsumer.h" 14 #include "modules/fetch/BytesConsumer.h"
15 #include "modules/fetch/BytesConsumerTestUtil.h" 15 #include "modules/fetch/BytesConsumerTestUtil.h"
16 #include "modules/fetch/DataConsumerHandleTestUtil.h" 16 #include "modules/fetch/DataConsumerHandleTestUtil.h"
17 #include "modules/fetch/FetchResponseData.h" 17 #include "modules/fetch/FetchResponseData.h"
18 #include "platform/blob/BlobData.h" 18 #include "platform/blob/BlobData.h"
19 #include "platform/testing/UnitTestHelpers.h" 19 #include "platform/testing/UnitTestHelpers.h"
20 #include "public/platform/modules/serviceworker/WebServiceWorkerResponse.h" 20 #include "public/platform/modules/serviceworker/WebServiceWorkerResponse.h"
21 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
22 #include "wtf/PtrUtil.h" 22 #include "wtf/PtrUtil.h"
falken 2016/11/30 14:57:38 #include "wtf/Vector.h"?
horo 2016/12/01 07:42:14 Done.
23 #include <memory> 23 #include <memory>
24 24
25 namespace blink { 25 namespace blink {
26 namespace { 26 namespace {
27 27
28 std::unique_ptr<WebServiceWorkerResponse> createTestWebServiceWorkerResponse() { 28 std::unique_ptr<WebServiceWorkerResponse> createTestWebServiceWorkerResponse() {
29 const KURL url(ParsedURLString, "http://www.webresponse.com/"); 29 const KURL url(ParsedURLString, "http://www.webresponse.com/");
30 const unsigned short status = 200; 30 const unsigned short status = 200;
31 const String statusText = "the best status text"; 31 const String statusText = "the best status text";
32 struct { 32 struct {
33 const char* key; 33 const char* key;
34 const char* value; 34 const char* value;
35 } headers[] = {{"cache-control", "no-cache"}, 35 } headers[] = {{"cache-control", "no-cache"},
36 {"set-cookie", "foop"}, 36 {"set-cookie", "foop"},
37 {"foo", "bar"}, 37 {"foo", "bar"},
38 {0, 0}}; 38 {0, 0}};
39 39 std::vector<WebURL> urlList;
40 urlList.push_back(url);
40 std::unique_ptr<WebServiceWorkerResponse> webResponse = 41 std::unique_ptr<WebServiceWorkerResponse> webResponse =
41 makeUnique<WebServiceWorkerResponse>(); 42 makeUnique<WebServiceWorkerResponse>();
42 webResponse->setURL(url); 43 webResponse->setURLList(urlList);
43 webResponse->setStatus(status); 44 webResponse->setStatus(status);
44 webResponse->setStatusText(statusText); 45 webResponse->setStatusText(statusText);
45 webResponse->setResponseType(WebServiceWorkerResponseTypeDefault); 46 webResponse->setResponseType(WebServiceWorkerResponseTypeDefault);
46 for (int i = 0; headers[i].key; ++i) 47 for (int i = 0; headers[i].key; ++i)
47 webResponse->setHeader(WebString::fromUTF8(headers[i].key), 48 webResponse->setHeader(WebString::fromUTF8(headers[i].key),
48 WebString::fromUTF8(headers[i].value)); 49 WebString::fromUTF8(headers[i].value));
49 return webResponse; 50 return webResponse;
50 } 51 }
51 52
52 TEST(ServiceWorkerResponseTest, FromFetchResponseData) { 53 TEST(ServiceWorkerResponseTest, FromFetchResponseData) {
53 std::unique_ptr<DummyPageHolder> page = 54 std::unique_ptr<DummyPageHolder> page =
54 DummyPageHolder::create(IntSize(1, 1)); 55 DummyPageHolder::create(IntSize(1, 1));
55 const KURL url(ParsedURLString, "http://www.response.com"); 56 const KURL url(ParsedURLString, "http://www.response.com");
56 57
57 FetchResponseData* fetchResponseData = FetchResponseData::create(); 58 FetchResponseData* fetchResponseData = FetchResponseData::create();
58 fetchResponseData->setURL(url); 59 Vector<KURL> urlList;
59 60 urlList.append(url);
61 fetchResponseData->setURLList(urlList);
60 Response* response = Response::create(&page->document(), fetchResponseData); 62 Response* response = Response::create(&page->document(), fetchResponseData);
61 ASSERT(response); 63 ASSERT(response);
62 EXPECT_EQ(url, response->url()); 64 EXPECT_EQ(url, response->url());
63 } 65 }
64 66
65 TEST(ServiceWorkerResponseTest, FromWebServiceWorkerResponse) { 67 TEST(ServiceWorkerResponseTest, FromWebServiceWorkerResponse) {
66 V8TestingScope scope; 68 V8TestingScope scope;
67 std::unique_ptr<WebServiceWorkerResponse> webResponse = 69 std::unique_ptr<WebServiceWorkerResponse> webResponse =
68 createTestWebServiceWorkerResponse(); 70 createTestWebServiceWorkerResponse();
69 Response* response = Response::create(scope.getScriptState(), *webResponse); 71 Response* response = Response::create(scope.getScriptState(), *webResponse);
70 ASSERT(response); 72 ASSERT(response);
falken 2016/11/30 14:57:38 should we do ASSERT_EQ(1, webResponse->urlList()->
horo 2016/12/01 07:42:14 Done.
71 EXPECT_EQ(webResponse->url(), response->url()); 73 EXPECT_EQ(webResponse->urlList()[0], response->url());
72 EXPECT_EQ(webResponse->status(), response->status()); 74 EXPECT_EQ(webResponse->status(), response->status());
73 EXPECT_STREQ(webResponse->statusText().utf8().c_str(), 75 EXPECT_STREQ(webResponse->statusText().utf8().c_str(),
74 response->statusText().utf8().data()); 76 response->statusText().utf8().data());
75 77
76 Headers* responseHeaders = response->headers(); 78 Headers* responseHeaders = response->headers();
77 79
78 WebVector<WebString> keys = webResponse->getHeaderKeys(); 80 WebVector<WebString> keys = webResponse->getHeaderKeys();
79 EXPECT_EQ(keys.size(), responseHeaders->headerList()->size()); 81 EXPECT_EQ(keys.size(), responseHeaders->headerList()->size());
80 for (size_t i = 0, max = keys.size(); i < max; ++i) { 82 for (size_t i = 0, max = keys.size(); i < max; ++i) {
81 WebString key = keys[i]; 83 WebString key = keys[i];
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 src->add(Command(Command::Data, "world")); 218 src->add(Command(Command::Data, "world"));
217 src->add(Command(Command::Done)); 219 src->add(Command(Command::Done));
218 return new BodyStreamBuffer(scriptState, src); 220 return new BodyStreamBuffer(scriptState, src);
219 } 221 }
220 222
221 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneDefault) { 223 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneDefault) {
222 V8TestingScope scope; 224 V8TestingScope scope;
223 BodyStreamBuffer* buffer = createHelloWorldBuffer(scope.getScriptState()); 225 BodyStreamBuffer* buffer = createHelloWorldBuffer(scope.getScriptState());
224 FetchResponseData* fetchResponseData = 226 FetchResponseData* fetchResponseData =
225 FetchResponseData::createWithBuffer(buffer); 227 FetchResponseData::createWithBuffer(buffer);
226 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); 228 Vector<KURL> urlList;
229 urlList.append(KURL(ParsedURLString, "http://www.response.com"));
230 fetchResponseData->setURLList(urlList);
227 Response* response = 231 Response* response =
228 Response::create(scope.getExecutionContext(), fetchResponseData); 232 Response::create(scope.getExecutionContext(), fetchResponseData);
229 EXPECT_EQ(response->internalBodyBuffer(), buffer); 233 EXPECT_EQ(response->internalBodyBuffer(), buffer);
230 checkResponseStream(scope.getScriptState(), response, true); 234 checkResponseStream(scope.getScriptState(), response, true);
231 } 235 }
232 236
233 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneBasic) { 237 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneBasic) {
234 V8TestingScope scope; 238 V8TestingScope scope;
235 BodyStreamBuffer* buffer = createHelloWorldBuffer(scope.getScriptState()); 239 BodyStreamBuffer* buffer = createHelloWorldBuffer(scope.getScriptState());
236 FetchResponseData* fetchResponseData = 240 FetchResponseData* fetchResponseData =
237 FetchResponseData::createWithBuffer(buffer); 241 FetchResponseData::createWithBuffer(buffer);
238 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); 242 Vector<KURL> urlList;
243 urlList.append(KURL(ParsedURLString, "http://www.response.com"));
244 fetchResponseData->setURLList(urlList);
239 fetchResponseData = fetchResponseData->createBasicFilteredResponse(); 245 fetchResponseData = fetchResponseData->createBasicFilteredResponse();
240 Response* response = 246 Response* response =
241 Response::create(scope.getExecutionContext(), fetchResponseData); 247 Response::create(scope.getExecutionContext(), fetchResponseData);
242 EXPECT_EQ(response->internalBodyBuffer(), buffer); 248 EXPECT_EQ(response->internalBodyBuffer(), buffer);
243 checkResponseStream(scope.getScriptState(), response, true); 249 checkResponseStream(scope.getScriptState(), response, true);
244 } 250 }
245 251
246 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneCORS) { 252 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneCORS) {
247 V8TestingScope scope; 253 V8TestingScope scope;
248 BodyStreamBuffer* buffer = createHelloWorldBuffer(scope.getScriptState()); 254 BodyStreamBuffer* buffer = createHelloWorldBuffer(scope.getScriptState());
249 FetchResponseData* fetchResponseData = 255 FetchResponseData* fetchResponseData =
250 FetchResponseData::createWithBuffer(buffer); 256 FetchResponseData::createWithBuffer(buffer);
251 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); 257 Vector<KURL> urlList;
258 urlList.append(KURL(ParsedURLString, "http://www.response.com"));
259 fetchResponseData->setURLList(urlList);
252 fetchResponseData = fetchResponseData->createCORSFilteredResponse(); 260 fetchResponseData = fetchResponseData->createCORSFilteredResponse();
253 Response* response = 261 Response* response =
254 Response::create(scope.getExecutionContext(), fetchResponseData); 262 Response::create(scope.getExecutionContext(), fetchResponseData);
255 EXPECT_EQ(response->internalBodyBuffer(), buffer); 263 EXPECT_EQ(response->internalBodyBuffer(), buffer);
256 checkResponseStream(scope.getScriptState(), response, true); 264 checkResponseStream(scope.getScriptState(), response, true);
257 } 265 }
258 266
259 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneOpaque) { 267 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneOpaque) {
260 V8TestingScope scope; 268 V8TestingScope scope;
261 BodyStreamBuffer* buffer = createHelloWorldBuffer(scope.getScriptState()); 269 BodyStreamBuffer* buffer = createHelloWorldBuffer(scope.getScriptState());
262 FetchResponseData* fetchResponseData = 270 FetchResponseData* fetchResponseData =
263 FetchResponseData::createWithBuffer(buffer); 271 FetchResponseData::createWithBuffer(buffer);
264 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); 272 Vector<KURL> urlList;
273 urlList.append(KURL(ParsedURLString, "http://www.response.com"));
274 fetchResponseData->setURLList(urlList);
265 fetchResponseData = fetchResponseData->createOpaqueFilteredResponse(); 275 fetchResponseData = fetchResponseData->createOpaqueFilteredResponse();
266 Response* response = 276 Response* response =
267 Response::create(scope.getExecutionContext(), fetchResponseData); 277 Response::create(scope.getExecutionContext(), fetchResponseData);
268 EXPECT_EQ(response->internalBodyBuffer(), buffer); 278 EXPECT_EQ(response->internalBodyBuffer(), buffer);
269 checkResponseStream(scope.getScriptState(), response, false); 279 checkResponseStream(scope.getScriptState(), response, false);
270 } 280 }
271 281
272 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneError) { 282 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneError) {
273 V8TestingScope scope; 283 V8TestingScope scope;
274 BodyStreamBuffer* buffer = new BodyStreamBuffer( 284 BodyStreamBuffer* buffer = new BodyStreamBuffer(
275 scope.getScriptState(), 285 scope.getScriptState(),
276 BytesConsumer::createErrored(BytesConsumer::Error())); 286 BytesConsumer::createErrored(BytesConsumer::Error()));
277 FetchResponseData* fetchResponseData = 287 FetchResponseData* fetchResponseData =
278 FetchResponseData::createWithBuffer(buffer); 288 FetchResponseData::createWithBuffer(buffer);
279 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); 289 Vector<KURL> urlList;
290 urlList.append(KURL(ParsedURLString, "http://www.response.com"));
291 fetchResponseData->setURLList(urlList);
280 Response* response = 292 Response* response =
281 Response::create(scope.getExecutionContext(), fetchResponseData); 293 Response::create(scope.getExecutionContext(), fetchResponseData);
282 TrackExceptionState exceptionState; 294 TrackExceptionState exceptionState;
283 Response* clonedResponse = 295 Response* clonedResponse =
284 response->clone(scope.getScriptState(), exceptionState); 296 response->clone(scope.getScriptState(), exceptionState);
285 EXPECT_FALSE(exceptionState.hadException()); 297 EXPECT_FALSE(exceptionState.hadException());
286 298
287 BytesConsumerTestUtil::MockFetchDataLoaderClient* client1 = 299 BytesConsumerTestUtil::MockFetchDataLoaderClient* client1 =
288 new BytesConsumerTestUtil::MockFetchDataLoaderClient(); 300 new BytesConsumerTestUtil::MockFetchDataLoaderClient();
289 BytesConsumerTestUtil::MockFetchDataLoaderClient* client2 = 301 BytesConsumerTestUtil::MockFetchDataLoaderClient* client2 =
290 new BytesConsumerTestUtil::MockFetchDataLoaderClient(); 302 new BytesConsumerTestUtil::MockFetchDataLoaderClient();
291 EXPECT_CALL(*client1, didFetchDataLoadFailed()); 303 EXPECT_CALL(*client1, didFetchDataLoadFailed());
292 EXPECT_CALL(*client2, didFetchDataLoadFailed()); 304 EXPECT_CALL(*client2, didFetchDataLoadFailed());
293 305
294 response->internalBodyBuffer()->startLoading( 306 response->internalBodyBuffer()->startLoading(
295 FetchDataLoader::createLoaderAsString(), client1); 307 FetchDataLoader::createLoaderAsString(), client1);
296 clonedResponse->internalBodyBuffer()->startLoading( 308 clonedResponse->internalBodyBuffer()->startLoading(
297 FetchDataLoader::createLoaderAsString(), client2); 309 FetchDataLoader::createLoaderAsString(), client2);
298 blink::testing::runPendingTasks(); 310 blink::testing::runPendingTasks();
299 } 311 }
300 312
301 } // namespace 313 } // namespace
302 } // namespace blink 314 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698