| Index: Source/core/streams/ReadableStreamTest.cpp
 | 
| diff --git a/Source/core/streams/ReadableStreamTest.cpp b/Source/core/streams/ReadableStreamTest.cpp
 | 
| index edbc0c9ea68db308df297e055869e882da74a868..d87182fc1244baef89ed5b2e407c7c685dbfc664 100644
 | 
| --- a/Source/core/streams/ReadableStreamTest.cpp
 | 
| +++ b/Source/core/streams/ReadableStreamTest.cpp
 | 
| @@ -49,11 +49,11 @@ private:
 | 
|      String* m_value;
 | 
|  };
 | 
|  
 | 
| -class MockUnderlyingSource : public UnderlyingSource {
 | 
| +class MockUnderlyingSource : public GarbageCollectedFinalized<MockUnderlyingSource>, public UnderlyingSource {
 | 
| +    USING_GARBAGE_COLLECTED_MIXIN(MockUnderlyingSource);
 | 
|  public:
 | 
|      virtual ~MockUnderlyingSource() { }
 | 
|  
 | 
| -    MOCK_METHOD1(startSource, ScriptPromise(ExceptionState*));
 | 
|      MOCK_METHOD0(pullSource, void());
 | 
|      MOCK_METHOD2(cancelSource, ScriptPromise(ScriptState*, ScriptValue));
 | 
|  };
 | 
| @@ -96,16 +96,10 @@ public:
 | 
|          return StringCapturingFunction::create(isolate(), value);
 | 
|      }
 | 
|  
 | 
| -    // Note: This function calls RunMicrotasks.
 | 
|      StringStream* construct()
 | 
|      {
 | 
| -        RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scriptState());
 | 
| -        ScriptPromise promise = resolver->promise();
 | 
| -        resolver->resolve();
 | 
| -        EXPECT_CALL(*m_underlyingSource, startSource(&m_exceptionState)).WillOnce(Return(promise));
 | 
| -
 | 
| -        StringStream* stream = new StringStream(scriptState(), m_underlyingSource, &m_exceptionState);
 | 
| -        isolate()->RunMicrotasks();
 | 
| +        StringStream* stream = new StringStream(scriptState()->executionContext(), m_underlyingSource);
 | 
| +        stream->didSourceStart();
 | 
|          return stream;
 | 
|      }
 | 
|  
 | 
| @@ -115,27 +109,16 @@ public:
 | 
|      ExceptionState m_exceptionState;
 | 
|  };
 | 
|  
 | 
| -TEST_F(ReadableStreamTest, Construct)
 | 
| +TEST_F(ReadableStreamTest, Start)
 | 
|  {
 | 
| -    RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scriptState());
 | 
| -    ScriptPromise promise = resolver->promise();
 | 
| -    {
 | 
| -        InSequence s;
 | 
| -        EXPECT_CALL(*m_underlyingSource, startSource(&m_exceptionState)).WillOnce(Return(promise));
 | 
| -    }
 | 
| -    StringStream* stream = new StringStream(scriptState(), m_underlyingSource, &m_exceptionState);
 | 
| +    StringStream* stream = new StringStream(scriptState()->executionContext(), m_underlyingSource);
 | 
|      EXPECT_FALSE(m_exceptionState.hadException());
 | 
|      EXPECT_FALSE(stream->isStarted());
 | 
|      EXPECT_FALSE(stream->isDraining());
 | 
|      EXPECT_FALSE(stream->isPulling());
 | 
|      EXPECT_EQ(stream->state(), ReadableStream::Waiting);
 | 
|  
 | 
| -    isolate()->RunMicrotasks();
 | 
| -
 | 
| -    EXPECT_FALSE(stream->isStarted());
 | 
| -
 | 
| -    resolver->resolve();
 | 
| -    isolate()->RunMicrotasks();
 | 
| +    stream->didSourceStart();
 | 
|  
 | 
|      EXPECT_TRUE(stream->isStarted());
 | 
|      EXPECT_FALSE(stream->isDraining());
 | 
| @@ -143,42 +126,16 @@ TEST_F(ReadableStreamTest, Construct)
 | 
|      EXPECT_EQ(stream->state(), ReadableStream::Waiting);
 | 
|  }
 | 
|  
 | 
| -TEST_F(ReadableStreamTest, ConstructError)
 | 
| +TEST_F(ReadableStreamTest, StartFail)
 | 
