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 "config.h" | 5 #include "config.h" |
6 #include "core/streams/ReadableStream.h" | 6 #include "core/streams/ReadableStream.h" |
7 | 7 |
8 #include "bindings/core/v8/ExceptionState.h" | 8 #include "bindings/core/v8/ExceptionState.h" |
9 #include "bindings/core/v8/ScriptPromiseResolver.h" | 9 #include "bindings/core/v8/ScriptPromiseResolver.h" |
10 #include "bindings/core/v8/ScriptState.h" | 10 #include "bindings/core/v8/ScriptState.h" |
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
378 EXPECT_TRUE(onFulfilled.isNull()); | 378 EXPECT_TRUE(onFulfilled.isNull()); |
379 EXPECT_TRUE(onRejected.isNull()); | 379 EXPECT_TRUE(onRejected.isNull()); |
380 | 380 |
381 isolate()->RunMicrotasks(); | 381 isolate()->RunMicrotasks(); |
382 EXPECT_EQ("undefined", onFulfilled); | 382 EXPECT_EQ("undefined", onFulfilled); |
383 EXPECT_TRUE(onRejected.isNull()); | 383 EXPECT_TRUE(onRejected.isNull()); |
384 | 384 |
385 stream->error(DOMException::create(NotFoundError, "error")); | 385 stream->error(DOMException::create(NotFoundError, "error")); |
386 EXPECT_EQ(ReadableStream::Errored, stream->state()); | 386 EXPECT_EQ(ReadableStream::Errored, stream->state()); |
387 | 387 |
388 // FIXME: This expectation should hold but doesn't because of | 388 EXPECT_NE(promise, stream->wait(scriptState())); |
389 // a ScriptPromiseProperty bug. Enable it when the defect is fixed. | |
390 // EXPECT_NE(promise, stream->wait(scriptState())); | |
391 } | 389 } |
392 | 390 |
393 TEST_F(ReadableStreamTest, CloseWhenWaiting) | 391 TEST_F(ReadableStreamTest, CloseWhenWaiting) |
394 { | 392 { |
395 String onWaitFulfilled, onWaitRejected; | 393 String onWaitFulfilled, onWaitRejected; |
396 String onClosedFulfilled, onClosedRejected; | 394 String onClosedFulfilled, onClosedRejected; |
397 | 395 |
398 StringStream* stream = construct(); | 396 StringStream* stream = construct(); |
399 | 397 |
400 { | 398 { |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
508 checkpoint.Call(1); | 506 checkpoint.Call(1); |
509 EXPECT_FALSE(m_exceptionState.hadException()); | 507 EXPECT_FALSE(m_exceptionState.hadException()); |
510 EXPECT_EQ("hello", chunk); | 508 EXPECT_EQ("hello", chunk); |
511 EXPECT_EQ(ReadableStream::Waiting, stream->state()); | 509 EXPECT_EQ(ReadableStream::Waiting, stream->state()); |
512 EXPECT_TRUE(stream->isPulling()); | 510 EXPECT_TRUE(stream->isPulling()); |
513 EXPECT_FALSE(stream->isDraining()); | 511 EXPECT_FALSE(stream->isDraining()); |
514 | 512 |
515 ScriptPromise newPromise = stream->wait(scriptState()); | 513 ScriptPromise newPromise = stream->wait(scriptState()); |
516 newPromise.then(createCaptor(&onFulfilled), createCaptor(&onRejected)); | 514 newPromise.then(createCaptor(&onFulfilled), createCaptor(&onRejected)); |
517 isolate()->RunMicrotasks(); | 515 isolate()->RunMicrotasks(); |
518 // FIXME: Uncomment the following assertions once | 516 EXPECT_NE(promise, newPromise); |
519 // |ScriptPromiseProperty.reset| is implemented and used. | 517 EXPECT_TRUE(onFulfilled.isNull()); |
520 // EXPECT_NE(promise, newPromise); | 518 EXPECT_TRUE(onRejected.isNull()); |
521 // EXPECT_TRUE(onFulfilled.isNull()); | |
522 // EXPECT_TRUE(onRejected.isNull()); | |
523 } | 519 } |
524 | 520 |
525 TEST_F(ReadableStreamTest, EnqueTwiceAndRead) | 521 TEST_F(ReadableStreamTest, EnqueTwiceAndRead) |
526 { | 522 { |
527 StringStream* stream = construct(); | 523 StringStream* stream = construct(); |
528 Checkpoint checkpoint; | 524 Checkpoint checkpoint; |
529 | 525 |
530 { | 526 { |
531 InSequence s; | 527 InSequence s; |
532 EXPECT_CALL(checkpoint, Call(0)); | 528 EXPECT_CALL(checkpoint, Call(0)); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
578 isolate()->RunMicrotasks(); | 574 isolate()->RunMicrotasks(); |
579 | 575 |
580 EXPECT_EQ(ReadableStream::Readable, stream->state()); | 576 EXPECT_EQ(ReadableStream::Readable, stream->state()); |
581 EXPECT_FALSE(stream->isPulling()); | 577 EXPECT_FALSE(stream->isPulling()); |
582 EXPECT_TRUE(stream->isDraining()); | 578 EXPECT_TRUE(stream->isDraining()); |
583 | 579 |
584 EXPECT_TRUE(stream->read(scriptState(), &m_exceptionState).toString(chunk)); | 580 EXPECT_TRUE(stream->read(scriptState(), &m_exceptionState).toString(chunk)); |
585 EXPECT_EQ("bye", chunk); | 581 EXPECT_EQ("bye", chunk); |
586 EXPECT_FALSE(m_exceptionState.hadException()); | 582 EXPECT_FALSE(m_exceptionState.hadException()); |
587 | 583 |
588 // FIXME: This assertion should be enabled once | 584 EXPECT_NE(promise, stream->wait(scriptState())); |
589 // ScriptPromiseProperty.reset is implemented and used. | |
590 // EXPECT_NE(promise, stream->wait(scriptState())); | |
591 stream->wait(scriptState()).then(createCaptor(&onWaitFulfilled), createCapto
r(&onWaitRejected)); | 585 stream->wait(scriptState()).then(createCaptor(&onWaitFulfilled), createCapto
r(&onWaitRejected)); |
592 | 586 |
593 EXPECT_EQ(ReadableStream::Closed, stream->state()); | 587 EXPECT_EQ(ReadableStream::Closed, stream->state()); |
594 EXPECT_FALSE(stream->isPulling()); | 588 EXPECT_FALSE(stream->isPulling()); |
595 EXPECT_TRUE(stream->isDraining()); | 589 EXPECT_TRUE(stream->isDraining()); |
596 | 590 |
597 EXPECT_TRUE(onWaitFulfilled.isNull()); | 591 EXPECT_TRUE(onWaitFulfilled.isNull()); |
598 EXPECT_TRUE(onWaitRejected.isNull()); | 592 EXPECT_TRUE(onWaitRejected.isNull()); |
599 EXPECT_TRUE(onClosedFulfilled.isNull()); | 593 EXPECT_TRUE(onClosedFulfilled.isNull()); |
600 EXPECT_TRUE(onClosedRejected.isNull()); | 594 EXPECT_TRUE(onClosedRejected.isNull()); |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
683 InSequence s; | 677 InSequence s; |
684 EXPECT_CALL(*m_underlyingSource, cancelSource(scriptState(), reason)).Wi
llOnce(Return(promise)); | 678 EXPECT_CALL(*m_underlyingSource, cancelSource(scriptState(), reason)).Wi
llOnce(Return(promise)); |
685 } | 679 } |
686 | 680 |
687 stream->enqueue("hello"); | 681 stream->enqueue("hello"); |
688 ScriptPromise wait = stream->wait(scriptState()); | 682 ScriptPromise wait = stream->wait(scriptState()); |
689 EXPECT_EQ(ReadableStream::Readable, stream->state()); | 683 EXPECT_EQ(ReadableStream::Readable, stream->state()); |
690 EXPECT_EQ(promise, stream->cancel(scriptState(), reason)); | 684 EXPECT_EQ(promise, stream->cancel(scriptState(), reason)); |
691 EXPECT_EQ(ReadableStream::Closed, stream->state()); | 685 EXPECT_EQ(ReadableStream::Closed, stream->state()); |
692 | 686 |
693 // FIXME: Uncomment this once ScriptPromiseProperty::reset is implemented | 687 EXPECT_NE(stream->wait(scriptState()), wait); |
694 // and used. | |
695 // EXPECT_NE(stream->wait(scriptState()), wait); | |
696 | 688 |
697 stream->wait(scriptState()).then(createCaptor(&onFulfilled), createCaptor(&o
nRejected)); | 689 stream->wait(scriptState()).then(createCaptor(&onFulfilled), createCaptor(&o
nRejected)); |
698 EXPECT_TRUE(onFulfilled.isNull()); | 690 EXPECT_TRUE(onFulfilled.isNull()); |
699 EXPECT_TRUE(onRejected.isNull()); | 691 EXPECT_TRUE(onRejected.isNull()); |
700 | 692 |
701 isolate()->RunMicrotasks(); | 693 isolate()->RunMicrotasks(); |
702 EXPECT_EQ("undefined", onFulfilled); | 694 EXPECT_EQ("undefined", onFulfilled); |
703 EXPECT_TRUE(onRejected.isNull()); | 695 EXPECT_TRUE(onRejected.isNull()); |
704 } | 696 } |
705 | 697 |
706 TEST_F(ReadableStreamTest, ReadableArrayBufferCompileTest) | 698 TEST_F(ReadableStreamTest, ReadableArrayBufferCompileTest) |
707 { | 699 { |
708 // This test tests if ReadableStreamImpl<ArrayBuffer> can be instantiated. | 700 // This test tests if ReadableStreamImpl<ArrayBuffer> can be instantiated. |
709 { | 701 { |
710 InSequence s; | 702 InSequence s; |
711 EXPECT_CALL(*m_underlyingSource, startSource(&m_exceptionState)).WillOnc
e(Return(ScriptPromise())); | 703 EXPECT_CALL(*m_underlyingSource, startSource(&m_exceptionState)).WillOnc
e(Return(ScriptPromise())); |
712 } | 704 } |
713 | 705 |
714 new ReadableStreamImpl<ReadableStreamChunkTypeTraits<ArrayBuffer> >(scriptSt
ate(), m_underlyingSource, &m_exceptionState); | 706 new ReadableStreamImpl<ReadableStreamChunkTypeTraits<ArrayBuffer> >(scriptSt
ate(), m_underlyingSource, &m_exceptionState); |
715 } | 707 } |
716 | 708 |
717 } // namespace blink | 709 } // namespace blink |
718 | 710 |
OLD | NEW |