blob: 5d3d7d27f96193e5f6754f5ff771683896331dd9 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef ReadableStreamOperations_h
#define ReadableStreamOperations_h
#include "bindings/core/v8/ScriptPromise.h"
#include "bindings/core/v8/ScriptValue.h"
#include <v8.h>
namespace blink {
class UnderlyingSourceBase;
class ExceptionState;
class ScriptState;
// This class has various methods for ReadableStream[Reader] implemented with
// V8 Extras.
// All methods should be called in an appropriate V8 context. All ScriptValue
// arguments must not be empty.
class CORE_EXPORT ReadableStreamOperations {
STATIC_ONLY(ReadableStreamOperations);
public:
// createReadableStreamWithExternalController
// If the caller supplies an invalid strategy (e.g. one that returns
// negative sizes, or doesn't have appropriate properties), this will crash.
static ScriptValue createReadableStream(ScriptState*, UnderlyingSourceBase*, ScriptValue strategy);
// createBuiltInCountQueuingStrategy
static ScriptValue createCountQueuingStrategy(ScriptState*, size_t highWaterMark);
// AcquireReadableStreamDefaultReader
// This function assumes |isReadableStream(stream)|.
// Returns an empty value and throws an error via the ExceptionState when
// errored.
static ScriptValue getReader(ScriptState*, ScriptValue stream, ExceptionState&);
// IsReadableStream
static bool isReadableStream(ScriptState*, ScriptValue);
// IsReadableStreamDisturbed
// This function assumes |isReadableStream(stream)|.
static bool isDisturbed(ScriptState*, ScriptValue stream);
// IsReadableStreamLocked
// This function assumes |isReadableStream(stream)|.
static bool isLocked(ScriptState*, ScriptValue stream);
// IsReadableStreamReadable
// This function assumes |isReadableStream(stream)|.
static bool isReadable(ScriptState*, ScriptValue stream);
// IsReadableStreamClosed
// This function assumes |isReadableStream(stream)|.
static bool isClosed(ScriptState*, ScriptValue stream);
// IsReadableStreamErrored
// This function assumes |isReadableStream(stream)|.
static bool isErrored(ScriptState*, ScriptValue stream);
// IsReadableStreamDefaultReader
static bool isReadableStreamDefaultReader(ScriptState*, ScriptValue);
// ReadableStreamDefaultReaderRead
// This function assumes |isReadableStreamDefaultReader(reader)|.
static ScriptPromise defaultReaderRead(ScriptState*, ScriptValue reader);
// ReadableStreamTee
// This function assumes |isReadableStream(stream)| and |!isLocked(stream)|
static void tee(ScriptState*, ScriptValue stream, ScriptValue* newStream1, ScriptValue* newStream2);
};
} // namespace blink
#endif // ReadableStreamOperations_h