Commit 36038225 authored by Eero Häkkinen's avatar Eero Häkkinen Committed by Commit Bot

[FileSystem] Move FileSystemWrite.write type checking to IDL

This aligns the IDL file with the spec and simplifies the implementation
because hand written type checking is not needed.

Change-Id: Ie2cdb6f2cbbc8d4b85af607fb0071ee57baaa695
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1546292Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarTaiju Tsuiki <tzik@chromium.org>
Commit-Queue: Eero Häkkinen <eero.hakkinen@intel.com>
Cr-Commit-Position: refs/heads/master@{#646251}
parent a0e3cf17
......@@ -24,6 +24,8 @@ bindings_modules_generated_union_type_files = [
"$bindings_modules_v8_output_dir/array_buffer_view_or_blob_or_string_or_form_data.h",
"$bindings_modules_v8_output_dir/audio_context_latency_category_or_double.cc",
"$bindings_modules_v8_output_dir/audio_context_latency_category_or_double.h",
"$bindings_modules_v8_output_dir/blob_or_readable_stream.cc",
"$bindings_modules_v8_output_dir/blob_or_readable_stream.h",
"$bindings_modules_v8_output_dir/boolean_or_constrain_boolean_parameters.cc",
"$bindings_modules_v8_output_dir/boolean_or_constrain_boolean_parameters.h",
"$bindings_modules_v8_output_dir/boolean_or_media_track_constraints.cc",
......
......@@ -7,6 +7,7 @@
#include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_blob.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_readable_stream.h"
#include "third_party/blink/renderer/bindings/modules/v8/blob_or_readable_stream.h"
#include "third_party/blink/renderer/core/dom/dom_exception.h"
#include "third_party/blink/renderer/core/fetch/fetch_data_loader.h"
#include "third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer.h"
......@@ -24,20 +25,12 @@ FileSystemWriter::FileSystemWriter(mojom::blink::FileWriterPtr writer)
ScriptPromise FileSystemWriter::write(ScriptState* script_state,
uint64_t position,
ScriptValue data,
const BlobOrReadableStream& data,
ExceptionState& exception_state) {
v8::Isolate* isolate = script_state->GetIsolate();
if (V8Blob::HasInstance(data.V8Value(), isolate)) {
Blob* blob = V8Blob::ToImpl(data.V8Value().As<v8::Object>());
return WriteBlob(script_state, position, blob);
}
if (!V8ReadableStream::HasInstance(data.V8Value(), isolate)) {
if (!exception_state.HadException())
exception_state.ThrowTypeError("data should be a Blob or ReadableStream");
return ScriptPromise();
}
return WriteStream(script_state, position,
V8ReadableStream::ToImpl(data.V8Value().As<v8::Object>()),
DCHECK(!data.IsNull());
if (data.IsBlob())
return WriteBlob(script_state, position, data.GetAsBlob());
return WriteStream(script_state, position, data.GetAsReadableStream(),
exception_state);
}
......
......@@ -12,13 +12,13 @@
namespace blink {
class Blob;
class BlobOrReadableStream;
class ExceptionState;
class FetchDataLoader;
class ReadableStream;
class ScriptPromise;
class ScriptPromiseResolver;
class ScriptState;
class ScriptValue;
class FileSystemWriter final : public ScriptWrappable {
DEFINE_WRAPPERTYPEINFO();
......@@ -28,7 +28,7 @@ class FileSystemWriter final : public ScriptWrappable {
ScriptPromise write(ScriptState*,
uint64_t position,
ScriptValue data,
const BlobOrReadableStream& data,
ExceptionState&);
ScriptPromise truncate(ScriptState*, uint64_t size);
ScriptPromise close(ScriptState*);
......
......@@ -7,9 +7,7 @@
NoInterfaceObject,
RuntimeEnabled=WritableFiles
] interface FileSystemWriter {
// TODO(mek): 'any' really is 'Blob or ReadableStream', but that's not
// currently supported by our bindings.
[CallWith=ScriptState, RaisesException] Promise<void> write(unsigned long long position, any data);
[CallWith=ScriptState, RaisesException] Promise<void> write(unsigned long long position, (Blob or ReadableStream) data);
[CallWith=ScriptState] Promise<void> truncate(unsigned long long size);
[CallWith=ScriptState] Promise<void> close();
......
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