| 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/BodyStreamBuffer.h" | 5 #include "modules/fetch/BodyStreamBuffer.h" |
| 6 | 6 |
| 7 #include "bindings/core/v8/V8BindingForTesting.h" | 7 #include "bindings/core/v8/V8BindingForTesting.h" |
| 8 #include "core/html/FormData.h" | 8 #include "core/html/FormData.h" |
| 9 #include "modules/fetch/DataConsumerHandleTestUtil.h" | 9 #include "modules/fetch/DataConsumerHandleTestUtil.h" |
| 10 #include "modules/fetch/FetchBlobDataConsumerHandle.h" | 10 #include "modules/fetch/FetchBlobDataConsumerHandle.h" |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 { | 74 { |
| 75 V8TestingScope scope; | 75 V8TestingScope scope; |
| 76 Checkpoint checkpoint; | 76 Checkpoint checkpoint; |
| 77 MockFetchDataLoaderClient* client1 = MockFetchDataLoaderClient::create(); | 77 MockFetchDataLoaderClient* client1 = MockFetchDataLoaderClient::create(); |
| 78 MockFetchDataLoaderClient* client2 = MockFetchDataLoaderClient::create(); | 78 MockFetchDataLoaderClient* client2 = MockFetchDataLoaderClient::create(); |
| 79 | 79 |
| 80 InSequence s; | 80 InSequence s; |
| 81 EXPECT_CALL(checkpoint, Call(1)); | 81 EXPECT_CALL(checkpoint, Call(1)); |
| 82 EXPECT_CALL(*client1, didFetchDataLoadedString(String("hello, world"))); | 82 EXPECT_CALL(*client1, didFetchDataLoadedString(String("hello, world"))); |
| 83 EXPECT_CALL(checkpoint, Call(2)); | 83 EXPECT_CALL(checkpoint, Call(2)); |
| 84 EXPECT_CALL(*client2, didFetchDataLoadedString(String("hello, world"))); |
| 84 EXPECT_CALL(checkpoint, Call(3)); | 85 EXPECT_CALL(checkpoint, Call(3)); |
| 85 EXPECT_CALL(*client2, didFetchDataLoadedString(String("hello, world"))); | |
| 86 EXPECT_CALL(checkpoint, Call(4)); | 86 EXPECT_CALL(checkpoint, Call(4)); |
| 87 | 87 |
| 88 std::unique_ptr<DataConsumerHandleTestUtil::ReplayingHandle> handle = DataCo
nsumerHandleTestUtil::ReplayingHandle::create(); | 88 std::unique_ptr<DataConsumerHandleTestUtil::ReplayingHandle> handle = DataCo
nsumerHandleTestUtil::ReplayingHandle::create(); |
| 89 handle->add(DataConsumerHandleTestUtil::Command(DataConsumerHandleTestUtil::
Command::Data, "hello, ")); | 89 handle->add(DataConsumerHandleTestUtil::Command(DataConsumerHandleTestUtil::
Command::Data, "hello, ")); |
| 90 handle->add(DataConsumerHandleTestUtil::Command(DataConsumerHandleTestUtil::
Command::Data, "world")); | 90 handle->add(DataConsumerHandleTestUtil::Command(DataConsumerHandleTestUtil::
Command::Data, "world")); |
| 91 handle->add(DataConsumerHandleTestUtil::Command(DataConsumerHandleTestUtil::
Command::Done)); | 91 handle->add(DataConsumerHandleTestUtil::Command(DataConsumerHandleTestUtil::
Command::Done)); |
| 92 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(std::move(handle))); | 92 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(std::move(handle))); |
| 93 | 93 |
| 94 BodyStreamBuffer* new1; | 94 BodyStreamBuffer* new1; |
| 95 BodyStreamBuffer* new2; | 95 BodyStreamBuffer* new2; |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 285 Checkpoint checkpoint; | 285 Checkpoint checkpoint; |
| 286 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); | 286 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
| 287 DOMArrayBuffer* arrayBuffer = nullptr; | 287 DOMArrayBuffer* arrayBuffer = nullptr; |
| 288 | 288 |
| 289 InSequence s; | 289 InSequence s; |
| 290 EXPECT_CALL(checkpoint, Call(1)); | 290 EXPECT_CALL(checkpoint, Call(1)); |
| 291 EXPECT_CALL(*client, didFetchDataLoadedArrayBufferMock(_)).WillOnce(SaveArg<
0>(&arrayBuffer)); | 291 EXPECT_CALL(*client, didFetchDataLoadedArrayBufferMock(_)).WillOnce(SaveArg<
0>(&arrayBuffer)); |
| 292 EXPECT_CALL(checkpoint, Call(2)); | 292 EXPECT_CALL(checkpoint, Call(2)); |
| 293 | 293 |
| 294 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); | 294 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); |
| 295 handle->add(Command(Command::Wait)); |
| 295 handle->add(Command(Command::Data, "hello")); | 296 handle->add(Command(Command::Data, "hello")); |
| 296 handle->add(Command(Command::Done)); | 297 handle->add(Command(Command::Done)); |
| 297 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(std::move(handle))); | 298 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(std::move(handle))); |
| 298 buffer->startLoading(FetchDataLoader::createLoaderAsArrayBuffer(), client); | 299 buffer->startLoading(FetchDataLoader::createLoaderAsArrayBuffer(), client); |
| 299 | 300 |
| 300 EXPECT_TRUE(buffer->isStreamLocked()); | 301 EXPECT_TRUE(buffer->isStreamLocked()); |
| 301 EXPECT_TRUE(buffer->isStreamDisturbed()); | 302 EXPECT_TRUE(buffer->isStreamDisturbed()); |
| 302 EXPECT_TRUE(buffer->hasPendingActivity()); | 303 EXPECT_TRUE(buffer->hasPendingActivity()); |
| 303 | 304 |
| 304 checkpoint.Call(1); | 305 checkpoint.Call(1); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 318 Checkpoint checkpoint; | 319 Checkpoint checkpoint; |
| 319 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); | 320 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
| 320 RefPtr<BlobDataHandle> blobDataHandle; | 321 RefPtr<BlobDataHandle> blobDataHandle; |
| 321 | 322 |
| 322 InSequence s; | 323 InSequence s; |
| 323 EXPECT_CALL(checkpoint, Call(1)); | 324 EXPECT_CALL(checkpoint, Call(1)); |
| 324 EXPECT_CALL(*client, didFetchDataLoadedBlobHandleMock(_)).WillOnce(SaveArg<0
>(&blobDataHandle)); | 325 EXPECT_CALL(*client, didFetchDataLoadedBlobHandleMock(_)).WillOnce(SaveArg<0
>(&blobDataHandle)); |
| 325 EXPECT_CALL(checkpoint, Call(2)); | 326 EXPECT_CALL(checkpoint, Call(2)); |
| 326 | 327 |
| 327 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); | 328 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); |
| 329 handle->add(Command(Command::Wait)); |
| 328 handle->add(Command(Command::Data, "hello")); | 330 handle->add(Command(Command::Data, "hello")); |
| 329 handle->add(Command(Command::Done)); | 331 handle->add(Command(Command::Done)); |
| 330 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(std::move(handle))); | 332 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(std::move(handle))); |
| 331 buffer->startLoading(FetchDataLoader::createLoaderAsBlobHandle("text/plain")
, client); | 333 buffer->startLoading(FetchDataLoader::createLoaderAsBlobHandle("text/plain")
, client); |
| 332 | 334 |
| 333 EXPECT_TRUE(buffer->isStreamLocked()); | 335 EXPECT_TRUE(buffer->isStreamLocked()); |
| 334 EXPECT_TRUE(buffer->isStreamDisturbed()); | 336 EXPECT_TRUE(buffer->isStreamDisturbed()); |
| 335 EXPECT_TRUE(buffer->hasPendingActivity()); | 337 EXPECT_TRUE(buffer->hasPendingActivity()); |
| 336 | 338 |
| 337 checkpoint.Call(1); | 339 checkpoint.Call(1); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 349 V8TestingScope scope; | 351 V8TestingScope scope; |
| 350 Checkpoint checkpoint; | 352 Checkpoint checkpoint; |
| 351 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); | 353 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
| 352 | 354 |
| 353 InSequence s; | 355 InSequence s; |
| 354 EXPECT_CALL(checkpoint, Call(1)); | 356 EXPECT_CALL(checkpoint, Call(1)); |
| 355 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); | 357 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); |
| 356 EXPECT_CALL(checkpoint, Call(2)); | 358 EXPECT_CALL(checkpoint, Call(2)); |
| 357 | 359 |
| 358 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); | 360 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); |
| 361 handle->add(Command(Command::Wait)); |
| 359 handle->add(Command(Command::Data, "hello")); | 362 handle->add(Command(Command::Data, "hello")); |
| 360 handle->add(Command(Command::Done)); | 363 handle->add(Command(Command::Done)); |
| 361 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(std::move(handle))); | 364 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(std::move(handle))); |
| 362 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); | 365 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); |
| 363 | 366 |
| 364 EXPECT_TRUE(buffer->isStreamLocked()); | 367 EXPECT_TRUE(buffer->isStreamLocked()); |
| 365 EXPECT_TRUE(buffer->isStreamDisturbed()); | 368 EXPECT_TRUE(buffer->isStreamDisturbed()); |
| 366 EXPECT_TRUE(buffer->hasPendingActivity()); | 369 EXPECT_TRUE(buffer->hasPendingActivity()); |
| 367 | 370 |
| 368 checkpoint.Call(1); | 371 checkpoint.Call(1); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 388 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(createDoneDataConsumerHandle())); | 391 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(createDoneDataConsumerHandle())); |
| 389 | 392 |
| 390 EXPECT_TRUE(buffer->isStreamReadable()); | 393 EXPECT_TRUE(buffer->isStreamReadable()); |
| 391 testing::runPendingTasks(); | 394 testing::runPendingTasks(); |
| 392 EXPECT_TRUE(buffer->isStreamClosed()); | 395 EXPECT_TRUE(buffer->isStreamClosed()); |
| 393 | 396 |
| 394 EXPECT_FALSE(buffer->isStreamLocked()); | 397 EXPECT_FALSE(buffer->isStreamLocked()); |
| 395 EXPECT_FALSE(buffer->isStreamDisturbed()); | 398 EXPECT_FALSE(buffer->isStreamDisturbed()); |
| 396 EXPECT_FALSE(buffer->hasPendingActivity()); | 399 EXPECT_FALSE(buffer->hasPendingActivity()); |
| 397 | 400 |
| 401 checkpoint.Call(1); |
| 398 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); | 402 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); |
| 399 EXPECT_TRUE(buffer->isStreamLocked()); | |
| 400 EXPECT_TRUE(buffer->isStreamDisturbed()); | |
| 401 EXPECT_TRUE(buffer->hasPendingActivity()); | |
| 402 | |
| 403 checkpoint.Call(1); | |
| 404 testing::runPendingTasks(); | |
| 405 checkpoint.Call(2); | 403 checkpoint.Call(2); |
| 406 | 404 |
| 407 EXPECT_TRUE(buffer->isStreamLocked()); | 405 EXPECT_TRUE(buffer->isStreamLocked()); |
| 408 EXPECT_TRUE(buffer->isStreamDisturbed()); | 406 EXPECT_TRUE(buffer->isStreamDisturbed()); |
| 409 EXPECT_FALSE(buffer->hasPendingActivity()); | 407 EXPECT_FALSE(buffer->hasPendingActivity()); |
| 410 } | 408 } |
| 411 | 409 |
| 412 TEST_F(BodyStreamBufferTest, LoadErroredHandle) | 410 TEST_F(BodyStreamBufferTest, LoadErroredHandle) |
| 413 { | 411 { |
| 414 V8TestingScope scope; | 412 V8TestingScope scope; |
| 415 Checkpoint checkpoint; | 413 Checkpoint checkpoint; |
| 416 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); | 414 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
| 417 | 415 |
| 418 InSequence s; | 416 InSequence s; |
| 419 EXPECT_CALL(checkpoint, Call(1)); | 417 EXPECT_CALL(checkpoint, Call(1)); |
| 420 EXPECT_CALL(*client, didFetchDataLoadFailed()); | 418 EXPECT_CALL(*client, didFetchDataLoadFailed()); |
| 421 EXPECT_CALL(checkpoint, Call(2)); | 419 EXPECT_CALL(checkpoint, Call(2)); |
| 422 | 420 |
| 423 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(createUnexpectedErrorDataConsumerHandle()
)); | 421 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(createUnexpectedErrorDataConsumerHandle()
)); |
| 424 | 422 |
| 425 EXPECT_TRUE(buffer->isStreamReadable()); | 423 EXPECT_TRUE(buffer->isStreamReadable()); |
| 426 testing::runPendingTasks(); | 424 testing::runPendingTasks(); |
| 427 EXPECT_TRUE(buffer->isStreamErrored()); | 425 EXPECT_TRUE(buffer->isStreamErrored()); |
| 428 | 426 |
| 429 EXPECT_FALSE(buffer->isStreamLocked()); | 427 EXPECT_FALSE(buffer->isStreamLocked()); |
| 430 EXPECT_FALSE(buffer->isStreamDisturbed()); | 428 EXPECT_FALSE(buffer->isStreamDisturbed()); |
| 431 EXPECT_FALSE(buffer->hasPendingActivity()); | 429 EXPECT_FALSE(buffer->hasPendingActivity()); |
| 432 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); | |
| 433 EXPECT_TRUE(buffer->isStreamLocked()); | |
| 434 EXPECT_TRUE(buffer->isStreamDisturbed()); | |
| 435 EXPECT_TRUE(buffer->hasPendingActivity()); | |
| 436 | 430 |
| 437 checkpoint.Call(1); | 431 checkpoint.Call(1); |
| 438 testing::runPendingTasks(); | 432 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); |
| 439 checkpoint.Call(2); | 433 checkpoint.Call(2); |
| 440 | 434 |
| 441 EXPECT_TRUE(buffer->isStreamLocked()); | 435 EXPECT_TRUE(buffer->isStreamLocked()); |
| 442 EXPECT_TRUE(buffer->isStreamDisturbed()); | 436 EXPECT_TRUE(buffer->isStreamDisturbed()); |
| 443 EXPECT_FALSE(buffer->hasPendingActivity()); | 437 EXPECT_FALSE(buffer->hasPendingActivity()); |
| 444 } | 438 } |
| 445 | 439 |
| 446 TEST_F(BodyStreamBufferTest, LoaderShouldBeKeptAliveByBodyStreamBuffer) | 440 TEST_F(BodyStreamBufferTest, LoaderShouldBeKeptAliveByBodyStreamBuffer) |
| 447 { | 441 { |
| 448 V8TestingScope scope; | 442 V8TestingScope scope; |
| 449 Checkpoint checkpoint; | 443 Checkpoint checkpoint; |
| 450 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); | 444 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
| 451 | 445 |
| 452 InSequence s; | 446 InSequence s; |
| 453 EXPECT_CALL(checkpoint, Call(1)); | 447 EXPECT_CALL(checkpoint, Call(1)); |
| 454 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); | 448 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); |
| 455 EXPECT_CALL(checkpoint, Call(2)); | 449 EXPECT_CALL(checkpoint, Call(2)); |
| 456 | 450 |
| 457 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); | 451 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); |
| 452 handle->add(Command(Command::Wait)); |
| 458 handle->add(Command(Command::Data, "hello")); | 453 handle->add(Command(Command::Data, "hello")); |
| 459 handle->add(Command(Command::Done)); | 454 handle->add(Command(Command::Done)); |
| 460 Persistent<BodyStreamBuffer> buffer = new BodyStreamBuffer(scope.getScriptSt
ate(), createFetchDataConsumerHandleFromWebHandle(std::move(handle))); | 455 Persistent<BodyStreamBuffer> buffer = new BodyStreamBuffer(scope.getScriptSt
ate(), createFetchDataConsumerHandleFromWebHandle(std::move(handle))); |
| 461 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); | 456 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); |
| 462 | 457 |
| 463 ThreadHeap::collectAllGarbage(); | 458 ThreadHeap::collectAllGarbage(); |
| 464 checkpoint.Call(1); | 459 checkpoint.Call(1); |
| 465 testing::runPendingTasks(); | 460 testing::runPendingTasks(); |
| 466 checkpoint.Call(2); | 461 checkpoint.Call(2); |
| 467 } | 462 } |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 500 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), std:
:move(handle)); | 495 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), std:
:move(handle)); |
| 501 checkpoint.Call(1); | 496 checkpoint.Call(1); |
| 502 ScriptValue reason(scope.getScriptState(), v8String(scope.getScriptState()->
isolate(), "reason")); | 497 ScriptValue reason(scope.getScriptState(), v8String(scope.getScriptState()->
isolate(), "reason")); |
| 503 buffer->cancel(scope.getScriptState(), reason); | 498 buffer->cancel(scope.getScriptState(), reason); |
| 504 checkpoint.Call(2); | 499 checkpoint.Call(2); |
| 505 } | 500 } |
| 506 | 501 |
| 507 } // namespace | 502 } // namespace |
| 508 | 503 |
| 509 } // namespace blink | 504 } // namespace blink |
| OLD | NEW |