Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1069)

Unified Diff: Source/core/streams/ReadableStream.cpp

Issue 901013002: Revert of Introduce ExclusiveStreamReader. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/streams/ReadableStream.h ('k') | Source/core/streams/ReadableStream.idl » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « Source/core/streams/ReadableStream.h ('k') | Source/core/streams/ReadableStream.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698