Diff
Modified: trunk/LayoutTests/ChangeLog (182796 => 182797)
--- trunk/LayoutTests/ChangeLog 2015-04-14 15:15:35 UTC (rev 182796)
+++ trunk/LayoutTests/ChangeLog 2015-04-14 16:13:32 UTC (rev 182797)
@@ -1,3 +1,18 @@
+2015-04-14 Commit Queue <[email protected]>
+
+ Unreviewed, rolling out r182794.
+ https://bugs.webkit.org/show_bug.cgi?id=143714
+
+ readable-stream-templated.html fails on Debug bots (Requested
+ by youenn on #webkit).
+
+ Reverted changeset:
+
+ "[Streams API] ReadableStream constructor start function
+ should be able to close the stream"
+ https://bugs.webkit.org/show_bug.cgi?id=143363
+ http://trac.webkit.org/changeset/182794
+
2015-04-14 Xabier Rodriguez Calvar <[email protected]> and Youenn Fablet <[email protected]>
[Streams API] ReadableStream constructor start function should be able to close the stream
Modified: trunk/LayoutTests/streams/reference-implementation/readable-stream-reader-expected.txt (182796 => 182797)
--- trunk/LayoutTests/streams/reference-implementation/readable-stream-reader-expected.txt 2015-04-14 15:15:35 UTC (rev 182796)
+++ trunk/LayoutTests/streams/reference-implementation/readable-stream-reader-expected.txt 2015-04-14 16:13:32 UTC (rev 182797)
@@ -11,7 +11,7 @@
PASS Constructing a ReadableStreamReader directly should be OK if the stream is errored
FAIL Reading from a reader for an empty stream will wait until a chunk is available read is not implemented
FAIL cancel() on a reader releases the reader before calling through cancel is not implemented
-PASS closed should be fulfilled after stream is closed (.closed access before acquiring)
+TIMEOUT closed should be fulfilled after stream is closed (.closed access before acquiring) Test timed out
FAIL closed should be fulfilled after reader releases its lock (multiple stream locks) releaseLock is not implemented
FAIL Multiple readers can access the stream in sequence read is not implemented
FAIL Cannot use an already-released reader to unlock a stream again releaseLock is not implemented
Modified: trunk/LayoutTests/streams/reference-implementation/readable-stream-templated-expected.txt (182796 => 182797)
--- trunk/LayoutTests/streams/reference-implementation/readable-stream-templated-expected.txt 2015-04-14 15:15:35 UTC (rev 182796)
+++ trunk/LayoutTests/streams/reference-implementation/readable-stream-templated-expected.txt 2015-04-14 16:13:32 UTC (rev 182797)
@@ -15,10 +15,10 @@
PASS Running templatedRSClosed with ReadableStream (closed via call in start)
FAIL cancel() should return a distinct fulfilled promise each time cancel is not implemented
PASS getReader() should be OK
-PASS should be able to acquire multiple readers, since they are all auto-released
+FAIL should be able to acquire multiple readers, since they are all auto-released ReadableStream is locked
PASS Running templatedRSClosedReader with ReadableStream (closed via call in start) reader
FAIL read() should fulfill with { value: undefined, done: true } read is not implemented
-PASS closed should fulfill with undefined
+TIMEOUT closed should fulfill with undefined Test timed out
FAIL cancel() should return a distinct fulfilled promise each time cancel is not implemented
PASS Running templatedRSClosed with ReadableStream (closed via cancel)
FAIL cancel() should return a distinct fulfilled promise each time cancel is not implemented
Modified: trunk/Source/WebCore/ChangeLog (182796 => 182797)
--- trunk/Source/WebCore/ChangeLog 2015-04-14 15:15:35 UTC (rev 182796)
+++ trunk/Source/WebCore/ChangeLog 2015-04-14 16:13:32 UTC (rev 182797)
@@ -1,3 +1,18 @@
+2015-04-14 Commit Queue <[email protected]>
+
+ Unreviewed, rolling out r182794.
+ https://bugs.webkit.org/show_bug.cgi?id=143714
+
+ readable-stream-templated.html fails on Debug bots (Requested
+ by youenn on #webkit).
+
+ Reverted changeset:
+
+ "[Streams API] ReadableStream constructor start function
+ should be able to close the stream"
+ https://bugs.webkit.org/show_bug.cgi?id=143363
+ http://trac.webkit.org/changeset/182794
+
2015-04-14 Per Arne Vollan <[email protected]>
[WinCairo] Unreviewed build fix after r182707.
Modified: trunk/Source/WebCore/Modules/streams/ReadableStream.cpp (182796 => 182797)
--- trunk/Source/WebCore/Modules/streams/ReadableStream.cpp 2015-04-14 15:15:35 UTC (rev 182796)
+++ trunk/Source/WebCore/Modules/streams/ReadableStream.cpp 2015-04-14 16:13:32 UTC (rev 182797)
@@ -58,16 +58,6 @@
#endif
}
-void ReadableStream::changeStateToClosed()
-{
- if (m_state != State::Readable)
- return;
- m_state = State::Closed;
- if (m_reader)
- m_reader->changeStateToClosed();
- ASSERT(!m_reader);
-}
-
void ReadableStream::start()
{
notImplemented();
Modified: trunk/Source/WebCore/Modules/streams/ReadableStream.h (182796 => 182797)
--- trunk/Source/WebCore/Modules/streams/ReadableStream.h 2015-04-14 15:15:35 UTC (rev 182796)
+++ trunk/Source/WebCore/Modules/streams/ReadableStream.h 2015-04-14 16:13:32 UTC (rev 182797)
@@ -68,7 +68,6 @@
State internalState() { return m_state; }
void start();
- void changeStateToClosed();
protected:
ReadableStream(ScriptExecutionContext&, Ref<ReadableStreamSource>&&);
Modified: trunk/Source/WebCore/Modules/streams/ReadableStreamReader.cpp (182796 => 182797)
--- trunk/Source/WebCore/Modules/streams/ReadableStreamReader.cpp 2015-04-14 15:15:35 UTC (rev 182796)
+++ trunk/Source/WebCore/Modules/streams/ReadableStreamReader.cpp 2015-04-14 16:13:32 UTC (rev 182797)
@@ -41,13 +41,14 @@
ReadableStreamReader::ReadableStreamReader(ReadableStream& stream)
: ActiveDOMObject(stream.scriptExecutionContext())
- , m_stream(&stream)
{
#ifndef NDEBUG
readableStreamReaderCounter.increment();
#endif
suspendIfNeeded();
- initialize();
+ ASSERT_WITH_MESSAGE(!stream.reader(), "A ReadableStream cannot be locked by two readers at the same time.");
+ m_stream = &stream;
+ stream.lock(*this);
}
ReadableStreamReader::~ReadableStreamReader()
@@ -61,46 +62,11 @@
}
}
-void ReadableStreamReader::initialize()
+void ReadableStreamReader::closed(ClosedSuccessCallback, ClosedErrorCallback)
{
- ASSERT_WITH_MESSAGE(!m_stream->isLocked(), "A ReadableStream cannot be locked by two readers at the same time.");
- m_stream->lock(*this);
- if (m_stream->internalState() == ReadableStream::State::Closed) {
- changeStateToClosed();
- return;
- }
+ notImplemented();
}
-void ReadableStreamReader::releaseStream()
-{
- ASSERT(m_stream);
- m_stream->release();
- m_stream = nullptr;
-}
-
-void ReadableStreamReader::closed(ClosedSuccessCallback successCallback, ClosedErrorCallback)
-{
- if (m_state == State::Closed) {
- successCallback();
- return;
- }
- m_closedSuccessCallback = WTF::move(successCallback);
-}
-
-void ReadableStreamReader::changeStateToClosed()
-{
- ASSERT(m_state == State::Readable);
- m_state = State::Closed;
-
- if (m_closedSuccessCallback) {
- ClosedSuccessCallback closedSuccessCallback = WTF::move(m_closedSuccessCallback);
- closedSuccessCallback();
- }
- ASSERT(!m_closedSuccessCallback);
- releaseStream();
- // FIXME: Implement read promise fulfilling.
-}
-
const char* ReadableStreamReader::activeDOMObjectName() const
{
return "ReadableStreamReader";
Modified: trunk/Source/WebCore/Modules/streams/ReadableStreamReader.h (182796 => 182797)
--- trunk/Source/WebCore/Modules/streams/ReadableStreamReader.h 2015-04-14 15:15:35 UTC (rev 182796)
+++ trunk/Source/WebCore/Modules/streams/ReadableStreamReader.h 2015-04-14 16:13:32 UTC (rev 182797)
@@ -46,12 +46,6 @@
// See https://streams.spec.whatwg.org/#reader-class for more information.
class ReadableStreamReader : public ActiveDOMObject, public ScriptWrappable, public RefCounted<ReadableStreamReader> {
public:
- enum class State {
- Readable,
- Closed,
- Errored
- };
-
virtual ~ReadableStreamReader();
ReadableStream* stream() { return m_stream.get(); }
@@ -60,23 +54,15 @@
typedef std::function<void()> ClosedErrorCallback;
void closed(ClosedSuccessCallback, ClosedErrorCallback);
- void changeStateToClosed();
-
protected:
ReadableStreamReader(ReadableStream&);
- void releaseStream();
-
private:
// ActiveDOMObject API.
const char* activeDOMObjectName() const override;
bool canSuspendForPageCache() const override;
- void initialize();
RefPtr<ReadableStream> m_stream;
- State m_state { State::Readable };
-
- ClosedSuccessCallback m_closedSuccessCallback;
};
}
Modified: trunk/Source/WebCore/bindings/js/JSDOMPromise.h (182796 => 182797)
--- trunk/Source/WebCore/bindings/js/JSDOMPromise.h 2015-04-14 15:15:35 UTC (rev 182796)
+++ trunk/Source/WebCore/bindings/js/JSDOMPromise.h 2015-04-14 16:13:32 UTC (rev 182797)
@@ -98,13 +98,6 @@
}
template<>
-inline void DeferredWrapper::resolve<JSC::JSValue>(const JSC::JSValue& value)
-{
- JSC::ExecState* exec = m_globalObject->globalExec();
- JSC::JSLockHolder locker(exec);
- resolve(exec, value);
-}
-template<>
inline void DeferredWrapper::resolve<Vector<unsigned char>>(const Vector<unsigned char>& result)
{
JSC::ExecState* exec = m_globalObject->globalExec();
Modified: trunk/Source/WebCore/bindings/js/JSReadableStreamReaderCustom.cpp (182796 => 182797)
--- trunk/Source/WebCore/bindings/js/JSReadableStreamReaderCustom.cpp 2015-04-14 15:15:35 UTC (rev 182796)
+++ trunk/Source/WebCore/bindings/js/JSReadableStreamReaderCustom.cpp 2015-04-14 16:13:32 UTC (rev 182797)
@@ -71,8 +71,9 @@
{
JSPromiseDeferred* promiseDeferred = getOrCreatePromiseDeferredFromObject(exec, this, globalObject(), closedPromiseSlotName());
DeferredWrapper wrapper(exec, globalObject(), promiseDeferred);
- auto successCallback = [wrapper]() mutable {
- wrapper.resolve(jsUndefined());
+ auto successCallback = [this, wrapper]() mutable {
+ // FIXME: return jsUndefined().
+ wrapper.resolve(&impl());
};
auto failureCallback = [this, wrapper]() mutable {
// FIXME: return stored error.
Modified: trunk/Source/WebCore/bindings/js/ReadableStreamJSSource.cpp (182796 => 182797)
--- trunk/Source/WebCore/bindings/js/ReadableStreamJSSource.cpp 2015-04-14 15:15:35 UTC (rev 182796)
+++ trunk/Source/WebCore/bindings/js/ReadableStreamJSSource.cpp 2015-04-14 16:13:32 UTC (rev 182797)
@@ -64,21 +64,6 @@
return propertySlot.getValue(exec, propertyName);
}
-// This slot name is used to store the JSReadableStream in created JS functions (enqueue, close...).
-// This allows retrieving the corresponding JSReadableStream when executing the JS function.
-static JSC::PrivateName& readableStreamSlotName()
-{
- static NeverDestroyed<JSC::PrivateName> readableStreamSlotName("readableStream");
- return readableStreamSlotName;
-}
-
-static ReadableJSStream& getReadableJSStream(ExecState* exec)
-{
- JSReadableStream* jsReadableStream = jsDynamicCast<JSReadableStream*>(getInternalSlotFromObject(exec, exec->callee(), readableStreamSlotName()));
- ASSERT(jsReadableStream);
- return static_cast<ReadableJSStream&>(jsReadableStream->impl());
-}
-
static inline JSValue getPropertyFromObject(ExecState* exec, JSObject* object, const char* identifier)
{
return object->get(exec, Identifier::fromString(exec, identifier));
@@ -121,19 +106,11 @@
return JSFunction::create(exec->vm(), exec->callee()->globalObject(), 1, String(), notImplementedFunction);
}
-static EncodedJSValue JSC_HOST_CALL closeReadableStreamFunction(ExecState* exec)
+static inline JSFunction* createReadableStreamCloseFunction(ExecState* exec)
{
- getReadableJSStream(exec).changeStateToClosed();
- return JSValue::encode(jsUndefined());
+ return JSFunction::create(exec->vm(), exec->callee()->globalObject(), 0, String(), notImplementedFunction);
}
-static inline JSFunction* createReadableStreamCloseFunction(ExecState* exec, JSReadableStream* readableStream)
-{
- JSFunction* closeFunction = JSFunction::create(exec->vm(), exec->callee()->globalObject(), 0, String(), closeReadableStreamFunction);
- setInternalSlotToObject(exec, closeFunction, readableStreamSlotName(), readableStream);
- return closeFunction;
-}
-
static inline JSFunction* createReadableStreamErrorFunction(ExecState* exec)
{
return JSFunction::create(exec->vm(), exec->callee()->globalObject(), 1, String(), notImplementedFunction);
@@ -147,10 +124,10 @@
});
}
-static inline JSObject* createReadableStreamController(JSC::ExecState* exec, JSReadableStream* readableStream)
+static inline JSObject* createReadableStreamController(JSC::ExecState* exec)
{
JSFunction* enqueueFunction = createReadableStreamEnqueueFunction(exec);
- JSFunction* closeFunction = createReadableStreamCloseFunction(exec, readableStream);
+ JSFunction* closeFunction = createReadableStreamCloseFunction(exec);
JSFunction* errorFunction = createReadableStreamErrorFunction(exec);
JSObject* controller = JSFinalObject::create(exec->vm(), JSFinalObject::createStructure(exec->vm(), exec->callee()->globalObject(), jsNull(), 3));
@@ -164,7 +141,7 @@
{
JSLockHolder lock(exec);
- m_controller.set(exec->vm(), createReadableStreamController(exec, readableStream));
+ m_controller.set(exec->vm(), createReadableStreamController(exec));
JSValue startFunction = getPropertyFromObject(exec, m_source.get(), "start");
if (!startFunction.isFunction()) {