|  {
 | 
| -    {
 | 
| -        InSequence s;
 | 
| -        EXPECT_CALL(*m_underlyingSource, startSource(&m_exceptionState))
 | 
| -            .WillOnce(DoAll(Invoke(ThrowError("hello")), Return(ScriptPromise())));
 | 
| -    }
 | 
| -    new StringStream(scriptState(), m_underlyingSource, &m_exceptionState);
 | 
| -    EXPECT_TRUE(m_exceptionState.hadException());
 | 
| -}
 | 
| -
 | 
| -TEST_F(ReadableStreamTest, StartFailAsynchronously)
 | 
| -{
 | 
| -    RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scriptState());
 | 
| -    ScriptPromise promise = resolver->promise();
 | 
| -    {
 | 
| -        InSequence s;
 | 
| -        EXPECT_CALL(*m_underlyingSource, startSource(&m_exceptionState)).WillOnce(Return(promise));
 | 
| -    }
 | 
| -    StringStream* stream = new StringStream(scriptState(), m_underlyingSource, &m_exceptionState);
 | 
| +    StringStream* stream = new StringStream(scriptState()->executionContext(), m_underlyingSource);
 | 
|      EXPECT_FALSE(m_exceptionState.hadException());
 | 
|      EXPECT_FALSE(stream->isStarted());
 | 
|      EXPECT_FALSE(stream->isDraining());
 | 
|      EXPECT_FALSE(stream->isPulling());
 | 
|      EXPECT_EQ(stream->state(), ReadableStream::Waiting);
 | 
|  
 | 
| -    isolate()->RunMicrotasks();
 | 
| -
 | 
| -    EXPECT_FALSE(stream->isStarted());
 | 
| -    EXPECT_FALSE(stream->isDraining());
 | 
| -    EXPECT_FALSE(stream->isPulling());
 | 
| -    EXPECT_EQ(stream->state(), ReadableStream::Waiting);
 | 
| -
 | 
| -    resolver->reject();
 | 
|      stream->error(DOMException::create(NotFoundError));
 | 
| -    isolate()->RunMicrotasks();
 | 
|  
 | 
|      EXPECT_FALSE(stream->isStarted());
 | 
|      EXPECT_FALSE(stream->isDraining());
 | 
| @@ -214,13 +171,7 @@ TEST_F(ReadableStreamTest, WaitOnWaiting)
 | 
|  
 | 
|  TEST_F(ReadableStreamTest, WaitDuringStarting)
 | 
|  {
 | 
| -    RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scriptState());
 | 
| -    ScriptPromise promise = resolver->promise();
 | 
| -    {
 | 
| -        InSequence s;
 | 
| -        EXPECT_CALL(*m_underlyingSource, startSource(&m_exceptionState)).WillOnce(Return(promise));
 | 
| -    }
 | 
| -    StringStream* stream = new StringStream(scriptState(), m_underlyingSource, &m_exceptionState);
 | 
| +    StringStream* stream = new StringStream(scriptState()->executionContext(), m_underlyingSource);
 | 
|      Checkpoint checkpoint;
 | 
|  
 | 
|      EXPECT_EQ(ReadableStream::Waiting, stream->state());
 | 
| @@ -240,8 +191,7 @@ TEST_F(ReadableStreamTest, WaitDuringStarting)
 | 
|  
 | 
|      EXPECT_TRUE(stream->isPulling());
 | 
|  
 | 
| -    resolver->resolve();
 | 
| -    isolate()->RunMicrotasks();
 | 
| +    stream->didSourceStart();
 | 
|  
 | 
|      EXPECT_EQ(ReadableStream::Waiting, stream->state());
 | 
|      EXPECT_TRUE(stream->isPulling());
 | 
| @@ -442,7 +392,7 @@ TEST_F(ReadableStreamTest, ReadWhenWaiting)
 | 
|      EXPECT_EQ(ReadableStream::Waiting, stream->state());
 | 
|      EXPECT_FALSE(m_exceptionState.hadException());
 | 
|  
 | 
| -    stream->read(scriptState(), &m_exceptionState);
 | 
| +    stream->read(scriptState(), m_exceptionState);
 | 
|      EXPECT_EQ(ReadableStream::Waiting, stream->state());
 | 
|      EXPECT_TRUE(m_exceptionState.hadException());
 | 
|      EXPECT_EQ(V8TypeError, m_exceptionState.code());
 | 
| @@ -457,7 +407,7 @@ TEST_F(ReadableStreamTest, ReadWhenClosed)
 | 
|      EXPECT_EQ(ReadableStream::Closed, stream->state());
 | 
|      EXPECT_FALSE(m_exceptionState.hadException());
 | 
|  
 | 
| -    stream->read(scriptState(), &m_exceptionState);
 | 
