| 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 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 } | 70 } |
| 71 }; | 71 }; |
| 72 | 72 |
| 73 TEST_F(BodyStreamBufferTest, Tee) | 73 TEST_F(BodyStreamBufferTest, Tee) |
| 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 WebTaskRunner* taskRunner = Platform::current()->currentThread()->getWebTask
Runner(); |
| 81 EXPECT_CALL(*client1, getTaskRunner()).WillRepeatedly(Return(taskRunner)); |
| 82 EXPECT_CALL(*client2, getTaskRunner()).WillRepeatedly(Return(taskRunner)); |
| 83 |
| 80 InSequence s; | 84 InSequence s; |
| 81 EXPECT_CALL(checkpoint, Call(1)); | 85 EXPECT_CALL(checkpoint, Call(1)); |
| 82 EXPECT_CALL(*client1, didFetchDataLoadedString(String("hello, world"))); | 86 EXPECT_CALL(*client1, didFetchDataLoadedString(String("hello, world"))); |
| 83 EXPECT_CALL(checkpoint, Call(2)); | 87 EXPECT_CALL(checkpoint, Call(2)); |
| 84 EXPECT_CALL(checkpoint, Call(3)); | 88 EXPECT_CALL(checkpoint, Call(3)); |
| 85 EXPECT_CALL(*client2, didFetchDataLoadedString(String("hello, world"))); | 89 EXPECT_CALL(*client2, didFetchDataLoadedString(String("hello, world"))); |
| 86 EXPECT_CALL(checkpoint, Call(4)); | 90 EXPECT_CALL(checkpoint, Call(4)); |
| 87 | 91 |
| 88 std::unique_ptr<DataConsumerHandleTestUtil::ReplayingHandle> handle = DataCo
nsumerHandleTestUtil::ReplayingHandle::create(); | 92 std::unique_ptr<DataConsumerHandleTestUtil::ReplayingHandle> handle = DataCo
nsumerHandleTestUtil::ReplayingHandle::create(); |
| 89 handle->add(DataConsumerHandleTestUtil::Command(DataConsumerHandleTestUtil::
Command::Data, "hello, ")); | 93 handle->add(DataConsumerHandleTestUtil::Command(DataConsumerHandleTestUtil::
Command::Data, "hello, ")); |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 279 EXPECT_TRUE(buffer->isStreamReadable()); | 283 EXPECT_TRUE(buffer->isStreamReadable()); |
| 280 } | 284 } |
| 281 | 285 |
| 282 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsArrayBuffer) | 286 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsArrayBuffer) |
| 283 { | 287 { |
| 284 V8TestingScope scope; | 288 V8TestingScope scope; |
| 285 Checkpoint checkpoint; | 289 Checkpoint checkpoint; |
| 286 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); | 290 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
| 287 DOMArrayBuffer* arrayBuffer = nullptr; | 291 DOMArrayBuffer* arrayBuffer = nullptr; |
| 288 | 292 |
| 293 WebTaskRunner* taskRunner = Platform::current()->currentThread()->getWebTask
Runner(); |
| 294 EXPECT_CALL(*client, getTaskRunner()).WillRepeatedly(Return(taskRunner)); |
| 295 |
| 289 InSequence s; | 296 InSequence s; |
| 290 EXPECT_CALL(checkpoint, Call(1)); | 297 EXPECT_CALL(checkpoint, Call(1)); |
| 291 EXPECT_CALL(*client, didFetchDataLoadedArrayBufferMock(_)).WillOnce(SaveArg<
0>(&arrayBuffer)); | 298 EXPECT_CALL(*client, didFetchDataLoadedArrayBufferMock(_)).WillOnce(SaveArg<
0>(&arrayBuffer)); |
| 292 EXPECT_CALL(checkpoint, Call(2)); | 299 EXPECT_CALL(checkpoint, Call(2)); |
| 293 | 300 |
| 294 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); | 301 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); |
| 295 handle->add(Command(Command::Data, "hello")); | 302 handle->add(Command(Command::Data, "hello")); |
| 296 handle->add(Command(Command::Done)); | 303 handle->add(Command(Command::Done)); |
| 297 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(std::move(handle))); | 304 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(std::move(handle))); |
| 298 buffer->startLoading(FetchDataLoader::createLoaderAsArrayBuffer(), client); | 305 buffer->startLoading(FetchDataLoader::createLoaderAsArrayBuffer(), client); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 312 EXPECT_EQ("hello", String(static_cast<const char*>(arrayBuffer->data()), arr
ayBuffer->byteLength())); | 319 EXPECT_EQ("hello", String(static_cast<const char*>(arrayBuffer->data()), arr
ayBuffer->byteLength())); |
| 313 } | 320 } |
| 314 | 321 |
| 315 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsBlob) | 322 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsBlob) |
| 316 { | 323 { |
| 317 V8TestingScope scope; | 324 V8TestingScope scope; |
| 318 Checkpoint checkpoint; | 325 Checkpoint checkpoint; |
| 319 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); | 326 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
| 320 RefPtr<BlobDataHandle> blobDataHandle; | 327 RefPtr<BlobDataHandle> blobDataHandle; |
| 321 | 328 |
| 329 WebTaskRunner* taskRunner = Platform::current()->currentThread()->getWebTask
Runner(); |
| 330 EXPECT_CALL(*client, getTaskRunner()).WillRepeatedly(Return(taskRunner)); |
| 331 |
| 322 InSequence s; | 332 InSequence s; |
| 323 EXPECT_CALL(checkpoint, Call(1)); | 333 EXPECT_CALL(checkpoint, Call(1)); |
| 324 EXPECT_CALL(*client, didFetchDataLoadedBlobHandleMock(_)).WillOnce(SaveArg<0
>(&blobDataHandle)); | 334 EXPECT_CALL(*client, didFetchDataLoadedBlobHandleMock(_)).WillOnce(SaveArg<0
>(&blobDataHandle)); |
| 325 EXPECT_CALL(checkpoint, Call(2)); | 335 EXPECT_CALL(checkpoint, Call(2)); |
| 326 | 336 |
| 327 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); | 337 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); |
| 328 handle->add(Command(Command::Data, "hello")); | 338 handle->add(Command(Command::Data, "hello")); |
| 329 handle->add(Command(Command::Done)); | 339 handle->add(Command(Command::Done)); |
| 330 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(std::move(handle))); | 340 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(std::move(handle))); |
| 331 buffer->startLoading(FetchDataLoader::createLoaderAsBlobHandle("text/plain")
, client); | 341 buffer->startLoading(FetchDataLoader::createLoaderAsBlobHandle("text/plain")
, client); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 343 EXPECT_FALSE(buffer->hasPendingActivity()); | 353 EXPECT_FALSE(buffer->hasPendingActivity()); |
| 344 EXPECT_EQ(5u, blobDataHandle->size()); | 354 EXPECT_EQ(5u, blobDataHandle->size()); |
| 345 } | 355 } |
| 346 | 356 |
| 347 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsString) | 357 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsString) |
| 348 { | 358 { |
| 349 V8TestingScope scope; | 359 V8TestingScope scope; |
| 350 Checkpoint checkpoint; | 360 Checkpoint checkpoint; |
| 351 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); | 361 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
| 352 | 362 |
| 363 WebTaskRunner* taskRunner = Platform::current()->currentThread()->getWebTask
Runner(); |
| 364 EXPECT_CALL(*client, getTaskRunner()).WillRepeatedly(Return(taskRunner)); |
| 365 |
| 353 InSequence s; | 366 InSequence s; |
| 354 EXPECT_CALL(checkpoint, Call(1)); | 367 EXPECT_CALL(checkpoint, Call(1)); |
| 355 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); | 368 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); |
| 356 EXPECT_CALL(checkpoint, Call(2)); | 369 EXPECT_CALL(checkpoint, Call(2)); |
| 357 | 370 |
| 358 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); | 371 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); |
| 359 handle->add(Command(Command::Data, "hello")); | 372 handle->add(Command(Command::Data, "hello")); |
| 360 handle->add(Command(Command::Done)); | 373 handle->add(Command(Command::Done)); |
| 361 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(std::move(handle))); | 374 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(std::move(handle))); |
| 362 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); | 375 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 373 EXPECT_TRUE(buffer->isStreamDisturbed()); | 386 EXPECT_TRUE(buffer->isStreamDisturbed()); |
| 374 EXPECT_FALSE(buffer->hasPendingActivity()); | 387 EXPECT_FALSE(buffer->hasPendingActivity()); |
| 375 } | 388 } |
| 376 | 389 |
| 377 TEST_F(BodyStreamBufferTest, LoadClosedHandle) | 390 TEST_F(BodyStreamBufferTest, LoadClosedHandle) |
| 378 { | 391 { |
| 379 V8TestingScope scope; | 392 V8TestingScope scope; |
| 380 Checkpoint checkpoint; | 393 Checkpoint checkpoint; |
| 381 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); | 394 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
| 382 | 395 |
| 396 WebTaskRunner* taskRunner = Platform::current()->currentThread()->getWebTask
Runner(); |
| 397 EXPECT_CALL(*client, getTaskRunner()).WillRepeatedly(Return(taskRunner)); |
| 398 |
| 383 InSequence s; | 399 InSequence s; |
| 384 EXPECT_CALL(checkpoint, Call(1)); | 400 EXPECT_CALL(checkpoint, Call(1)); |
| 385 EXPECT_CALL(*client, didFetchDataLoadedString(String(""))); | 401 EXPECT_CALL(*client, didFetchDataLoadedString(String(""))); |
| 386 EXPECT_CALL(checkpoint, Call(2)); | 402 EXPECT_CALL(checkpoint, Call(2)); |
| 387 | 403 |
| 388 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(createDoneDataConsumerHandle())); | 404 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(createDoneDataConsumerHandle())); |
| 389 | 405 |
| 390 EXPECT_TRUE(buffer->isStreamReadable()); | 406 EXPECT_TRUE(buffer->isStreamReadable()); |
| 391 testing::runPendingTasks(); | 407 testing::runPendingTasks(); |
| 392 EXPECT_TRUE(buffer->isStreamClosed()); | 408 EXPECT_TRUE(buffer->isStreamClosed()); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 408 EXPECT_TRUE(buffer->isStreamDisturbed()); | 424 EXPECT_TRUE(buffer->isStreamDisturbed()); |
| 409 EXPECT_FALSE(buffer->hasPendingActivity()); | 425 EXPECT_FALSE(buffer->hasPendingActivity()); |
| 410 } | 426 } |
| 411 | 427 |
| 412 TEST_F(BodyStreamBufferTest, LoadErroredHandle) | 428 TEST_F(BodyStreamBufferTest, LoadErroredHandle) |
| 413 { | 429 { |
| 414 V8TestingScope scope; | 430 V8TestingScope scope; |
| 415 Checkpoint checkpoint; | 431 Checkpoint checkpoint; |
| 416 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); | 432 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
| 417 | 433 |
| 434 WebTaskRunner* taskRunner = Platform::current()->currentThread()->getWebTask
Runner(); |
| 435 EXPECT_CALL(*client, getTaskRunner()).WillRepeatedly(Return(taskRunner)); |
| 436 |
| 418 InSequence s; | 437 InSequence s; |
| 419 EXPECT_CALL(checkpoint, Call(1)); | 438 EXPECT_CALL(checkpoint, Call(1)); |
| 420 EXPECT_CALL(*client, didFetchDataLoadFailed()); | 439 EXPECT_CALL(*client, didFetchDataLoadFailed()); |
| 421 EXPECT_CALL(checkpoint, Call(2)); | 440 EXPECT_CALL(checkpoint, Call(2)); |
| 422 | 441 |
| 423 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(createUnexpectedErrorDataConsumerHandle()
)); | 442 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), crea
teFetchDataConsumerHandleFromWebHandle(createUnexpectedErrorDataConsumerHandle()
)); |
| 424 | 443 |
| 425 EXPECT_TRUE(buffer->isStreamReadable()); | 444 EXPECT_TRUE(buffer->isStreamReadable()); |
| 426 testing::runPendingTasks(); | 445 testing::runPendingTasks(); |
| 427 EXPECT_TRUE(buffer->isStreamErrored()); | 446 EXPECT_TRUE(buffer->isStreamErrored()); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 441 EXPECT_TRUE(buffer->isStreamLocked()); | 460 EXPECT_TRUE(buffer->isStreamLocked()); |
| 442 EXPECT_TRUE(buffer->isStreamDisturbed()); | 461 EXPECT_TRUE(buffer->isStreamDisturbed()); |
| 443 EXPECT_FALSE(buffer->hasPendingActivity()); | 462 EXPECT_FALSE(buffer->hasPendingActivity()); |
| 444 } | 463 } |
| 445 | 464 |
| 446 TEST_F(BodyStreamBufferTest, LoaderShouldBeKeptAliveByBodyStreamBuffer) | 465 TEST_F(BodyStreamBufferTest, LoaderShouldBeKeptAliveByBodyStreamBuffer) |
| 447 { | 466 { |
| 448 V8TestingScope scope; | 467 V8TestingScope scope; |
| 449 Checkpoint checkpoint; | 468 Checkpoint checkpoint; |
| 450 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); | 469 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
| 470 WebTaskRunner* taskRunner = Platform::current()->currentThread()->getWebTask
Runner(); |
| 471 EXPECT_CALL(*client, getTaskRunner()).WillRepeatedly(Return(taskRunner)); |
| 451 | 472 |
| 452 InSequence s; | 473 InSequence s; |
| 453 EXPECT_CALL(checkpoint, Call(1)); | 474 EXPECT_CALL(checkpoint, Call(1)); |
| 454 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); | 475 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); |
| 455 EXPECT_CALL(checkpoint, Call(2)); | 476 EXPECT_CALL(checkpoint, Call(2)); |
| 456 | 477 |
| 457 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); | 478 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); |
| 458 handle->add(Command(Command::Data, "hello")); | 479 handle->add(Command(Command::Data, "hello")); |
| 459 handle->add(Command(Command::Done)); | 480 handle->add(Command(Command::Done)); |
| 460 Persistent<BodyStreamBuffer> buffer = new BodyStreamBuffer(scope.getScriptSt
ate(), createFetchDataConsumerHandleFromWebHandle(std::move(handle))); | 481 Persistent<BodyStreamBuffer> buffer = new BodyStreamBuffer(scope.getScriptSt
ate(), createFetchDataConsumerHandleFromWebHandle(std::move(handle))); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 500 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), std:
:move(handle)); | 521 BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), std:
:move(handle)); |
| 501 checkpoint.Call(1); | 522 checkpoint.Call(1); |
| 502 ScriptValue reason(scope.getScriptState(), v8String(scope.getScriptState()->
isolate(), "reason")); | 523 ScriptValue reason(scope.getScriptState(), v8String(scope.getScriptState()->
isolate(), "reason")); |
| 503 buffer->cancelSource(scope.getScriptState(), reason); | 524 buffer->cancelSource(scope.getScriptState(), reason); |
| 504 checkpoint.Call(2); | 525 checkpoint.Call(2); |
| 505 } | 526 } |
| 506 | 527 |
| 507 } // namespace | 528 } // namespace |
| 508 | 529 |
| 509 } // namespace blink | 530 } // namespace blink |
| OLD | NEW |