Index: Source/core/streams/ReadableStream.cpp |
diff --git a/Source/core/streams/ReadableStream.cpp b/Source/core/streams/ReadableStream.cpp |
index fa4cfeae8820a6cbb5dac01e09d9b5791ebef8a2..0f1a80cf61547873af993ab1d7c6070e855e8280 100644 |
--- a/Source/core/streams/ReadableStream.cpp |
+++ b/Source/core/streams/ReadableStream.cpp |
@@ -12,7 +12,6 @@ |
#include "core/dom/DOMException.h" |
#include "core/dom/ExceptionCode.h" |
#include "core/dom/ExecutionContext.h" |
-#include "core/streams/ExclusiveStreamReader.h" |
#include "core/streams/UnderlyingSource.h" |
namespace blink { |
@@ -32,32 +31,6 @@ |
{ |
return ScriptValue(scriptState(), v8::Undefined(scriptState()->isolate())); |
} |
-}; |
- |
-class ResolveWithReady : public ScriptFunction { |
-public: |
- static v8::Handle<v8::Function> create(ScriptState* scriptState, ReadableStream* stream) |
- { |
- return (new ResolveWithReady(scriptState, stream))->bindToV8Function(); |
- } |
- |
- void trace(Visitor* visitor) |
- { |
- visitor->trace(m_stream); |
- ScriptFunction::trace(visitor); |
- } |
- |
-private: |
- ResolveWithReady(ScriptState* scriptState, ReadableStream* stream) |
- : ScriptFunction(scriptState) |
- , m_stream(stream) { } |
- |
- ScriptValue call(ScriptValue value) override |
- { |
- return ScriptValue(scriptState(), m_stream->ready(scriptState()).v8Value()); |
- } |
- |
- Member<ReadableStream> m_stream; |
}; |
} // namespace |
@@ -81,10 +54,18 @@ |
String ReadableStream::stateString() const |
{ |
- if (m_reader) |
+ switch (m_state) { |
+ case Readable: |
+ return "readable"; |
+ case Waiting: |
return "waiting"; |
- |
- return stateToString(m_state); |
+ case Closed: |
+ return "closed"; |
+ case Errored: |
+ return "errored"; |
+ } |
+ ASSERT(false); |
+ return String(); |
} |
bool ReadableStream::enqueuePreliminaryCheck() |
@@ -127,15 +108,13 @@ |
if (m_state == Waiting) { |
m_ready->resolve(ToV8UndefinedGenerator()); |
m_closed->resolve(ToV8UndefinedGenerator()); |
- if (m_reader) |
- m_reader->releaseLock(); |
m_state = Closed; |
} else if (m_state == Readable) { |
m_isDraining = true; |
} |
} |
-void ReadableStream::readInternalPreliminaryCheck(ExceptionState& exceptionState) |
+void ReadableStream::readPreliminaryCheck(ExceptionState& exceptionState) |
{ |
if (m_state == Waiting) { |
exceptionState.throwTypeError("read is called while state is waiting"); |
@@ -151,15 +130,13 @@ |
} |
} |
-void ReadableStream::readInternalPostAction() |
+void ReadableStream::readPostAction() |
{ |
ASSERT(m_state == Readable); |
if (isQueueEmpty()) { |
if (m_isDraining) { |
+ m_closed->resolve(ToV8UndefinedGenerator()); |
m_state = Closed; |
- m_closed->resolve(ToV8UndefinedGenerator()); |
- if (m_reader) |
- m_reader->releaseLock(); |
} else { |
m_ready->reset(); |
m_state = Waiting; |
@@ -168,36 +145,13 @@ |
callPullIfNeeded(); |
} |
-ScriptValue ReadableStream::read(ScriptState* scriptState, ExceptionState& exceptionState) |
-{ |
- if (m_reader) { |
- exceptionState.throwTypeError("this stream is locked to an ExclusiveStreamReader"); |
- return ScriptValue(); |
- } |
- return readInternal(scriptState, exceptionState); |
-} |
- |
ScriptPromise ReadableStream::ready(ScriptState* scriptState) |
{ |
- if (m_reader) { |
- return m_reader->released(scriptState).then(ResolveWithReady::create(scriptState, this)); |
- } |
- |
- if (m_state == Waiting) { |
- return readyInternal(scriptState).then(ResolveWithReady::create(scriptState, this)); |
- } |
- return readyInternal(scriptState); |
-} |
- |
-ScriptPromise ReadableStream::readyInternal(ScriptState* scriptState) |
-{ |
return m_ready->promise(scriptState->world()); |
} |
ScriptPromise ReadableStream::cancel(ScriptState* scriptState, ScriptValue reason) |
{ |
- if (m_reader) |
- return ScriptPromise::reject(scriptState, V8ThrowException::createTypeError(scriptState->isolate(), "this stream is locked to an ExclusiveStreamReader")); |
if (m_state == Closed) |
return ScriptPromise::cast(scriptState, v8::Undefined(scriptState->isolate())); |
if (m_state == Errored) |
@@ -225,8 +179,6 @@ |
m_ready->reject(m_exception); |
m_closed->reject(m_exception); |
m_state = Errored; |
- if (m_reader) |
- m_reader->releaseLock(); |
break; |
case Readable: |
clearQueue(); |
@@ -235,8 +187,6 @@ |
m_ready->reject(m_exception); |
m_closed->reject(m_exception); |
m_state = Errored; |
- if (m_reader) |
- m_reader->releaseLock(); |
break; |
default: |
break; |
@@ -247,29 +197,6 @@ |
{ |
m_isStarted = true; |
callPullIfNeeded(); |
-} |
- |
-ExclusiveStreamReader* ReadableStream::getReader(ExceptionState& exceptionState) |
-{ |
- if (m_state == Closed) { |
- exceptionState.throwTypeError("this stream is already closed"); |
- return nullptr; |
- } |
- if (m_state == Errored) { |
- exceptionState.throwDOMException(m_exception->code(), m_exception->message()); |
- return nullptr; |
- } |
- if (m_reader) { |
- exceptionState.throwTypeError("already locked to an ExclusiveStreamReader"); |
- return nullptr; |
- } |
- return new ExclusiveStreamReader(this); |
-} |
- |
-void ReadableStream::setReader(ExclusiveStreamReader* reader) |
-{ |
- ASSERT((reader && !m_reader) || (!reader && m_reader)); |
- m_reader = reader; |
} |
void ReadableStream::callPullIfNeeded() |
@@ -296,24 +223,7 @@ |
visitor->trace(m_ready); |
visitor->trace(m_closed); |
visitor->trace(m_exception); |
- visitor->trace(m_reader); |
ActiveDOMObject::trace(visitor); |
} |
-String ReadableStream::stateToString(State state) |
-{ |
- switch (state) { |
- case Readable: |
- return "readable"; |
- case Waiting: |
- return "waiting"; |
- case Closed: |
- return "closed"; |
- case Errored: |
- return "errored"; |
- } |
- ASSERT(false); |
- return String(); |
-} |
- |
} // namespace blink |