Backed out changeset 89c3a814819c (bug 1798459) Backed out changeset 83b1e1b3c168 (bug 1798459) Backed out changeset 179d6204b3bb (bug 1798459) Backed out changeset b371599177b6 (bug 1798459) Backed out changeset b68c63983ae7 (bug 1798459) Backed out changeset 3b1eaafa31d2 (bug 1798459) Backed out changeset d9b3c17a5549 (bug 1798459) Backed out changeset 243631cf4913 (bug 1798459) Backed out changeset 7d2ffb13d1cc (bug 1798459) Backed out changeset 1a86d4746c65 (bug 1798459) Backed out changeset 0f197d402d63 (bug 1798459) Backed out changeset 5e9ca1b1c95c (bug 1798459) Backed out changeset 4f07a77a4abd (bug 1798459) Backed out changeset 985f88adbc8e (bug 1798459) Backed out changeset 326b8b13aca3 (bug 1798459) Backed out changeset 9f4f237f33bb (bug 1798459) Backed out changeset cc31ee7652a8 (bug 1798459) Backed out changeset 3ed207332879 (bug 1798459) Backed out changeset 7e8b4f40c31d (bug 1798459) Backed out changeset e3740924348f (bug 1798459) Backed out changeset 8c6510e97a9c (bug 1798459) Backed out changeset 5bfb07498c30 (bug 1798459) Backed out changeset db0c3d15084b (bug 1798459) Backed out changeset f92f19dc1a9f (bug 1798459) Backed out changeset cc82403152c1 (bug 1777361) Backed out changeset 21d087d3ca5d (bug 1798459) Backed out changeset da1781f32050 (bug 1798459) Backed out changeset f768630d046c (bug 1798459) Backed out changeset 5ad098d5b4b9 (bug 1769057) Backed out changeset e450859e6f0a (bug 1769057)
99 lines
3.3 KiB
C++
99 lines
3.3 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef DOM_FS_FILESYSTEMWRITABLEFILESTREAM_H_
|
|
#define DOM_FS_FILESYSTEMWRITABLEFILESTREAM_H_
|
|
|
|
#include "mozilla/dom/WritableStream.h"
|
|
|
|
namespace mozilla {
|
|
|
|
class ErrorResult;
|
|
|
|
namespace dom {
|
|
|
|
class ArrayBufferViewOrArrayBufferOrBlobOrUSVStringOrWriteParams;
|
|
|
|
class FileSystemWritableFileStream final : public WritableStream {
|
|
public:
|
|
NS_DECL_ISUPPORTS_INHERITED
|
|
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(FileSystemWritableFileStream,
|
|
WritableStream)
|
|
|
|
class StreamAlgorithms final : public UnderlyingSinkAlgorithmsBase {
|
|
NS_DECL_ISUPPORTS_INHERITED
|
|
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(StreamAlgorithms,
|
|
UnderlyingSinkAlgorithmsBase)
|
|
|
|
explicit StreamAlgorithms(FileSystemWritableFileStream& aStream)
|
|
: mStream(&aStream) {}
|
|
|
|
// Streams algorithms
|
|
void StartCallback(JSContext* aCx,
|
|
WritableStreamDefaultController& aController,
|
|
JS::MutableHandle<JS::Value> aRetVal,
|
|
ErrorResult& aRv) override {
|
|
// https://streams.spec.whatwg.org/#writablestream-set-up
|
|
// Step 1. Let startAlgorithm be an algorithm that returns undefined.
|
|
aRetVal.setUndefined();
|
|
}
|
|
|
|
MOZ_CAN_RUN_SCRIPT already_AddRefed<Promise> WriteCallback(
|
|
JSContext* aCx, JS::Handle<JS::Value> aChunk,
|
|
WritableStreamDefaultController& aController,
|
|
ErrorResult& aRv) override;
|
|
|
|
MOZ_CAN_RUN_SCRIPT already_AddRefed<Promise> AbortCallback(
|
|
JSContext* aCx, const Optional<JS::Handle<JS::Value>>& aReason,
|
|
ErrorResult& aRv) override {
|
|
// https://streams.spec.whatwg.org/#writablestream-set-up
|
|
// Step 3.3. Return a promise resolved with undefined.
|
|
// (No abort algorithm is defined for this interface)
|
|
return Promise::CreateResolvedWithUndefined(mStream->GetParentObject(),
|
|
aRv);
|
|
}
|
|
|
|
MOZ_CAN_RUN_SCRIPT already_AddRefed<Promise> CloseCallback(
|
|
JSContext* aCx, ErrorResult& aRv) override {
|
|
return mStream->Close(aRv);
|
|
};
|
|
|
|
private:
|
|
~StreamAlgorithms() = default;
|
|
|
|
RefPtr<FileSystemWritableFileStream> mStream;
|
|
};
|
|
|
|
static already_AddRefed<FileSystemWritableFileStream> MaybeCreate(
|
|
nsIGlobalObject* aGlobal);
|
|
|
|
// WebIDL Boilerplate
|
|
JSObject* WrapObject(JSContext* aCx,
|
|
JS::Handle<JSObject*> aGivenProto) override;
|
|
|
|
// WebIDL Interface
|
|
already_AddRefed<Promise> Write(
|
|
const ArrayBufferViewOrArrayBufferOrBlobOrUSVStringOrWriteParams& aData,
|
|
ErrorResult& aError);
|
|
|
|
already_AddRefed<Promise> Seek(uint64_t aPosition, ErrorResult& aError);
|
|
|
|
already_AddRefed<Promise> Truncate(uint64_t aSize, ErrorResult& aError);
|
|
|
|
already_AddRefed<Promise> Close(ErrorResult& aRv);
|
|
|
|
private:
|
|
explicit FileSystemWritableFileStream(nsIGlobalObject* aGlobal)
|
|
: WritableStream(aGlobal) {}
|
|
|
|
~FileSystemWritableFileStream() = default;
|
|
};
|
|
|
|
} // namespace dom
|
|
} // namespace mozilla
|
|
|
|
#endif // DOM_FS_FILESYSTEMWRITABLEFILESTREAM_H_
|