Bug 1776680 [wpt PR 34603] - [@container] Test invalidation of font-relative units...
[gecko.git] / dom / streams / TransformStreamDefaultController.h
blob9dd1756bea15246f7ddd1cb6ca7e7967a7ff2a89
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 DOM_STREAMS_TRANSFORMSTREAMDEFAULTCONTROLLER_H_
8 #define DOM_STREAMS_TRANSFORMSTREAMDEFAULTCONTROLLER_H_
10 #include "js/TypeDecls.h"
11 #include "mozilla/AlreadyAddRefed.h"
12 #include "mozilla/dom/BindingDeclarations.h"
13 #include "mozilla/dom/QueuingStrategyBinding.h"
15 #include "mozilla/dom/TransformerBinding.h"
16 #include "nsCycleCollectionParticipant.h"
17 #include "nsWrapperCache.h"
19 namespace mozilla::dom {
21 class TransformStream;
22 class TransformerAlgorithms;
24 class TransformStreamDefaultController final : public nsISupports,
25 public nsWrapperCache {
26 public:
27 NS_DECL_CYCLE_COLLECTING_ISUPPORTS
28 NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TransformStreamDefaultController)
30 MOZ_KNOWN_LIVE TransformStream* Stream();
31 void SetStream(TransformStream& aStream);
32 TransformerAlgorithms* Algorithms();
33 void SetAlgorithms(TransformerAlgorithms* aTransformerAlgorithms);
35 explicit TransformStreamDefaultController(nsIGlobalObject* aGlobal);
37 protected:
38 ~TransformStreamDefaultController();
40 public:
41 nsIGlobalObject* GetParentObject() const { return mGlobal; }
42 JSObject* WrapObject(JSContext* aCx,
43 JS::Handle<JSObject*> aGivenProto) override;
45 Nullable<double> GetDesiredSize() const;
47 MOZ_CAN_RUN_SCRIPT void Enqueue(JSContext* aCx, JS::Handle<JS::Value> aChunk,
48 ErrorResult& aRv);
49 MOZ_CAN_RUN_SCRIPT void Error(JSContext* aCx, JS::Handle<JS::Value> aError,
50 ErrorResult& aRv);
51 MOZ_CAN_RUN_SCRIPT void Terminate(JSContext* aCx, ErrorResult& aRv);
53 private:
54 nsCOMPtr<nsIGlobalObject> mGlobal;
56 // Internal slots
57 RefPtr<TransformStream> mStream;
58 RefPtr<TransformerAlgorithms> mTransformerAlgorithms;
61 void SetUpTransformStreamDefaultControllerFromTransformer(
62 JSContext* aCx, TransformStream& aStream,
63 JS::Handle<JSObject*> aTransformer, Transformer& aTransformerDict);
65 } // namespace mozilla::dom
67 #endif // DOM_STREAMS_TRANSFORMSTREAMDEFAULTCONTROLLER_H_