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" |
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/BytesConsumerTestUtil.h" | 15 #include "modules/fetch/BytesConsumerTestUtil.h" |
15 #include "modules/fetch/DataConsumerHandleTestUtil.h" | 16 #include "modules/fetch/DataConsumerHandleTestUtil.h" |
16 #include "modules/fetch/DataConsumerHandleUtil.h" | 17 #include "modules/fetch/DataConsumerHandleUtil.h" |
17 #include "modules/fetch/FetchResponseData.h" | 18 #include "modules/fetch/FetchResponseData.h" |
18 #include "platform/blob/BlobData.h" | 19 #include "platform/blob/BlobData.h" |
19 #include "platform/testing/UnitTestHelpers.h" | 20 #include "platform/testing/UnitTestHelpers.h" |
20 #include "public/platform/modules/serviceworker/WebServiceWorkerResponse.h" | 21 #include "public/platform/modules/serviceworker/WebServiceWorkerResponse.h" |
21 #include "testing/gtest/include/gtest/gtest.h" | 22 #include "testing/gtest/include/gtest/gtest.h" |
22 #include "wtf/PtrUtil.h" | 23 #include "wtf/PtrUtil.h" |
23 #include <memory> | 24 #include <memory> |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
201 EXPECT_CALL(*client2, didFetchDataLoadedString(String("Hello, world"))); | 202 EXPECT_CALL(*client2, didFetchDataLoadedString(String("Hello, world"))); |
202 | 203 |
203 response->internalBodyBuffer()->startLoading( | 204 response->internalBodyBuffer()->startLoading( |
204 FetchDataLoader::createLoaderAsString(), client1); | 205 FetchDataLoader::createLoaderAsString(), client1); |
205 clonedResponse->internalBodyBuffer()->startLoading( | 206 clonedResponse->internalBodyBuffer()->startLoading( |
206 FetchDataLoader::createLoaderAsString(), client2); | 207 FetchDataLoader::createLoaderAsString(), client2); |
207 blink::testing::runPendingTasks(); | 208 blink::testing::runPendingTasks(); |
208 } | 209 } |
209 | 210 |
210 BodyStreamBuffer* createHelloWorldBuffer(ScriptState* scriptState) { | 211 BodyStreamBuffer* createHelloWorldBuffer(ScriptState* scriptState) { |
211 using Command = DataConsumerHandleTestUtil::Command; | 212 using Command = BytesConsumerTestUtil::Command; |
212 std::unique_ptr<DataConsumerHandleTestUtil::ReplayingHandle> src( | 213 BytesConsumerTestUtil::ReplayingBytesConsumer* src = |
213 DataConsumerHandleTestUtil::ReplayingHandle::create()); | 214 new BytesConsumerTestUtil::ReplayingBytesConsumer( |
| 215 scriptState->getExecutionContext()); |
214 src->add(Command(Command::Data, "Hello, ")); | 216 src->add(Command(Command::Data, "Hello, ")); |
215 src->add(Command(Command::Data, "world")); | 217 src->add(Command(Command::Data, "world")); |
216 src->add(Command(Command::Done)); | 218 src->add(Command(Command::Done)); |
217 return new BodyStreamBuffer( | 219 return new BodyStreamBuffer(scriptState, src); |
218 scriptState, createFetchDataConsumerHandleFromWebHandle(std::move(src))); | |
219 } | 220 } |
220 | 221 |
221 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneDefault) { | 222 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneDefault) { |
222 V8TestingScope scope; | 223 V8TestingScope scope; |
223 BodyStreamBuffer* buffer = createHelloWorldBuffer(scope.getScriptState()); | 224 BodyStreamBuffer* buffer = createHelloWorldBuffer(scope.getScriptState()); |
224 FetchResponseData* fetchResponseData = | 225 FetchResponseData* fetchResponseData = |
225 FetchResponseData::createWithBuffer(buffer); | 226 FetchResponseData::createWithBuffer(buffer); |
226 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); | 227 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); |
227 Response* response = | 228 Response* response = |
228 Response::create(scope.getExecutionContext(), fetchResponseData); | 229 Response::create(scope.getExecutionContext(), fetchResponseData); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
265 fetchResponseData = fetchResponseData->createOpaqueFilteredResponse(); | 266 fetchResponseData = fetchResponseData->createOpaqueFilteredResponse(); |
266 Response* response = | 267 Response* response = |
267 Response::create(scope.getExecutionContext(), fetchResponseData); | 268 Response::create(scope.getExecutionContext(), fetchResponseData); |
268 EXPECT_EQ(response->internalBodyBuffer(), buffer); | 269 EXPECT_EQ(response->internalBodyBuffer(), buffer); |
269 checkResponseStream(scope.getScriptState(), response, false); | 270 checkResponseStream(scope.getScriptState(), response, false); |
270 } | 271 } |
271 | 272 |
272 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneError) { | 273 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneError) { |
273 V8TestingScope scope; | 274 V8TestingScope scope; |
274 BodyStreamBuffer* buffer = new BodyStreamBuffer( | 275 BodyStreamBuffer* buffer = new BodyStreamBuffer( |
275 scope.getScriptState(), createFetchDataConsumerHandleFromWebHandle( | 276 scope.getScriptState(), |
276 createUnexpectedErrorDataConsumerHandle())); | 277 BytesConsumer::createErrored(BytesConsumer::Error())); |
277 FetchResponseData* fetchResponseData = | 278 FetchResponseData* fetchResponseData = |
278 FetchResponseData::createWithBuffer(buffer); | 279 FetchResponseData::createWithBuffer(buffer); |
279 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); | 280 fetchResponseData->setURL(KURL(ParsedURLString, "http://www.response.com")); |
280 Response* response = | 281 Response* response = |
281 Response::create(scope.getExecutionContext(), fetchResponseData); | 282 Response::create(scope.getExecutionContext(), fetchResponseData); |
282 TrackExceptionState exceptionState; | 283 TrackExceptionState exceptionState; |
283 Response* clonedResponse = | 284 Response* clonedResponse = |
284 response->clone(scope.getScriptState(), exceptionState); | 285 response->clone(scope.getScriptState(), exceptionState); |
285 EXPECT_FALSE(exceptionState.hadException()); | 286 EXPECT_FALSE(exceptionState.hadException()); |
286 | 287 |
287 BytesConsumerTestUtil::MockFetchDataLoaderClient* client1 = | 288 BytesConsumerTestUtil::MockFetchDataLoaderClient* client1 = |
288 new BytesConsumerTestUtil::MockFetchDataLoaderClient(); | 289 new BytesConsumerTestUtil::MockFetchDataLoaderClient(); |
289 BytesConsumerTestUtil::MockFetchDataLoaderClient* client2 = | 290 BytesConsumerTestUtil::MockFetchDataLoaderClient* client2 = |
290 new BytesConsumerTestUtil::MockFetchDataLoaderClient(); | 291 new BytesConsumerTestUtil::MockFetchDataLoaderClient(); |
291 EXPECT_CALL(*client1, didFetchDataLoadFailed()); | 292 EXPECT_CALL(*client1, didFetchDataLoadFailed()); |
292 EXPECT_CALL(*client2, didFetchDataLoadFailed()); | 293 EXPECT_CALL(*client2, didFetchDataLoadFailed()); |
293 | 294 |
294 response->internalBodyBuffer()->startLoading( | 295 response->internalBodyBuffer()->startLoading( |
295 FetchDataLoader::createLoaderAsString(), client1); | 296 FetchDataLoader::createLoaderAsString(), client1); |
296 clonedResponse->internalBodyBuffer()->startLoading( | 297 clonedResponse->internalBodyBuffer()->startLoading( |
297 FetchDataLoader::createLoaderAsString(), client2); | 298 FetchDataLoader::createLoaderAsString(), client2); |
298 blink::testing::runPendingTasks(); | 299 blink::testing::runPendingTasks(); |
299 } | 300 } |
300 | 301 |
301 } // namespace | 302 } // namespace |
302 } // namespace blink | 303 } // namespace blink |
OLD | NEW |