| Index: Source/core/streams/ReadableStreamTest.cpp
|
| diff --git a/Source/core/streams/ReadableStreamTest.cpp b/Source/core/streams/ReadableStreamTest.cpp
|
| index 6986a8669058c802344c0c700a33cde05b1eb107..89596efa81f3ba2bfc3516412af6a82a7f894666 100644
|
| --- a/Source/core/streams/ReadableStreamTest.cpp
|
| +++ b/Source/core/streams/ReadableStreamTest.cpp
|
| @@ -105,8 +105,17 @@ public:
|
|
|
| StringStream* construct()
|
| {
|
| + Checkpoint checkpoint;
|
| + {
|
| + InSequence s;
|
| + EXPECT_CALL(checkpoint, Call(0));
|
| + EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1);
|
| + EXPECT_CALL(checkpoint, Call(1));
|
| + }
|
| StringStream* stream = new StringStream(scriptState()->executionContext(), m_underlyingSource);
|
| + checkpoint.Call(0);
|
| stream->didSourceStart();
|
| + checkpoint.Call(1);
|
| return stream;
|
| }
|
|
|
| @@ -118,6 +127,14 @@ public:
|
|
|
| TEST_F(ReadableStreamTest, Start)
|
| {
|
| + Checkpoint checkpoint;
|
| + {
|
| + InSequence s;
|
| + EXPECT_CALL(checkpoint, Call(0));
|
| + EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1);
|
| + EXPECT_CALL(checkpoint, Call(1));
|
| + }
|
| +
|
| StringStream* stream = new StringStream(scriptState()->executionContext(), m_underlyingSource);
|
| EXPECT_FALSE(m_exceptionState.hadException());
|
| EXPECT_FALSE(stream->isStarted());
|
| @@ -125,11 +142,13 @@ TEST_F(ReadableStreamTest, Start)
|
| EXPECT_FALSE(stream->isPulling());
|
| EXPECT_EQ(stream->state(), ReadableStream::Waiting);
|
|
|
| + checkpoint.Call(0);
|
| stream->didSourceStart();
|
| + checkpoint.Call(1);
|
|
|
| EXPECT_TRUE(stream->isStarted());
|
| EXPECT_FALSE(stream->isDraining());
|
| - EXPECT_FALSE(stream->isPulling());
|
| + EXPECT_TRUE(stream->isPulling());
|
| EXPECT_EQ(stream->state(), ReadableStream::Waiting);
|
| }
|
|
|
| @@ -157,22 +176,12 @@ TEST_F(ReadableStreamTest, WaitOnWaiting)
|
|
|
| EXPECT_EQ(ReadableStream::Waiting, stream->state());
|
| EXPECT_TRUE(stream->isStarted());
|
| - EXPECT_FALSE(stream->isPulling());
|
| -
|
| - {
|
| - InSequence s;
|
| - EXPECT_CALL(checkpoint, Call(0));
|
| - EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1);
|
| - EXPECT_CALL(checkpoint, Call(1));
|
| - }
|
| + EXPECT_TRUE(stream->isPulling());
|
|
|
| - checkpoint.Call(0);
|
| ScriptPromise p = stream->wait(scriptState());
|
| ScriptPromise q = stream->wait(scriptState());
|
| - checkpoint.Call(1);
|
|
|
| EXPECT_EQ(ReadableStream::Waiting, stream->state());
|
| - EXPECT_TRUE(stream->isPulling());
|
| EXPECT_EQ(q, p);
|
| }
|
|
|
| @@ -188,19 +197,17 @@ TEST_F(ReadableStreamTest, WaitDuringStarting)
|
| {
|
| InSequence s;
|
| EXPECT_CALL(checkpoint, Call(0));
|
| - EXPECT_CALL(checkpoint, Call(1));
|
| EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1);
|
| + EXPECT_CALL(checkpoint, Call(1));
|
| }
|
|
|
| - checkpoint.Call(0);
|
| stream->wait(scriptState());
|
| - checkpoint.Call(1);
|
| -
|
| - EXPECT_TRUE(stream->isPulling());
|
| -
|
| + checkpoint.Call(0);
|
| stream->didSourceStart();
|
| + checkpoint.Call(1);
|
|
|
| EXPECT_EQ(ReadableStream::Waiting, stream->state());
|
| + EXPECT_TRUE(stream->isStarted());
|
| EXPECT_TRUE(stream->isPulling());
|
| }
|
|
|
| @@ -209,11 +216,6 @@ TEST_F(ReadableStreamTest, WaitAndError)
|
| StringStream* stream = construct();
|
| String onFulfilled, onRejected;
|
|
|
| - {
|
| - InSequence s;
|
| - EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1);
|
| - }
|
| -
|
| ScriptPromise promise = stream->wait(scriptState());
|
| promise.then(createCaptor(&onFulfilled), createCaptor(&onRejected));
|
| EXPECT_EQ(ReadableStream::Waiting, stream->state());
|
| @@ -283,11 +285,6 @@ TEST_F(ReadableStreamTest, WaitAndEnqueue)
|
| String onFulfilled, onRejected;
|
| EXPECT_EQ(ReadableStream::Waiting, stream->state());
|
|
|
| - {
|
| - InSequence s;
|
| - EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1);
|
| - }
|
| -
|
| stream->wait(scriptState()).then(createCaptor(&onFulfilled), createCaptor(&onRejected));
|
| isolate()->RunMicrotasks();
|
|
|
| @@ -314,11 +311,6 @@ TEST_F(ReadableStreamTest, WaitAndEnqueueAndError)
|
| String onFulfilled, onRejected;
|
| EXPECT_EQ(ReadableStream::Waiting, stream->state());
|
|
|
| - {
|
| - InSequence s;
|
| - EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1);
|
| - }
|
| -
|
| ScriptPromise promise = stream->wait(scriptState());
|
| promise.then(createCaptor(&onFulfilled), createCaptor(&onRejected));
|
| isolate()->RunMicrotasks();
|
| @@ -352,11 +344,6 @@ TEST_F(ReadableStreamTest, CloseWhenWaiting)
|
|
|
| StringStream* stream = construct();
|
|
|
| - {
|
| - InSequence s;
|
| - EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1);
|
| - }
|
| -
|
| EXPECT_EQ(ReadableStream::Waiting, stream->state());
|
| stream->wait(scriptState()).then(createCaptor(&onWaitFulfilled), createCaptor(&onWaitRejected));
|
| stream->closed(scriptState()).then(createCaptor(&onClosedFulfilled), createCaptor(&onClosedRejected));
|
| @@ -475,7 +462,7 @@ TEST_F(ReadableStreamTest, EnqueuedAndRead)
|
| EXPECT_TRUE(onRejected.isNull());
|
| }
|
|
|
| -TEST_F(ReadableStreamTest, EnqueTwiceAndRead)
|
| +TEST_F(ReadableStreamTest, EnqueueTwiceAndRead)
|
| {
|
| StringStream* stream = construct();
|
| Checkpoint checkpoint;
|
| @@ -483,6 +470,7 @@ TEST_F(ReadableStreamTest, EnqueTwiceAndRead)
|
| {
|
| InSequence s;
|
| EXPECT_CALL(checkpoint, Call(0));
|
| + EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1);
|
| EXPECT_CALL(checkpoint, Call(1));
|
| }
|
|
|
| @@ -492,14 +480,14 @@ TEST_F(ReadableStreamTest, EnqueTwiceAndRead)
|
| EXPECT_EQ(ReadableStream::Readable, stream->state());
|
| EXPECT_FALSE(stream->isPulling());
|
|
|
| - checkpoint.Call(0);
|
| String chunk;
|
| + checkpoint.Call(0);
|
| EXPECT_TRUE(stream->read(scriptState(), m_exceptionState).toString(chunk));
|
| checkpoint.Call(1);
|
| EXPECT_FALSE(m_exceptionState.hadException());
|
| EXPECT_EQ("hello", chunk);
|
| EXPECT_EQ(ReadableStream::Readable, stream->state());
|
| - EXPECT_FALSE(stream->isPulling());
|
| + EXPECT_TRUE(stream->isPulling());
|
| EXPECT_FALSE(stream->isDraining());
|
|
|
| ScriptPromise newPromise = stream->wait(scriptState());
|
| @@ -509,7 +497,6 @@ TEST_F(ReadableStreamTest, EnqueTwiceAndRead)
|
| TEST_F(ReadableStreamTest, CloseWhenReadable)
|
| {
|
| StringStream* stream = construct();
|
| - String onWaitFulfilled, onWaitRejected;
|
| String onClosedFulfilled, onClosedRejected;
|
|
|
| stream->closed(scriptState()).then(createCaptor(&onClosedFulfilled), createCaptor(&onClosedRejected));
|
| @@ -538,21 +525,16 @@ TEST_F(ReadableStreamTest, CloseWhenReadable)
|
| EXPECT_EQ("bye", chunk);
|
| EXPECT_FALSE(m_exceptionState.hadException());
|
|
|
| - EXPECT_NE(promise, stream->wait(scriptState()));
|
| - stream->wait(scriptState()).then(createCaptor(&onWaitFulfilled), createCaptor(&onWaitRejected));
|
| + EXPECT_EQ(promise, stream->wait(scriptState()));
|
|
|
| EXPECT_EQ(ReadableStream::Closed, stream->state());
|
| EXPECT_FALSE(stream->isPulling());
|
| EXPECT_TRUE(stream->isDraining());
|
|
|
| - EXPECT_TRUE(onWaitFulfilled.isNull());
|
| - EXPECT_TRUE(onWaitRejected.isNull());
|
| EXPECT_TRUE(onClosedFulfilled.isNull());
|
| EXPECT_TRUE(onClosedRejected.isNull());
|
|
|
| isolate()->RunMicrotasks();
|
| - EXPECT_EQ("undefined", onWaitFulfilled);
|
| - EXPECT_TRUE(onWaitRejected.isNull());
|
| EXPECT_EQ("undefined", onClosedFulfilled);
|
| EXPECT_TRUE(onClosedRejected.isNull());
|
| }
|
| @@ -604,13 +586,12 @@ TEST_F(ReadableStreamTest, CancelWhenWaiting)
|
|
|
| {
|
| InSequence s;
|
| - EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1);
|
| EXPECT_CALL(*m_underlyingSource, cancelSource(scriptState(), reason)).WillOnce(Return(promise));
|
| }
|
|
|
| EXPECT_EQ(ReadableStream::Waiting, stream->state());
|
| ScriptPromise wait = stream->wait(scriptState());
|
| - EXPECT_EQ(promise, stream->cancel(scriptState(), reason));
|
| + EXPECT_NE(promise, stream->cancel(scriptState(), reason));
|
| EXPECT_EQ(ReadableStream::Closed, stream->state());
|
| EXPECT_EQ(stream->wait(scriptState()), wait);
|
|
|
| @@ -627,6 +608,7 @@ TEST_F(ReadableStreamTest, CancelWhenReadable)
|
| {
|
| StringStream* stream = construct();
|
| String onFulfilled, onRejected;
|
| + String onCancelFulfilled, onCancelRejected;
|
| ScriptValue reason(scriptState(), v8String(scriptState()->isolate(), "reason"));
|
| ScriptPromise promise = ScriptPromise::cast(scriptState(), v8String(scriptState()->isolate(), "hello"));
|
|
|
| @@ -638,18 +620,21 @@ TEST_F(ReadableStreamTest, CancelWhenReadable)
|
| stream->enqueue("hello");
|
| ScriptPromise wait = stream->wait(scriptState());
|
| EXPECT_EQ(ReadableStream::Readable, stream->state());
|
| - EXPECT_EQ(promise, stream->cancel(scriptState(), reason));
|
| +
|
| + ScriptPromise cancelResult = stream->cancel(scriptState(), reason);
|
| + cancelResult.then(createCaptor(&onCancelFulfilled), createCaptor(&onCancelRejected));
|
| +
|
| + EXPECT_NE(promise, cancelResult);
|
| EXPECT_EQ(ReadableStream::Closed, stream->state());
|
|
|
| - EXPECT_NE(stream->wait(scriptState()), wait);
|
| + EXPECT_EQ(stream->wait(scriptState()), wait);
|
|
|
| - stream->wait(scriptState()).then(createCaptor(&onFulfilled), createCaptor(&onRejected));
|
| - EXPECT_TRUE(onFulfilled.isNull());
|
| - EXPECT_TRUE(onRejected.isNull());
|
| + EXPECT_TRUE(onCancelFulfilled.isNull());
|
| + EXPECT_TRUE(onCancelRejected.isNull());
|
|
|
| isolate()->RunMicrotasks();
|
| - EXPECT_EQ("undefined", onFulfilled);
|
| - EXPECT_TRUE(onRejected.isNull());
|
| + EXPECT_EQ("undefined", onCancelFulfilled);
|
| + EXPECT_TRUE(onCancelRejected.isNull());
|
| }
|
|
|
| TEST_F(ReadableStreamTest, ReadableArrayBufferCompileTest)
|
|
|