[Streams API] Collecting a ReadableStreamReader should not unlock its stream
[WebKit-https.git] / Source / WebCore / Modules / streams / ReadableStream.h
index 263247ba828b0815830ba10a8657b74dad0bb31d..a1c84ed61b3fde1ff2da4357338a1bc99cda1fd3 100644 (file)
@@ -58,10 +58,13 @@ public:
     virtual ~ReadableStream();
 
     ReadableStreamReader* reader() { return m_reader; }
-    void lock(ReadableStreamReader& reader) { m_reader = &reader; }
-    void release() { m_reader = nullptr; }
     virtual Ref<ReadableStreamReader> createReader() = 0;
 
+    bool isLocked() const { return m_isLocked; }
+    void lock(ReadableStreamReader&);
+    void release();
+    void releaseButKeepLocked();
+
     State internalState() { return m_state; }
 
 protected:
@@ -75,8 +78,29 @@ private:
     State m_state;
     Ref<ReadableStreamSource> m_source;
     ReadableStreamReader* m_reader { nullptr };
+    bool m_isLocked { false };
 };
 
+inline void ReadableStream::lock(ReadableStreamReader& reader)
+{
+    m_reader = &reader;
+    m_isLocked = true;
+}
+
+inline void ReadableStream::release()
+{
+    m_reader = nullptr;
+    m_isLocked = false;
+}
+
+inline void ReadableStream::releaseButKeepLocked()
+{
+    m_reader = nullptr;
+    m_isLocked = true;
+}
+
+
+
 }
 
 #endif