Bug 1610775 [wpt PR 21336] - Update urllib3 to 1.25.8, a=testonly
[gecko.git] / dom / canvas / CanvasRenderingContextHelper.h
blob6b7c67aa21df21c7465d28ffcb42728d1b3c790c
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
4 * You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef MOZILLA_DOM_CANVASRENDERINGCONTEXTHELPER_H_
7 #define MOZILLA_DOM_CANVASRENDERINGCONTEXTHELPER_H_
9 #include "mozilla/dom/BindingDeclarations.h"
10 #include "mozilla/layers/LayersTypes.h"
11 #include "nsSize.h"
13 class nsICanvasRenderingContextInternal;
14 class nsIGlobalObject;
16 namespace mozilla {
18 class ErrorResult;
20 namespace dom {
22 class BlobCallback;
23 class EncodeCompleteCallback;
25 enum class CanvasContextType : uint8_t {
26 NoContext,
27 Canvas2D,
28 WebGL1,
29 WebGL2,
30 ImageBitmap
33 /**
34 * Povides common RenderingContext functionality used by both OffscreenCanvas
35 * and HTMLCanvasElement.
37 class CanvasRenderingContextHelper {
38 public:
39 virtual already_AddRefed<nsISupports> GetContext(
40 JSContext* aCx, const nsAString& aContextId,
41 JS::Handle<JS::Value> aContextOptions, ErrorResult& aRv);
43 virtual bool GetOpaqueAttr() = 0;
45 protected:
46 virtual nsresult UpdateContext(JSContext* aCx,
47 JS::Handle<JS::Value> aNewContextOptions,
48 ErrorResult& aRvForDictionaryInit);
50 virtual nsresult ParseParams(JSContext* aCx, const nsAString& aType,
51 const JS::Value& aEncoderOptions,
52 nsAString& outParams,
53 bool* const outCustomParseOptions);
55 void ToBlob(JSContext* aCx, nsIGlobalObject* global, BlobCallback& aCallback,
56 const nsAString& aType, JS::Handle<JS::Value> aParams,
57 bool aUsePlaceholder, ErrorResult& aRv);
59 void ToBlob(JSContext* aCx, nsIGlobalObject* aGlobal,
60 EncodeCompleteCallback* aCallback, const nsAString& aType,
61 JS::Handle<JS::Value> aParams, bool aUsePlaceholder,
62 ErrorResult& aRv);
64 virtual already_AddRefed<nsICanvasRenderingContextInternal> CreateContext(
65 CanvasContextType aContextType);
67 already_AddRefed<nsICanvasRenderingContextInternal> CreateContextHelper(
68 CanvasContextType aContextType, layers::LayersBackend aCompositorBackend);
70 virtual nsIntSize GetWidthHeight() = 0;
72 CanvasContextType mCurrentContextType;
73 nsCOMPtr<nsICanvasRenderingContextInternal> mCurrentContext;
76 } // namespace dom
77 } // namespace mozilla
79 #endif // MOZILLA_DOM_CANVASRENDERINGCONTEXTHELPER_H_