Bug 1909074. Don't pass OFFSET_BY_ORIGIN to GetResultingTransformMatrix when it's...
[gecko.git] / dom / streams / WritableStreamDefaultWriter.h
blob487a504cd13fa536eec0e1d20448ca3924543a49
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim:set ts=2 sw=2 sts=2 et cindent: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #ifndef mozilla_dom_WritableStreamDefaultWriter_h
8 #define mozilla_dom_WritableStreamDefaultWriter_h
10 #include "js/TypeDecls.h"
11 #include "js/Value.h"
12 #include "mozilla/Attributes.h"
13 #include "mozilla/ErrorResult.h"
14 #include "mozilla/dom/BindingDeclarations.h"
15 #include "mozilla/dom/QueuingStrategyBinding.h"
17 #include "nsCycleCollectionParticipant.h"
18 #include "nsWrapperCache.h"
20 namespace mozilla::dom {
22 class Promise;
23 class WritableStream;
25 class WritableStreamDefaultWriter final : public nsISupports,
26 public nsWrapperCache {
27 public:
28 NS_DECL_CYCLE_COLLECTING_ISUPPORTS
29 NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(WritableStreamDefaultWriter)
31 protected:
32 ~WritableStreamDefaultWriter();
34 public:
35 explicit WritableStreamDefaultWriter(nsIGlobalObject* aGlobal);
37 // Slot Getter/Setters:
38 public:
39 WritableStream* GetStream() const { return mStream; }
40 void SetStream(WritableStream* aStream) { mStream = aStream; }
42 Promise* ReadyPromise() const { return mReadyPromise; }
43 void SetReadyPromise(Promise* aPromise);
45 Promise* ClosedPromise() const { return mClosedPromise; }
46 void SetClosedPromise(Promise* aPromise);
48 public:
49 nsIGlobalObject* GetParentObject() const { return mGlobal; }
51 JSObject* WrapObject(JSContext* aCx,
52 JS::Handle<JSObject*> aGivenProto) override;
54 // IDL Methods
55 static already_AddRefed<WritableStreamDefaultWriter> Constructor(
56 const GlobalObject& aGlobal, WritableStream& aStream, ErrorResult& aRv);
58 already_AddRefed<Promise> Closed();
59 already_AddRefed<Promise> Ready();
61 Nullable<double> GetDesiredSize(ErrorResult& aRv);
63 MOZ_CAN_RUN_SCRIPT already_AddRefed<Promise> Abort(
64 JSContext* aCx, JS::Handle<JS::Value> aReason, ErrorResult& aRv);
66 MOZ_CAN_RUN_SCRIPT already_AddRefed<Promise> Close(JSContext* aCx,
67 ErrorResult& aRv);
69 void ReleaseLock(JSContext* aCx);
71 MOZ_CAN_RUN_SCRIPT already_AddRefed<Promise> Write(
72 JSContext* aCx, JS::Handle<JS::Value> aChunk, ErrorResult& aRv);
74 // Internal Slots:
75 private:
76 nsCOMPtr<nsIGlobalObject> mGlobal;
77 RefPtr<WritableStream> mStream;
78 RefPtr<Promise> mReadyPromise;
79 RefPtr<Promise> mClosedPromise;
82 namespace streams_abstract {
84 void SetUpWritableStreamDefaultWriter(WritableStreamDefaultWriter* aWriter,
85 WritableStream* aStream,
86 ErrorResult& aRv);
88 void WritableStreamDefaultWriterEnsureClosedPromiseRejected(
89 WritableStreamDefaultWriter* aWriter, JS::Handle<JS::Value> aError);
91 void WritableStreamDefaultWriterEnsureReadyPromiseRejected(
92 WritableStreamDefaultWriter* aWriter, JS::Handle<JS::Value> aError);
94 Nullable<double> WritableStreamDefaultWriterGetDesiredSize(
95 WritableStreamDefaultWriter* aWriter);
97 void WritableStreamDefaultWriterRelease(JSContext* aCx,
98 WritableStreamDefaultWriter* aWriter);
100 MOZ_CAN_RUN_SCRIPT already_AddRefed<Promise> WritableStreamDefaultWriterWrite(
101 JSContext* aCx, WritableStreamDefaultWriter* aWriter,
102 JS::Handle<JS::Value> aChunk, ErrorResult& aRv);
104 MOZ_CAN_RUN_SCRIPT already_AddRefed<Promise>
105 WritableStreamDefaultWriterCloseWithErrorPropagation(
106 JSContext* aCx, WritableStreamDefaultWriter* aWriter, ErrorResult& aRv);
108 } // namespace streams_abstract
110 } // namespace mozilla::dom
112 #endif // mozilla_dom_WritableStreamDefaultWriter_h