LCOV - code coverage report
Current view: top level - obj-x86_64-pc-linux-gnu/dist/include/mozilla/dom - ImageBitmapBinding.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 166 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 49 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* THIS FILE IS AUTOGENERATED FROM ImageBitmap.webidl BY Codegen.py - DO NOT EDIT */
       2             : 
       3             : #ifndef mozilla_dom_ImageBitmapBinding_h
       4             : #define mozilla_dom_ImageBitmapBinding_h
       5             : 
       6             : #include "js/RootingAPI.h"
       7             : #include "jsfriendapi.h"
       8             : #include "jspubtd.h"
       9             : #include "mozilla/ErrorResult.h"
      10             : #include "mozilla/dom/BindingDeclarations.h"
      11             : #include "mozilla/dom/FakeString.h"
      12             : #include "mozilla/dom/Nullable.h"
      13             : #include "mozilla/dom/TypedArray.h"
      14             : #include "mozilla/dom/UnionMember.h"
      15             : 
      16             : namespace mozilla {
      17             : namespace dom {
      18             : 
      19             : class Blob;
      20             : class CanvasRenderingContext2D;
      21             : struct ChannelPixelLayoutAtoms;
      22             : class HTMLCanvasElement;
      23             : class HTMLImageElement;
      24             : class HTMLVideoElement;
      25             : class ImageBitmap;
      26             : struct ImageBitmapAtoms;
      27             : class ImageData;
      28             : struct NativePropertyHooks;
      29             : class OwningHTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrCanvasRenderingContext2DOrImageBitmapOrArrayBufferViewOrArrayBuffer;
      30             : class ProtoAndIfaceCache;
      31             : 
      32             : } // namespace dom
      33             : } // namespace mozilla
      34             : 
      35             : namespace mozilla {
      36             : namespace dom {
      37             : 
      38             : enum class ImageBitmapFormat : uint8_t {
      39             :   RGBA32,
      40             :   BGRA32,
      41             :   RGB24,
      42             :   BGR24,
      43             :   GRAY8,
      44             :   YUV444P,
      45             :   YUV422P,
      46             :   YUV420P,
      47             :   YUV420SP_NV12,
      48             :   YUV420SP_NV21,
      49             :   HSV,
      50             :   Lab,
      51             :   DEPTH,
      52             :   EndGuard_
      53             : };
      54             : 
      55             : namespace ImageBitmapFormatValues {
      56             : extern const EnumEntry strings[14];
      57             : } // namespace ImageBitmapFormatValues
      58             : 
      59             : bool
      60             : ToJSValue(JSContext* aCx, ImageBitmapFormat aArgument, JS::MutableHandle<JS::Value> aValue);
      61             : 
      62             : 
      63             : enum class ChannelPixelLayoutDataType : uint8_t {
      64             :   Uint8,
      65             :   Int8,
      66             :   Uint16,
      67             :   Int16,
      68             :   Uint32,
      69             :   Int32,
      70             :   Float32,
      71             :   Float64,
      72             :   EndGuard_
      73             : };
      74             : 
      75             : namespace ChannelPixelLayoutDataTypeValues {
      76             : extern const EnumEntry strings[9];
      77             : } // namespace ChannelPixelLayoutDataTypeValues
      78             : 
      79             : bool
      80             : ToJSValue(JSContext* aCx, ChannelPixelLayoutDataType aArgument, JS::MutableHandle<JS::Value> aValue);
      81             : 
      82             : 
      83             : void
      84             : ImplCycleCollectionTraverse(nsCycleCollectionTraversalCallback& aCallback, OwningHTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrCanvasRenderingContext2DOrImageBitmapOrArrayBufferViewOrArrayBuffer& aUnion, const char* aName, uint32_t aFlags = 0);
      85             : 
      86             : 
      87             : void
      88             : ImplCycleCollectionUnlink(OwningHTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrCanvasRenderingContext2DOrImageBitmapOrArrayBufferViewOrArrayBuffer& aUnion);
      89             : 
      90             : 
      91             : struct ChannelPixelLayout : public DictionaryBase
      92             : {
      93             :   MOZ_INIT_OUTSIDE_CTOR ChannelPixelLayoutDataType mDataType;
      94             :   MOZ_INIT_OUTSIDE_CTOR uint32_t mHeight;
      95             :   MOZ_INIT_OUTSIDE_CTOR uint32_t mOffset;
      96             :   MOZ_INIT_OUTSIDE_CTOR uint32_t mSkip;
      97             :   MOZ_INIT_OUTSIDE_CTOR uint32_t mStride;
      98             :   MOZ_INIT_OUTSIDE_CTOR uint32_t mWidth;
      99             : 
     100             :   ChannelPixelLayout();
     101             : 
     102             :   explicit inline ChannelPixelLayout(const FastDictionaryInitializer& )
     103             :   {
     104             :     // Do nothing here; this is used by our "Fast" subclass
     105             :   }
     106             : 
     107           0 :   explicit inline ChannelPixelLayout(const ChannelPixelLayout& aOther)
     108           0 :   {
     109           0 :     *this = aOther;
     110           0 :   }
     111             : 
     112             :   bool
     113             :   Init(JSContext* cx, JS::Handle<JS::Value> val, const char* sourceDescription = "Value", bool passedToJSImpl = false);
     114             : 
     115             :   bool
     116             :   Init(const nsAString& aJSON);
     117             : 
     118             :   bool
     119             :   ToObjectInternal(JSContext* cx, JS::MutableHandle<JS::Value> rval) const;
     120             : 
     121             :   bool
     122             :   ToJSON(nsAString& aJSON) const;
     123             : 
     124             :   void
     125             :   TraceDictionary(JSTracer* trc);
     126             : 
     127             :   ChannelPixelLayout&
     128             :   operator=(const ChannelPixelLayout& aOther);
     129             : 
     130             : private:
     131             :   static bool
     132             :   InitIds(JSContext* cx, ChannelPixelLayoutAtoms* atomsCache);
     133             : };
     134             : 
     135             : namespace binding_detail {
     136             : struct FastChannelPixelLayout : public ChannelPixelLayout
     137             : {
     138             :   inline FastChannelPixelLayout()
     139             :     : ChannelPixelLayout(FastDictionaryInitializer())
     140             :   {
     141             :     // Doesn't matter what int we pass to the parent constructor
     142             :   }
     143             : };
     144             : } // namespace binding_detail
     145             : 
     146             : 
     147             : class HTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrCanvasRenderingContext2DOrImageBitmapOrArrayBufferViewOrArrayBuffer
     148             : {
     149             :   friend class HTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrCanvasRenderingContext2DOrImageBitmapOrArrayBufferViewOrArrayBufferArgument;
     150             :   enum Type
     151             :   {
     152             :     eUninitialized,
     153             :     eHTMLImageElement,
     154             :     eHTMLVideoElement,
     155             :     eHTMLCanvasElement,
     156             :     eBlob,
     157             :     eImageData,
     158             :     eCanvasRenderingContext2D,
     159             :     eImageBitmap,
     160             :     eArrayBufferView,
     161             :     eArrayBuffer
     162             :   };
     163             : 
     164           0 :   union Value
     165             :   {
     166             :     UnionMember<NonNull<mozilla::dom::HTMLImageElement> > mHTMLImageElement;
     167             :     UnionMember<NonNull<mozilla::dom::HTMLVideoElement> > mHTMLVideoElement;
     168             :     UnionMember<NonNull<mozilla::dom::HTMLCanvasElement> > mHTMLCanvasElement;
     169             :     UnionMember<NonNull<mozilla::dom::Blob> > mBlob;
     170             :     UnionMember<NonNull<mozilla::dom::ImageData> > mImageData;
     171             :     UnionMember<NonNull<mozilla::dom::CanvasRenderingContext2D> > mCanvasRenderingContext2D;
     172             :     UnionMember<NonNull<mozilla::dom::ImageBitmap> > mImageBitmap;
     173             :     UnionMember<RootedTypedArray<ArrayBufferView> > mArrayBufferView;
     174             :     UnionMember<RootedTypedArray<ArrayBuffer> > mArrayBuffer;
     175             : 
     176             :   };
     177             : 
     178             :   Type mType;
     179             :   Value mValue;
     180             : 
     181             :   HTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrCanvasRenderingContext2DOrImageBitmapOrArrayBufferViewOrArrayBuffer(const HTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrCanvasRenderingContext2DOrImageBitmapOrArrayBufferViewOrArrayBuffer&) = delete;
     182             :   HTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrCanvasRenderingContext2DOrImageBitmapOrArrayBufferViewOrArrayBuffer& operator=(const HTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrCanvasRenderingContext2DOrImageBitmapOrArrayBufferViewOrArrayBuffer&) = delete;
     183             : public:
     184           0 :   explicit inline HTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrCanvasRenderingContext2DOrImageBitmapOrArrayBufferViewOrArrayBuffer()
     185           0 :     : mType(eUninitialized)
     186             :   {
     187           0 :   }
     188             : 
     189           0 :   inline ~HTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrCanvasRenderingContext2DOrImageBitmapOrArrayBufferViewOrArrayBuffer()
     190           0 :   {
     191           0 :     Uninit();
     192           0 :   }
     193             : 
     194             :   inline NonNull<mozilla::dom::HTMLImageElement>&
     195             :   RawSetAsHTMLImageElement()
     196             :   {
     197             :     if (mType == eHTMLImageElement) {
     198             :       return mValue.mHTMLImageElement.Value();
     199             :     }
     200             :     MOZ_ASSERT(mType == eUninitialized);
     201             :     mType = eHTMLImageElement;
     202             :     return mValue.mHTMLImageElement.SetValue();
     203             :   }
     204             : 
     205             :   inline NonNull<mozilla::dom::HTMLImageElement>&
     206             :   SetAsHTMLImageElement()
     207             :   {
     208             :     if (mType == eHTMLImageElement) {
     209             :       return mValue.mHTMLImageElement.Value();
     210             :     }
     211             :     Uninit();
     212             :     mType = eHTMLImageElement;
     213             :     return mValue.mHTMLImageElement.SetValue();
     214             :   }
     215             : 
     216             :   inline bool
     217           0 :   IsHTMLImageElement() const
     218             :   {
     219           0 :     return mType == eHTMLImageElement;
     220             :   }
     221             : 
     222             :   inline NonNull<mozilla::dom::HTMLImageElement>&
     223             :   GetAsHTMLImageElement()
     224             :   {
     225             :     MOZ_ASSERT(IsHTMLImageElement(), "Wrong type!");
     226             :     return mValue.mHTMLImageElement.Value();
     227             :   }
     228             : 
     229             :   inline mozilla::dom::HTMLImageElement&
     230           0 :   GetAsHTMLImageElement() const
     231             :   {
     232           0 :     MOZ_ASSERT(IsHTMLImageElement(), "Wrong type!");
     233           0 :     return mValue.mHTMLImageElement.Value();
     234             :   }
     235             : 
     236             :   inline NonNull<mozilla::dom::HTMLVideoElement>&
     237             :   RawSetAsHTMLVideoElement()
     238             :   {
     239             :     if (mType == eHTMLVideoElement) {
     240             :       return mValue.mHTMLVideoElement.Value();
     241             :     }
     242             :     MOZ_ASSERT(mType == eUninitialized);
     243             :     mType = eHTMLVideoElement;
     244             :     return mValue.mHTMLVideoElement.SetValue();
     245             :   }
     246             : 
     247             :   inline NonNull<mozilla::dom::HTMLVideoElement>&
     248             :   SetAsHTMLVideoElement()
     249             :   {
     250             :     if (mType == eHTMLVideoElement) {
     251             :       return mValue.mHTMLVideoElement.Value();
     252             :     }
     253             :     Uninit();
     254             :     mType = eHTMLVideoElement;
     255             :     return mValue.mHTMLVideoElement.SetValue();
     256             :   }
     257             : 
     258             :   inline bool
     259           0 :   IsHTMLVideoElement() const
     260             :   {
     261           0 :     return mType == eHTMLVideoElement;
     262             :   }
     263             : 
     264             :   inline NonNull<mozilla::dom::HTMLVideoElement>&
     265             :   GetAsHTMLVideoElement()
     266             :   {
     267             :     MOZ_ASSERT(IsHTMLVideoElement(), "Wrong type!");
     268             :     return mValue.mHTMLVideoElement.Value();
     269             :   }
     270             : 
     271             :   inline mozilla::dom::HTMLVideoElement&
     272           0 :   GetAsHTMLVideoElement() const
     273             :   {
     274           0 :     MOZ_ASSERT(IsHTMLVideoElement(), "Wrong type!");
     275           0 :     return mValue.mHTMLVideoElement.Value();
     276             :   }
     277             : 
     278             :   inline NonNull<mozilla::dom::HTMLCanvasElement>&
     279             :   RawSetAsHTMLCanvasElement()
     280             :   {
     281             :     if (mType == eHTMLCanvasElement) {
     282             :       return mValue.mHTMLCanvasElement.Value();
     283             :     }
     284             :     MOZ_ASSERT(mType == eUninitialized);
     285             :     mType = eHTMLCanvasElement;
     286             :     return mValue.mHTMLCanvasElement.SetValue();
     287             :   }
     288             : 
     289             :   inline NonNull<mozilla::dom::HTMLCanvasElement>&
     290             :   SetAsHTMLCanvasElement()
     291             :   {
     292             :     if (mType == eHTMLCanvasElement) {
     293             :       return mValue.mHTMLCanvasElement.Value();
     294             :     }
     295             :     Uninit();
     296             :     mType = eHTMLCanvasElement;
     297             :     return mValue.mHTMLCanvasElement.SetValue();
     298             :   }
     299             : 
     300             :   inline bool
     301           0 :   IsHTMLCanvasElement() const
     302             :   {
     303           0 :     return mType == eHTMLCanvasElement;
     304             :   }
     305             : 
     306             :   inline NonNull<mozilla::dom::HTMLCanvasElement>&
     307             :   GetAsHTMLCanvasElement()
     308             :   {
     309             :     MOZ_ASSERT(IsHTMLCanvasElement(), "Wrong type!");
     310             :     return mValue.mHTMLCanvasElement.Value();
     311             :   }
     312             : 
     313             :   inline mozilla::dom::HTMLCanvasElement&
     314           0 :   GetAsHTMLCanvasElement() const
     315             :   {
     316           0 :     MOZ_ASSERT(IsHTMLCanvasElement(), "Wrong type!");
     317           0 :     return mValue.mHTMLCanvasElement.Value();
     318             :   }
     319             : 
     320             :   inline NonNull<mozilla::dom::Blob>&
     321             :   RawSetAsBlob()
     322             :   {
     323             :     if (mType == eBlob) {
     324             :       return mValue.mBlob.Value();
     325             :     }
     326             :     MOZ_ASSERT(mType == eUninitialized);
     327             :     mType = eBlob;
     328             :     return mValue.mBlob.SetValue();
     329             :   }
     330             : 
     331             :   inline NonNull<mozilla::dom::Blob>&
     332             :   SetAsBlob()
     333             :   {
     334             :     if (mType == eBlob) {
     335             :       return mValue.mBlob.Value();
     336             :     }
     337             :     Uninit();
     338             :     mType = eBlob;
     339             :     return mValue.mBlob.SetValue();
     340             :   }
     341             : 
     342             :   inline bool
     343           0 :   IsBlob() const
     344             :   {
     345           0 :     return mType == eBlob;
     346             :   }
     347             : 
     348             :   inline NonNull<mozilla::dom::Blob>&
     349             :   GetAsBlob()
     350             :   {
     351             :     MOZ_ASSERT(IsBlob(), "Wrong type!");
     352             :     return mValue.mBlob.Value();
     353             :   }
     354             : 
     355             :   inline mozilla::dom::Blob&
     356           0 :   GetAsBlob() const
     357             :   {
     358           0 :     MOZ_ASSERT(IsBlob(), "Wrong type!");
     359           0 :     return mValue.mBlob.Value();
     360             :   }
     361             : 
     362             :   inline NonNull<mozilla::dom::ImageData>&
     363             :   RawSetAsImageData()
     364             :   {
     365             :     if (mType == eImageData) {
     366             :       return mValue.mImageData.Value();
     367             :     }
     368             :     MOZ_ASSERT(mType == eUninitialized);
     369             :     mType = eImageData;
     370             :     return mValue.mImageData.SetValue();
     371             :   }
     372             : 
     373             :   inline NonNull<mozilla::dom::ImageData>&
     374             :   SetAsImageData()
     375             :   {
     376             :     if (mType == eImageData) {
     377             :       return mValue.mImageData.Value();
     378             :     }
     379             :     Uninit();
     380             :     mType = eImageData;
     381             :     return mValue.mImageData.SetValue();
     382             :   }
     383             : 
     384             :   inline bool
     385           0 :   IsImageData() const
     386             :   {
     387           0 :     return mType == eImageData;
     388             :   }
     389             : 
     390             :   inline NonNull<mozilla::dom::ImageData>&
     391             :   GetAsImageData()
     392             :   {
     393             :     MOZ_ASSERT(IsImageData(), "Wrong type!");
     394             :     return mValue.mImageData.Value();
     395             :   }
     396             : 
     397             :   inline mozilla::dom::ImageData&
     398           0 :   GetAsImageData() const
     399             :   {
     400           0 :     MOZ_ASSERT(IsImageData(), "Wrong type!");
     401           0 :     return mValue.mImageData.Value();
     402             :   }
     403             : 
     404             :   inline NonNull<mozilla::dom::CanvasRenderingContext2D>&
     405             :   RawSetAsCanvasRenderingContext2D()
     406             :   {
     407             :     if (mType == eCanvasRenderingContext2D) {
     408             :       return mValue.mCanvasRenderingContext2D.Value();
     409             :     }
     410             :     MOZ_ASSERT(mType == eUninitialized);
     411             :     mType = eCanvasRenderingContext2D;
     412             :     return mValue.mCanvasRenderingContext2D.SetValue();
     413             :   }
     414             : 
     415             :   inline NonNull<mozilla::dom::CanvasRenderingContext2D>&
     416             :   SetAsCanvasRenderingContext2D()
     417             :   {
     418             :     if (mType == eCanvasRenderingContext2D) {
     419             :       return mValue.mCanvasRenderingContext2D.Value();
     420             :     }
     421             :     Uninit();
     422             :     mType = eCanvasRenderingContext2D;
     423             :     return mValue.mCanvasRenderingContext2D.SetValue();
     424             :   }
     425             : 
     426             :   inline bool
     427           0 :   IsCanvasRenderingContext2D() const
     428             :   {
     429           0 :     return mType == eCanvasRenderingContext2D;
     430             :   }
     431             : 
     432             :   inline NonNull<mozilla::dom::CanvasRenderingContext2D>&
     433             :   GetAsCanvasRenderingContext2D()
     434             :   {
     435             :     MOZ_ASSERT(IsCanvasRenderingContext2D(), "Wrong type!");
     436             :     return mValue.mCanvasRenderingContext2D.Value();
     437             :   }
     438             : 
     439             :   inline mozilla::dom::CanvasRenderingContext2D&
     440           0 :   GetAsCanvasRenderingContext2D() const
     441             :   {
     442           0 :     MOZ_ASSERT(IsCanvasRenderingContext2D(), "Wrong type!");
     443           0 :     return mValue.mCanvasRenderingContext2D.Value();
     444             :   }
     445             : 
     446             :   inline NonNull<mozilla::dom::ImageBitmap>&
     447             :   RawSetAsImageBitmap()
     448             :   {
     449             :     if (mType == eImageBitmap) {
     450             :       return mValue.mImageBitmap.Value();
     451             :     }
     452             :     MOZ_ASSERT(mType == eUninitialized);
     453             :     mType = eImageBitmap;
     454             :     return mValue.mImageBitmap.SetValue();
     455             :   }
     456             : 
     457             :   inline NonNull<mozilla::dom::ImageBitmap>&
     458             :   SetAsImageBitmap()
     459             :   {
     460             :     if (mType == eImageBitmap) {
     461             :       return mValue.mImageBitmap.Value();
     462             :     }
     463             :     Uninit();
     464             :     mType = eImageBitmap;
     465             :     return mValue.mImageBitmap.SetValue();
     466             :   }
     467             : 
     468             :   inline bool
     469           0 :   IsImageBitmap() const
     470             :   {
     471           0 :     return mType == eImageBitmap;
     472             :   }
     473             : 
     474             :   inline NonNull<mozilla::dom::ImageBitmap>&
     475             :   GetAsImageBitmap()
     476             :   {
     477             :     MOZ_ASSERT(IsImageBitmap(), "Wrong type!");
     478             :     return mValue.mImageBitmap.Value();
     479             :   }
     480             : 
     481             :   inline mozilla::dom::ImageBitmap&
     482           0 :   GetAsImageBitmap() const
     483             :   {
     484           0 :     MOZ_ASSERT(IsImageBitmap(), "Wrong type!");
     485           0 :     return mValue.mImageBitmap.Value();
     486             :   }
     487             : 
     488             :   inline RootedTypedArray<ArrayBufferView>&
     489             :   RawSetAsArrayBufferView(JSContext* cx)
     490             :   {
     491             :     if (mType == eArrayBufferView) {
     492             :       return mValue.mArrayBufferView.Value();
     493             :     }
     494             :     MOZ_ASSERT(mType == eUninitialized);
     495             :     mType = eArrayBufferView;
     496             :     return mValue.mArrayBufferView.SetValue(cx);
     497             :   }
     498             : 
     499             :   inline RootedTypedArray<ArrayBufferView>&
     500             :   SetAsArrayBufferView(JSContext* cx)
     501             :   {
     502             :     if (mType == eArrayBufferView) {
     503             :       return mValue.mArrayBufferView.Value();
     504             :     }
     505             :     Uninit();
     506             :     mType = eArrayBufferView;
     507             :     return mValue.mArrayBufferView.SetValue(cx);
     508             :   }
     509             : 
     510             :   inline bool
     511           0 :   IsArrayBufferView() const
     512             :   {
     513           0 :     return mType == eArrayBufferView;
     514             :   }
     515             : 
     516             :   inline RootedTypedArray<ArrayBufferView>&
     517             :   GetAsArrayBufferView()
     518             :   {
     519             :     MOZ_ASSERT(IsArrayBufferView(), "Wrong type!");
     520             :     return mValue.mArrayBufferView.Value();
     521             :   }
     522             : 
     523             :   inline ArrayBufferView const &
     524           0 :   GetAsArrayBufferView() const
     525             :   {
     526           0 :     MOZ_ASSERT(IsArrayBufferView(), "Wrong type!");
     527           0 :     return mValue.mArrayBufferView.Value();
     528             :   }
     529             : 
     530             :   inline RootedTypedArray<ArrayBuffer>&
     531             :   RawSetAsArrayBuffer(JSContext* cx)
     532             :   {
     533             :     if (mType == eArrayBuffer) {
     534             :       return mValue.mArrayBuffer.Value();
     535             :     }
     536             :     MOZ_ASSERT(mType == eUninitialized);
     537             :     mType = eArrayBuffer;
     538             :     return mValue.mArrayBuffer.SetValue(cx);
     539             :   }
     540             : 
     541             :   inline RootedTypedArray<ArrayBuffer>&
     542             :   SetAsArrayBuffer(JSContext* cx)
     543             :   {
     544             :     if (mType == eArrayBuffer) {
     545             :       return mValue.mArrayBuffer.Value();
     546             :     }
     547             :     Uninit();
     548             :     mType = eArrayBuffer;
     549             :     return mValue.mArrayBuffer.SetValue(cx);
     550             :   }
     551             : 
     552             :   inline bool
     553           0 :   IsArrayBuffer() const
     554             :   {
     555           0 :     return mType == eArrayBuffer;
     556             :   }
     557             : 
     558             :   inline RootedTypedArray<ArrayBuffer>&
     559             :   GetAsArrayBuffer()
     560             :   {
     561             :     MOZ_ASSERT(IsArrayBuffer(), "Wrong type!");
     562             :     return mValue.mArrayBuffer.Value();
     563             :   }
     564             : 
     565             :   inline ArrayBuffer const &
     566           0 :   GetAsArrayBuffer() const
     567             :   {
     568           0 :     MOZ_ASSERT(IsArrayBuffer(), "Wrong type!");
     569           0 :     return mValue.mArrayBuffer.Value();
     570             :   }
     571             : 
     572             :   inline void
     573           0 :   Uninit()
     574             :   {
     575           0 :     switch (mType) {
     576             :       case eUninitialized: {
     577           0 :         break;
     578             :       }
     579             :       case eHTMLImageElement: {
     580           0 :         DestroyHTMLImageElement();
     581           0 :         break;
     582             :       }
     583             :       case eHTMLVideoElement: {
     584           0 :         DestroyHTMLVideoElement();
     585           0 :         break;
     586             :       }
     587             :       case eHTMLCanvasElement: {
     588           0 :         DestroyHTMLCanvasElement();
     589           0 :         break;
     590             :       }
     591             :       case eBlob: {
     592           0 :         DestroyBlob();
     593           0 :         break;
     594             :       }
     595             :       case eImageData: {
     596           0 :         DestroyImageData();
     597           0 :         break;
     598             :       }
     599             :       case eCanvasRenderingContext2D: {
     600           0 :         DestroyCanvasRenderingContext2D();
     601           0 :         break;
     602             :       }
     603             :       case eImageBitmap: {
     604           0 :         DestroyImageBitmap();
     605           0 :         break;
     606             :       }
     607             :       case eArrayBufferView: {
     608           0 :         DestroyArrayBufferView();
     609           0 :         break;
     610             :       }
     611             :       case eArrayBuffer: {
     612           0 :         DestroyArrayBuffer();
     613           0 :         break;
     614             :       }
     615             :     }
     616           0 :   }
     617             : 
     618             :   bool
     619             :   ToJSVal(JSContext* cx, JS::Handle<JSObject*> scopeObj, JS::MutableHandle<JS::Value> rval) const;
     620             : 
     621             : private:
     622             :   inline void
     623           0 :   DestroyHTMLImageElement()
     624             :   {
     625           0 :     MOZ_ASSERT(IsHTMLImageElement(), "Wrong type!");
     626           0 :     mValue.mHTMLImageElement.Destroy();
     627           0 :     mType = eUninitialized;
     628           0 :   }
     629             : 
     630             :   inline void
     631           0 :   DestroyHTMLVideoElement()
     632             :   {
     633           0 :     MOZ_ASSERT(IsHTMLVideoElement(), "Wrong type!");
     634           0 :     mValue.mHTMLVideoElement.Destroy();
     635           0 :     mType = eUninitialized;
     636           0 :   }
     637             : 
     638             :   inline void
     639           0 :   DestroyHTMLCanvasElement()
     640             :   {
     641           0 :     MOZ_ASSERT(IsHTMLCanvasElement(), "Wrong type!");
     642           0 :     mValue.mHTMLCanvasElement.Destroy();
     643           0 :     mType = eUninitialized;
     644           0 :   }
     645             : 
     646             :   inline void
     647           0 :   DestroyBlob()
     648             :   {
     649           0 :     MOZ_ASSERT(IsBlob(), "Wrong type!");
     650           0 :     mValue.mBlob.Destroy();
     651           0 :     mType = eUninitialized;
     652           0 :   }
     653             : 
     654             :   inline void
     655           0 :   DestroyImageData()
     656             :   {
     657           0 :     MOZ_ASSERT(IsImageData(), "Wrong type!");
     658           0 :     mValue.mImageData.Destroy();
     659           0 :     mType = eUninitialized;
     660           0 :   }
     661             : 
     662             :   inline void
     663           0 :   DestroyCanvasRenderingContext2D()
     664             :   {
     665           0 :     MOZ_ASSERT(IsCanvasRenderingContext2D(), "Wrong type!");
     666           0 :     mValue.mCanvasRenderingContext2D.Destroy();
     667           0 :     mType = eUninitialized;
     668           0 :   }
     669             : 
     670             :   inline void
     671           0 :   DestroyImageBitmap()
     672             :   {
     673           0 :     MOZ_ASSERT(IsImageBitmap(), "Wrong type!");
     674           0 :     mValue.mImageBitmap.Destroy();
     675           0 :     mType = eUninitialized;
     676           0 :   }
     677             : 
     678             :   inline void
     679           0 :   DestroyArrayBufferView()
     680             :   {
     681           0 :     MOZ_ASSERT(IsArrayBufferView(), "Wrong type!");
     682           0 :     mValue.mArrayBufferView.Destroy();
     683           0 :     mType = eUninitialized;
     684           0 :   }
     685             : 
     686             :   inline void
     687           0 :   DestroyArrayBuffer()
     688             :   {
     689           0 :     MOZ_ASSERT(IsArrayBuffer(), "Wrong type!");
     690           0 :     mValue.mArrayBuffer.Destroy();
     691           0 :     mType = eUninitialized;
     692           0 :   }
     693             : };
     694             : 
     695             : 
     696             : class OwningHTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrCanvasRenderingContext2DOrImageBitmapOrArrayBufferViewOrArrayBuffer : public AllOwningUnionBase
     697             : {
     698             :   friend void ImplCycleCollectionUnlink(OwningHTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrCanvasRenderingContext2DOrImageBitmapOrArrayBufferViewOrArrayBuffer& aUnion);
     699             :   enum Type
     700             :   {
     701             :     eUninitialized,
     702             :     eHTMLImageElement,
     703             :     eHTMLVideoElement,
     704             :     eHTMLCanvasElement,
     705             :     eBlob,
     706             :     eImageData,
     707             :     eCanvasRenderingContext2D,
     708             :     eImageBitmap,
     709             :     eArrayBufferView,
     710             :     eArrayBuffer
     711             :   };
     712             : 
     713             :   union Value
     714             :   {
     715             :     UnionMember<OwningNonNull<mozilla::dom::HTMLImageElement> > mHTMLImageElement;
     716             :     UnionMember<OwningNonNull<mozilla::dom::HTMLVideoElement> > mHTMLVideoElement;
     717             :     UnionMember<OwningNonNull<mozilla::dom::HTMLCanvasElement> > mHTMLCanvasElement;
     718             :     UnionMember<OwningNonNull<mozilla::dom::Blob> > mBlob;
     719             :     UnionMember<OwningNonNull<mozilla::dom::ImageData> > mImageData;
     720             :     UnionMember<OwningNonNull<mozilla::dom::CanvasRenderingContext2D> > mCanvasRenderingContext2D;
     721             :     UnionMember<OwningNonNull<mozilla::dom::ImageBitmap> > mImageBitmap;
     722             :     UnionMember<ArrayBufferView > mArrayBufferView;
     723             :     UnionMember<ArrayBuffer > mArrayBuffer;
     724             : 
     725             :   };
     726             : 
     727             :   Type mType;
     728             :   Value mValue;
     729             : 
     730             :   OwningHTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrCanvasRenderingContext2DOrImageBitmapOrArrayBufferViewOrArrayBuffer(const OwningHTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrCanvasRenderingContext2DOrImageBitmapOrArrayBufferViewOrArrayBuffer&) = delete;
     731             :   OwningHTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrCanvasRenderingContext2DOrImageBitmapOrArrayBufferViewOrArrayBuffer& operator=(const OwningHTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrCanvasRenderingContext2DOrImageBitmapOrArrayBufferViewOrArrayBuffer&) = delete;
     732             : public:
     733             :   explicit inline OwningHTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrCanvasRenderingContext2DOrImageBitmapOrArrayBufferViewOrArrayBuffer()
     734             :     : mType(eUninitialized)
     735             :   {
     736             :   }
     737             : 
     738             :   inline ~OwningHTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrBlobOrImageDataOrCanvasRenderingContext2DOrImageBitmapOrArrayBufferViewOrArrayBuffer()
     739             :   {
     740             :     Uninit();
     741             :   }
     742             : 
     743             :   OwningNonNull<mozilla::dom::HTMLImageElement>&
     744             :   RawSetAsHTMLImageElement();
     745             : 
     746             :   OwningNonNull<mozilla::dom::HTMLImageElement>&
     747             :   SetAsHTMLImageElement();
     748             : 
     749             :   bool
     750             :   TrySetToHTMLImageElement(JSContext* cx, JS::Handle<JS::Value> value, bool& tryNext, bool passedToJSImpl = false);
     751             : 
     752             :   inline bool
     753           0 :   IsHTMLImageElement() const
     754             :   {
     755           0 :     return mType == eHTMLImageElement;
     756             :   }
     757             : 
     758             :   inline OwningNonNull<mozilla::dom::HTMLImageElement>&
     759           0 :   GetAsHTMLImageElement()
     760             :   {
     761           0 :     MOZ_ASSERT(IsHTMLImageElement(), "Wrong type!");
     762           0 :     return mValue.mHTMLImageElement.Value();
     763             :   }
     764             : 
     765             :   inline OwningNonNull<mozilla::dom::HTMLImageElement> const &
     766             :   GetAsHTMLImageElement() const
     767             :   {
     768             :     MOZ_ASSERT(IsHTMLImageElement(), "Wrong type!");
     769             :     return mValue.mHTMLImageElement.Value();
     770             :   }
     771             : 
     772             :   OwningNonNull<mozilla::dom::HTMLVideoElement>&
     773             :   RawSetAsHTMLVideoElement();
     774             : 
     775             :   OwningNonNull<mozilla::dom::HTMLVideoElement>&
     776             :   SetAsHTMLVideoElement();
     777             : 
     778             :   bool
     779             :   TrySetToHTMLVideoElement(JSContext* cx, JS::Handle<JS::Value> value, bool& tryNext, bool passedToJSImpl = false);
     780             : 
     781             :   inline bool
     782           0 :   IsHTMLVideoElement() const
     783             :   {
     784           0 :     return mType == eHTMLVideoElement;
     785             :   }
     786             : 
     787             :   inline OwningNonNull<mozilla::dom::HTMLVideoElement>&
     788           0 :   GetAsHTMLVideoElement()
     789             :   {
     790           0 :     MOZ_ASSERT(IsHTMLVideoElement(), "Wrong type!");
     791           0 :     return mValue.mHTMLVideoElement.Value();
     792             :   }
     793             : 
     794             :   inline OwningNonNull<mozilla::dom::HTMLVideoElement> const &
     795             :   GetAsHTMLVideoElement() const
     796             :   {
     797             :     MOZ_ASSERT(IsHTMLVideoElement(), "Wrong type!");
     798             :     return mValue.mHTMLVideoElement.Value();
     799             :   }
     800             : 
     801             :   OwningNonNull<mozilla::dom::HTMLCanvasElement>&
     802             :   RawSetAsHTMLCanvasElement();
     803             : 
     804             :   OwningNonNull<mozilla::dom::HTMLCanvasElement>&
     805             :   SetAsHTMLCanvasElement();
     806             : 
     807             :   bool
     808             :   TrySetToHTMLCanvasElement(JSContext* cx, JS::Handle<JS::Value> value, bool& tryNext, bool passedToJSImpl = false);
     809             : 
     810             :   inline bool
     811           0 :   IsHTMLCanvasElement() const
     812             :   {
     813           0 :     return mType == eHTMLCanvasElement;
     814             :   }
     815             : 
     816             :   inline OwningNonNull<mozilla::dom::HTMLCanvasElement>&
     817           0 :   GetAsHTMLCanvasElement()
     818             :   {
     819           0 :     MOZ_ASSERT(IsHTMLCanvasElement(), "Wrong type!");
     820           0 :     return mValue.mHTMLCanvasElement.Value();
     821             :   }
     822             : 
     823             :   inline OwningNonNull<mozilla::dom::HTMLCanvasElement> const &
     824             :   GetAsHTMLCanvasElement() const
     825             :   {
     826             :     MOZ_ASSERT(IsHTMLCanvasElement(), "Wrong type!");
     827             :     return mValue.mHTMLCanvasElement.Value();
     828             :   }
     829             : 
     830             :   OwningNonNull<mozilla::dom::Blob>&
     831             :   RawSetAsBlob();
     832             : 
     833             :   OwningNonNull<mozilla::dom::Blob>&
     834             :   SetAsBlob();
     835             : 
     836             :   bool
     837             :   TrySetToBlob(JSContext* cx, JS::Handle<JS::Value> value, bool& tryNext, bool passedToJSImpl = false);
     838             : 
     839             :   inline bool
     840           0 :   IsBlob() const
     841             :   {
     842           0 :     return mType == eBlob;
     843             :   }
     844             : 
     845             :   inline OwningNonNull<mozilla::dom::Blob>&
     846           0 :   GetAsBlob()
     847             :   {
     848           0 :     MOZ_ASSERT(IsBlob(), "Wrong type!");
     849           0 :     return mValue.mBlob.Value();
     850             :   }
     851             : 
     852             :   inline OwningNonNull<mozilla::dom::Blob> const &
     853             :   GetAsBlob() const
     854             :   {
     855             :     MOZ_ASSERT(IsBlob(), "Wrong type!");
     856             :     return mValue.mBlob.Value();
     857             :   }
     858             : 
     859             :   OwningNonNull<mozilla::dom::ImageData>&
     860             :   RawSetAsImageData();
     861             : 
     862             :   OwningNonNull<mozilla::dom::ImageData>&
     863             :   SetAsImageData();
     864             : 
     865             :   bool
     866             :   TrySetToImageData(JSContext* cx, JS::Handle<JS::Value> value, bool& tryNext, bool passedToJSImpl = false);
     867             : 
     868             :   inline bool
     869           0 :   IsImageData() const
     870             :   {
     871           0 :     return mType == eImageData;
     872             :   }
     873             : 
     874             :   inline OwningNonNull<mozilla::dom::ImageData>&
     875           0 :   GetAsImageData()
     876             :   {
     877           0 :     MOZ_ASSERT(IsImageData(), "Wrong type!");
     878           0 :     return mValue.mImageData.Value();
     879             :   }
     880             : 
     881             :   inline OwningNonNull<mozilla::dom::ImageData> const &
     882             :   GetAsImageData() const
     883             :   {
     884             :     MOZ_ASSERT(IsImageData(), "Wrong type!");
     885             :     return mValue.mImageData.Value();
     886             :   }
     887             : 
     888             :   OwningNonNull<mozilla::dom::CanvasRenderingContext2D>&
     889             :   RawSetAsCanvasRenderingContext2D();
     890             : 
     891             :   OwningNonNull<mozilla::dom::CanvasRenderingContext2D>&
     892             :   SetAsCanvasRenderingContext2D();
     893             : 
     894             :   bool
     895             :   TrySetToCanvasRenderingContext2D(JSContext* cx, JS::Handle<JS::Value> value, bool& tryNext, bool passedToJSImpl = false);
     896             : 
     897             :   inline bool
     898           0 :   IsCanvasRenderingContext2D() const
     899             :   {
     900           0 :     return mType == eCanvasRenderingContext2D;
     901             :   }
     902             : 
     903             :   inline OwningNonNull<mozilla::dom::CanvasRenderingContext2D>&
     904           0 :   GetAsCanvasRenderingContext2D()
     905             :   {
     906           0 :     MOZ_ASSERT(IsCanvasRenderingContext2D(), "Wrong type!");
     907           0 :     return mValue.mCanvasRenderingContext2D.Value();
     908             :   }
     909             : 
     910             :   inline OwningNonNull<mozilla::dom::CanvasRenderingContext2D> const &
     911             :   GetAsCanvasRenderingContext2D() const
     912             :   {
     913             :     MOZ_ASSERT(IsCanvasRenderingContext2D(), "Wrong type!");
     914             :     return mValue.mCanvasRenderingContext2D.Value();
     915             :   }
     916             : 
     917             :   OwningNonNull<mozilla::dom::ImageBitmap>&
     918             :   RawSetAsImageBitmap();
     919             : 
     920             :   OwningNonNull<mozilla::dom::ImageBitmap>&
     921             :   SetAsImageBitmap();
     922             : 
     923             :   bool
     924             :   TrySetToImageBitmap(JSContext* cx, JS::Handle<JS::Value> value, bool& tryNext, bool passedToJSImpl = false);
     925             : 
     926             :   inline bool
     927           0 :   IsImageBitmap() const
     928             :   {
     929           0 :     return mType == eImageBitmap;
     930             :   }
     931             : 
     932             :   inline OwningNonNull<mozilla::dom::ImageBitmap>&
     933           0 :   GetAsImageBitmap()
     934             :   {
     935           0 :     MOZ_ASSERT(IsImageBitmap(), "Wrong type!");
     936           0 :     return mValue.mImageBitmap.Value();
     937             :   }
     938             : 
     939             :   inline OwningNonNull<mozilla::dom::ImageBitmap> const &
     940             :   GetAsImageBitmap() const
     941             :   {
     942             :     MOZ_ASSERT(IsImageBitmap(), "Wrong type!");
     943             :     return mValue.mImageBitmap.Value();
     944             :   }
     945             : 
     946             :   ArrayBufferView&
     947             :   RawSetAsArrayBufferView();
     948             : 
     949             :   ArrayBufferView&
     950             :   SetAsArrayBufferView();
     951             : 
     952             :   bool
     953             :   TrySetToArrayBufferView(JSContext* cx, JS::Handle<JS::Value> value, bool& tryNext, bool passedToJSImpl = false);
     954             : 
     955             :   inline bool
     956           0 :   IsArrayBufferView() const
     957             :   {
     958           0 :     return mType == eArrayBufferView;
     959             :   }
     960             : 
     961             :   inline ArrayBufferView&
     962             :   GetAsArrayBufferView()
     963             :   {
     964             :     MOZ_ASSERT(IsArrayBufferView(), "Wrong type!");
     965             :     return mValue.mArrayBufferView.Value();
     966             :   }
     967             : 
     968             :   inline ArrayBufferView const &
     969             :   GetAsArrayBufferView() const
     970             :   {
     971             :     MOZ_ASSERT(IsArrayBufferView(), "Wrong type!");
     972             :     return mValue.mArrayBufferView.Value();
     973             :   }
     974             : 
     975             :   ArrayBuffer&
     976             :   RawSetAsArrayBuffer();
     977             : 
     978             :   ArrayBuffer&
     979             :   SetAsArrayBuffer();
     980             : 
     981             :   bool
     982             :   TrySetToArrayBuffer(JSContext* cx, JS::Handle<JS::Value> value, bool& tryNext, bool passedToJSImpl = false);
     983             : 
     984             :   inline bool
     985           0 :   IsArrayBuffer() const
     986             :   {
     987           0 :     return mType == eArrayBuffer;
     988             :   }
     989             : 
     990             :   inline ArrayBuffer&
     991             :   GetAsArrayBuffer()
     992             :   {
     993             :     MOZ_ASSERT(IsArrayBuffer(), "Wrong type!");
     994             :     return mValue.mArrayBuffer.Value();
     995             :   }
     996             : 
     997             :   inline ArrayBuffer const &
     998             :   GetAsArrayBuffer() const
     999             :   {
    1000             :     MOZ_ASSERT(IsArrayBuffer(), "Wrong type!");
    1001             :     return mValue.mArrayBuffer.Value();
    1002             :   }
    1003             : 
    1004             :   void
    1005             :   Uninit();
    1006             : 
    1007             :   bool
    1008             :   ToJSVal(JSContext* cx, JS::Handle<JSObject*> scopeObj, JS::MutableHandle<JS::Value> rval) const;
    1009             : 
    1010             :   void
    1011             :   TraceUnion(JSTracer* trc);
    1012             : 
    1013             : private:
    1014             :   void
    1015             :   DestroyHTMLImageElement();
    1016             : 
    1017             :   void
    1018             :   DestroyHTMLVideoElement();
    1019             : 
    1020             :   void
    1021             :   DestroyHTMLCanvasElement();
    1022             : 
    1023             :   void
    1024             :   DestroyBlob();
    1025             : 
    1026             :   void
    1027             :   DestroyImageData();
    1028             : 
    1029             :   void
    1030             :   DestroyCanvasRenderingContext2D();
    1031             : 
    1032             :   void
    1033             :   DestroyImageBitmap();
    1034             : 
    1035             :   void
    1036             :   DestroyArrayBufferView();
    1037             : 
    1038             :   void
    1039             :   DestroyArrayBuffer();
    1040             : };
    1041             : 
    1042             : 
    1043             : namespace ImageBitmapBinding {
    1044             : 
    1045             :   typedef mozilla::dom::ImageBitmap NativeType;
    1046             : 
    1047             :   JSObject*
    1048             :   DefineDOMInterface(JSContext* aCx, JS::Handle<JSObject*> aGlobal, JS::Handle<jsid> id, bool aDefineOnGlobal);
    1049             : 
    1050             :   const JSClass*
    1051             :   GetJSClass();
    1052             : 
    1053             :   bool
    1054             :   Wrap(JSContext* aCx, mozilla::dom::ImageBitmap* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
    1055             : 
    1056             :   template <class T>
    1057           0 :   inline JSObject* Wrap(JSContext* aCx, T* aObject, JS::Handle<JSObject*> aGivenProto)
    1058             :   {
    1059           0 :     JS::Rooted<JSObject*> reflector(aCx);
    1060           0 :     return Wrap(aCx, aObject, aObject, aGivenProto, &reflector) ? reflector.get() : nullptr;
    1061             :   }
    1062             : 
    1063             :   // We declare this as an array so that retrieving a pointer to this
    1064             :   // binding's property hooks only requires compile/link-time resolvable
    1065             :   // address arithmetic.  Declaring it as a pointer instead would require
    1066             :   // doing a run-time load to fetch a pointer to this binding's property
    1067             :   // hooks.  And then structures which embedded a pointer to this structure
    1068             :   // would require a run-time load for proper initialization, which would
    1069             :   // then induce static constructors.  Lots of static constructors.
    1070             :   extern const NativePropertyHooks sNativePropertyHooks[];
    1071             : 
    1072             :   void
    1073             :   CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal);
    1074             : 
    1075             :   JS::Handle<JSObject*>
    1076             :   GetProtoObjectHandle(JSContext* aCx);
    1077             : 
    1078             :   JS::Handle<JSObject*>
    1079             :   GetConstructorObjectHandle(JSContext* aCx, bool aDefineOnGlobal = true);
    1080             : 
    1081             :   JSObject*
    1082             :   GetConstructorObject(JSContext* aCx);
    1083             : 
    1084             : } // namespace ImageBitmapBinding
    1085             : 
    1086             : 
    1087             : 
    1088             : } // namespace dom
    1089             : } // namespace mozilla
    1090             : 
    1091             : #endif // mozilla_dom_ImageBitmapBinding_h

Generated by: LCOV version 1.13