| 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 |