| +    stream->read(scriptState(), m_exceptionState);
 | 
|      EXPECT_EQ(ReadableStream::Closed, stream->state());
 | 
|      EXPECT_TRUE(m_exceptionState.hadException());
 | 
|      EXPECT_EQ(V8TypeError, m_exceptionState.code());
 | 
| @@ -475,7 +425,7 @@ TEST_F(ReadableStreamTest, ReadWhenErrored)
 | 
|      EXPECT_EQ(ReadableStream::Errored, stream->state());
 | 
|      EXPECT_FALSE(m_exceptionState.hadException());
 | 
|  
 | 
| -    stream->read(scriptState(), &m_exceptionState);
 | 
| +    stream->read(scriptState(), m_exceptionState);
 | 
|      EXPECT_EQ(ReadableStream::Errored, stream->state());
 | 
|      EXPECT_TRUE(m_exceptionState.hadException());
 | 
|      EXPECT_EQ(notFoundExceptionCode, m_exceptionState.code());
 | 
| @@ -502,7 +452,7 @@ TEST_F(ReadableStreamTest, EnqueuedAndRead)
 | 
|  
 | 
|      checkpoint.Call(0);
 | 
|      String chunk;
 | 
| -    EXPECT_TRUE(stream->read(scriptState(), &m_exceptionState).toString(chunk));
 | 
| +    EXPECT_TRUE(stream->read(scriptState(), m_exceptionState).toString(chunk));
 | 
|      checkpoint.Call(1);
 | 
|      EXPECT_FALSE(m_exceptionState.hadException());
 | 
|      EXPECT_EQ("hello", chunk);
 | 
| @@ -537,7 +487,7 @@ TEST_F(ReadableStreamTest, EnqueTwiceAndRead)
 | 
|  
 | 
|      checkpoint.Call(0);
 | 
|      String chunk;
 | 
| -    EXPECT_TRUE(stream->read(scriptState(), &m_exceptionState).toString(chunk));
 | 
| +    EXPECT_TRUE(stream->read(scriptState(), m_exceptionState).toString(chunk));
 | 
|      checkpoint.Call(1);
 | 
|      EXPECT_FALSE(m_exceptionState.hadException());
 | 
|      EXPECT_EQ("hello", chunk);
 | 
| @@ -567,7 +517,7 @@ TEST_F(ReadableStreamTest, CloseWhenReadable)
 | 
|      EXPECT_TRUE(stream->isDraining());
 | 
|  
 | 
|      String chunk;
 | 
| -    EXPECT_TRUE(stream->read(scriptState(), &m_exceptionState).toString(chunk));
 | 
| +    EXPECT_TRUE(stream->read(scriptState(), m_exceptionState).toString(chunk));
 | 
|      EXPECT_EQ("hello", chunk);
 | 
|      EXPECT_EQ(promise, stream->wait(scriptState()));
 | 
|  
 | 
| @@ -577,7 +527,7 @@ TEST_F(ReadableStreamTest, CloseWhenReadable)
 | 
|      EXPECT_FALSE(stream->isPulling());
 | 
|      EXPECT_TRUE(stream->isDraining());
 | 
|  
 | 
| -    EXPECT_TRUE(stream->read(scriptState(), &m_exceptionState).toString(chunk));
 | 
| +    EXPECT_TRUE(stream->read(scriptState(), m_exceptionState).toString(chunk));
 | 
|      EXPECT_EQ("bye", chunk);
 | 
|      EXPECT_FALSE(m_exceptionState.hadException());
 | 
|  
 | 
| @@ -698,12 +648,7 @@ TEST_F(ReadableStreamTest, CancelWhenReadable)
 | 
|  TEST_F(ReadableStreamTest, ReadableArrayBufferCompileTest)
 | 
|  {
 | 
|      // This test tests if ReadableStreamImpl<ArrayBuffer> can be instantiated.
 | 
| -    {
 | 
| -        InSequence s;
 | 
| -        EXPECT_CALL(*m_underlyingSource, startSource(&m_exceptionState)).WillOnce(Return(ScriptPromise()));
 | 
| -    }
 | 
| -
 | 
| -    new ReadableStreamImpl<ReadableStreamChunkTypeTraits<ArrayBuffer> >(scriptState(), m_underlyingSource, &m_exceptionState);
 | 
| +    new ReadableStreamImpl<ReadableStreamChunkTypeTraits<ArrayBuffer> >(scriptState()->executionContext(), m_underlyingSource);
 | 
|  }
 | 
|  
 | 
|  } // namespace blink
 | 
| 
 |