Commit 91315dd2 authored by Nidhi Jaju's avatar Nidhi Jaju Committed by Commit Bot

Add WebIDL files for ReadableStreamBYOBReader

This CL adds the WebIDL files and relevant C++ stubs for
the ReadableStreamBYOBReader class according the the Streams
API Standard[1]. It also adds a ReadableStreamBYOBReadResult
dictionary needed by the read() function in the reader.

This feature will be runtime enabled under the flag
"ReadableByteStream".

[1] https://streams.spec.whatwg.org/#readablestreambyobreader

Bug: 614302
Change-Id: I91fea585574e12bc868bf35931c6e0783177e687
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2513952
Commit-Queue: Nidhi Jaju <nidhijaju@google.com>
Reviewed-by: default avatarYutaka Hirano <yhirano@chromium.org>
Reviewed-by: default avatarAdam Rice <ricea@chromium.org>
Cr-Commit-Position: refs/heads/master@{#823912}
parent 06090507
...@@ -271,6 +271,8 @@ generated_dictionary_sources_in_core = [ ...@@ -271,6 +271,8 @@ generated_dictionary_sources_in_core = [
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_property_definition.h", "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_property_definition.h",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_queuing_strategy_init.cc", "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_queuing_strategy_init.cc",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_queuing_strategy_init.h", "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_queuing_strategy_init.h",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_readable_stream_byob_read_result.cc",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_readable_stream_byob_read_result.h",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_readable_writable_pair.cc", "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_readable_writable_pair.cc",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_readable_writable_pair.h", "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_readable_writable_pair.h",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_reporting_observer_options.cc", "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_reporting_observer_options.cc",
...@@ -1025,6 +1027,8 @@ generated_interface_sources_in_core = [ ...@@ -1025,6 +1027,8 @@ generated_interface_sources_in_core = [
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_range.h", "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_range.h",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_readable_stream.cc", "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_readable_stream.cc",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_readable_stream.h", "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_readable_stream.h",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_readable_stream_byob_reader.cc",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_readable_stream_byob_reader.h",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_readable_stream_default_controller.cc", "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_readable_stream_default_controller.cc",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_readable_stream_default_controller.h", "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_readable_stream_default_controller.h",
"$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_readable_stream_default_reader.cc", "$root_gen_dir/third_party/blink/renderer/bindings/core/v8/v8_readable_stream_default_reader.cc",
......
...@@ -484,6 +484,8 @@ static_idl_files_in_core = get_path_info( ...@@ -484,6 +484,8 @@ static_idl_files_in_core = get_path_info(
"//third_party/blink/renderer/core/streams/count_queuing_strategy.idl", "//third_party/blink/renderer/core/streams/count_queuing_strategy.idl",
"//third_party/blink/renderer/core/streams/queuing_strategy_init.idl", "//third_party/blink/renderer/core/streams/queuing_strategy_init.idl",
"//third_party/blink/renderer/core/streams/readable_stream.idl", "//third_party/blink/renderer/core/streams/readable_stream.idl",
"//third_party/blink/renderer/core/streams/readable_stream_byob_reader.idl",
"//third_party/blink/renderer/core/streams/readable_stream_byob_read_result.idl",
"//third_party/blink/renderer/core/streams/readable_stream_default_controller.idl", "//third_party/blink/renderer/core/streams/readable_stream_default_controller.idl",
"//third_party/blink/renderer/core/streams/readable_stream_default_reader.idl", "//third_party/blink/renderer/core/streams/readable_stream_default_reader.idl",
"//third_party/blink/renderer/core/streams/readable_writable_pair.idl", "//third_party/blink/renderer/core/streams/readable_writable_pair.idl",
......
...@@ -334,6 +334,7 @@ core_interface_idl_files_core_only = ...@@ -334,6 +334,7 @@ core_interface_idl_files_core_only =
"streams/byte_length_queuing_strategy.idl", "streams/byte_length_queuing_strategy.idl",
"streams/count_queuing_strategy.idl", "streams/count_queuing_strategy.idl",
"streams/readable_stream.idl", "streams/readable_stream.idl",
"streams/readable_stream_byob_reader.idl",
"streams/readable_stream_default_controller.idl", "streams/readable_stream_default_controller.idl",
"streams/readable_stream_default_reader.idl", "streams/readable_stream_default_reader.idl",
"streams/transform_stream.idl", "streams/transform_stream.idl",
...@@ -736,6 +737,7 @@ core_dictionary_idl_files = ...@@ -736,6 +737,7 @@ core_dictionary_idl_files =
"mojo/test/mojo_interface_request_event_init.idl", "mojo/test/mojo_interface_request_event_init.idl",
"page/scrolling/scroll_state_init.idl", "page/scrolling/scroll_state_init.idl",
"resize_observer/resize_observer_options.idl", "resize_observer/resize_observer_options.idl",
"streams/readable_stream_byob_read_result.idl",
"streams/readable_writable_pair.idl", "streams/readable_writable_pair.idl",
"streams/stream_pipe_options.idl", "streams/stream_pipe_options.idl",
"streams/queuing_strategy_init.idl", "streams/queuing_strategy_init.idl",
......
...@@ -17,6 +17,8 @@ blink_core_sources_streams = [ ...@@ -17,6 +17,8 @@ blink_core_sources_streams = [
"queuing_strategy_common.h", "queuing_strategy_common.h",
"readable_stream.cc", "readable_stream.cc",
"readable_stream.h", "readable_stream.h",
"readable_stream_byob_reader.cc",
"readable_stream_byob_reader.h",
"readable_stream_default_controller.cc", "readable_stream_default_controller.cc",
"readable_stream_default_controller.h", "readable_stream_default_controller.h",
"readable_stream_default_controller_with_script_scope.cc", "readable_stream_default_controller_with_script_scope.cc",
......
// Copyright 2020 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.
// https://streams.spec.whatwg.org/#dictdef-readablestreambyobreadresult
dictionary ReadableStreamBYOBReadResult {
ArrayBufferView value;
boolean done;
};
// Copyright 2020 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.
#include "third_party/blink/renderer/core/streams/readable_stream_byob_reader.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
#include "third_party/blink/renderer/core/streams/stream_promise_resolver.h"
#include "third_party/blink/renderer/core/typed_arrays/dom_array_buffer_view.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/bindings/script_state.h"
#include "third_party/blink/renderer/platform/bindings/v8_binding.h"
namespace blink {
ReadableStreamBYOBReader* ReadableStreamBYOBReader::Create(
ScriptState* script_state,
ReadableStream* stream,
ExceptionState& exception_state) {
ThrowUnimplemented(exception_state);
return nullptr;
}
ReadableStreamBYOBReader::ReadableStreamBYOBReader(
ScriptState* script_state,
ReadableStream* stream,
ExceptionState& exception_state) {
ThrowUnimplemented(exception_state);
return;
}
ReadableStreamBYOBReader::~ReadableStreamBYOBReader() = default;
ScriptPromise ReadableStreamBYOBReader::read(ScriptState* script_state,
NotShared<DOMArrayBufferView> view,
ExceptionState& exception_state) {
return RejectUnimplemented(script_state);
}
void ReadableStreamBYOBReader::releaseLock(ScriptState* script_state,
ExceptionState& exception_state) {
ThrowUnimplemented(exception_state);
return;
}
ScriptPromise ReadableStreamBYOBReader::closed(
ScriptState* script_state) const {
return RejectUnimplemented(script_state);
}
ScriptPromise ReadableStreamBYOBReader::cancel(
ScriptState* script_state,
ExceptionState& exception_state) {
return RejectUnimplemented(script_state);
}
ScriptPromise ReadableStreamBYOBReader::cancel(
ScriptState* script_state,
ScriptValue reason,
ExceptionState& exception_state) {
return RejectUnimplemented(script_state);
}
void ReadableStreamBYOBReader::ThrowUnimplemented(
ExceptionState& exception_state) {
exception_state.ThrowTypeError("unimplemented");
}
ScriptPromise ReadableStreamBYOBReader::RejectUnimplemented(
ScriptState* script_state) {
return StreamPromiseResolver::CreateRejected(
script_state, v8::Exception::TypeError(V8String(
script_state->GetIsolate(), "unimplemented")))
->GetScriptPromise(script_state);
}
} // namespace blink
// Copyright 2020 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 THIRD_PARTY_BLINK_RENDERER_CORE_STREAMS_READABLE_STREAM_BYOB_READER_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_STREAMS_READABLE_STREAM_BYOB_READER_H_
#include "third_party/blink/renderer/bindings/core/v8/script_value.h"
#include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/typed_arrays/array_buffer_view_helpers.h"
#include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
namespace blink {
class ExceptionState;
class ScriptPromise;
class ScriptState;
class ReadableStream;
class DOMArrayBufferView;
class CORE_EXPORT ReadableStreamBYOBReader : public ScriptWrappable {
DEFINE_WRAPPERTYPEINFO();
public:
static ReadableStreamBYOBReader* Create(ScriptState*,
ReadableStream* stream,
ExceptionState&);
// https://streams.spec.whatwg.org/#byob-reader-constructor
ReadableStreamBYOBReader(ScriptState*,
ReadableStream* stream,
ExceptionState&);
~ReadableStreamBYOBReader() override;
// https://streams.spec.whatwg.org/#byob-reader-read
ScriptPromise read(ScriptState*,
NotShared<DOMArrayBufferView> view,
ExceptionState&);
// https://streams.spec.whatwg.org/#byob-reader-release-lock
void releaseLock(ScriptState*, ExceptionState&);
// https://streams.spec.whatwg.org/#generic-reader-closed
ScriptPromise closed(ScriptState*) const;
// https://streams.spec.whatwg.org/#generic-reader-cancel
ScriptPromise cancel(ScriptState*, ExceptionState&);
ScriptPromise cancel(ScriptState*, ScriptValue reason, ExceptionState&);
private:
friend class ReadableStream;
static void ThrowUnimplemented(ExceptionState&);
static ScriptPromise RejectUnimplemented(ScriptState*);
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_CORE_STREAMS_READABLE_STREAM_BYOB_READER_H_
// Copyright 2020 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.
// https://streams.spec.whatwg.org/#byob-reader-class-definition
[
Exposed=(Window,Worker,Worklet),
RuntimeEnabled=ReadableByteStream
] interface ReadableStreamBYOBReader {
[CallWith=ScriptState, RaisesException] constructor(ReadableStream stream);
[CallWith=ScriptState, RaisesException] Promise<ReadableStreamBYOBReadResult> read(ArrayBufferView view);
[CallWith=ScriptState, RaisesException] void releaseLock();
// includes ReadableStreamGenericReader
[CallWith=ScriptState] readonly attribute Promise<void> closed;
[CallWith=ScriptState, RaisesException] Promise<void> cancel(optional any reason);
};
...@@ -1605,6 +1605,9 @@ ...@@ -1605,6 +1605,9 @@
// Enabled when blink::features::kRawClipboard is enabled. // Enabled when blink::features::kRawClipboard is enabled.
name: "RawClipboard", name: "RawClipboard",
}, },
{
name: "ReadableByteStream",
},
{ {
name: "RemotePlayback", name: "RemotePlayback",
status: "stable", status: "stable",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment