Line data Source code
1 : /* THIS FILE IS AUTOGENERATED FROM Fetch.webidl BY Codegen.py - DO NOT EDIT */
2 :
3 : #ifndef mozilla_dom_FetchBinding_h
4 : #define mozilla_dom_FetchBinding_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 FormData;
21 : struct NativePropertyHooks;
22 : class OwningBlobOrArrayBufferViewOrArrayBufferOrFormDataOrURLSearchParamsOrUSVString;
23 : class ProtoAndIfaceCache;
24 : class URLSearchParams;
25 :
26 : } // namespace dom
27 : } // namespace mozilla
28 :
29 : namespace mozilla {
30 : namespace dom {
31 :
32 : void
33 : ImplCycleCollectionTraverse(nsCycleCollectionTraversalCallback& aCallback, OwningBlobOrArrayBufferViewOrArrayBufferOrFormDataOrURLSearchParamsOrUSVString& aUnion, const char* aName, uint32_t aFlags = 0);
34 :
35 :
36 : void
37 : ImplCycleCollectionUnlink(OwningBlobOrArrayBufferViewOrArrayBufferOrFormDataOrURLSearchParamsOrUSVString& aUnion);
38 :
39 :
40 : class BlobOrArrayBufferViewOrArrayBufferOrFormDataOrURLSearchParamsOrUSVString
41 : {
42 : friend class BlobOrArrayBufferViewOrArrayBufferOrFormDataOrURLSearchParamsOrUSVStringArgument;
43 : enum Type
44 : {
45 : eUninitialized,
46 : eBlob,
47 : eArrayBufferView,
48 : eArrayBuffer,
49 : eFormData,
50 : eURLSearchParams,
51 : eUSVString
52 : };
53 :
54 0 : union Value
55 : {
56 : UnionMember<NonNull<mozilla::dom::Blob> > mBlob;
57 : UnionMember<RootedTypedArray<ArrayBufferView> > mArrayBufferView;
58 : UnionMember<RootedTypedArray<ArrayBuffer> > mArrayBuffer;
59 : UnionMember<NonNull<mozilla::dom::FormData> > mFormData;
60 : UnionMember<NonNull<mozilla::dom::URLSearchParams> > mURLSearchParams;
61 : UnionMember<binding_detail::FakeString > mUSVString;
62 :
63 : };
64 :
65 : Type mType;
66 : Value mValue;
67 :
68 : BlobOrArrayBufferViewOrArrayBufferOrFormDataOrURLSearchParamsOrUSVString(const BlobOrArrayBufferViewOrArrayBufferOrFormDataOrURLSearchParamsOrUSVString&) = delete;
69 : BlobOrArrayBufferViewOrArrayBufferOrFormDataOrURLSearchParamsOrUSVString& operator=(const BlobOrArrayBufferViewOrArrayBufferOrFormDataOrURLSearchParamsOrUSVString&) = delete;
70 : public:
71 0 : explicit inline BlobOrArrayBufferViewOrArrayBufferOrFormDataOrURLSearchParamsOrUSVString()
72 0 : : mType(eUninitialized)
73 : {
74 0 : }
75 :
76 0 : inline ~BlobOrArrayBufferViewOrArrayBufferOrFormDataOrURLSearchParamsOrUSVString()
77 0 : {
78 0 : Uninit();
79 0 : }
80 :
81 : inline NonNull<mozilla::dom::Blob>&
82 : RawSetAsBlob()
83 : {
84 : if (mType == eBlob) {
85 : return mValue.mBlob.Value();
86 : }
87 : MOZ_ASSERT(mType == eUninitialized);
88 : mType = eBlob;
89 : return mValue.mBlob.SetValue();
90 : }
91 :
92 : inline NonNull<mozilla::dom::Blob>&
93 : SetAsBlob()
94 : {
95 : if (mType == eBlob) {
96 : return mValue.mBlob.Value();
97 : }
98 : Uninit();
99 : mType = eBlob;
100 : return mValue.mBlob.SetValue();
101 : }
102 :
103 : inline bool
104 0 : IsBlob() const
105 : {
106 0 : return mType == eBlob;
107 : }
108 :
109 : inline NonNull<mozilla::dom::Blob>&
110 : GetAsBlob()
111 : {
112 : MOZ_ASSERT(IsBlob(), "Wrong type!");
113 : return mValue.mBlob.Value();
114 : }
115 :
116 : inline mozilla::dom::Blob&
117 0 : GetAsBlob() const
118 : {
119 0 : MOZ_ASSERT(IsBlob(), "Wrong type!");
120 0 : return mValue.mBlob.Value();
121 : }
122 :
123 : inline RootedTypedArray<ArrayBufferView>&
124 : RawSetAsArrayBufferView(JSContext* cx)
125 : {
126 : if (mType == eArrayBufferView) {
127 : return mValue.mArrayBufferView.Value();
128 : }
129 : MOZ_ASSERT(mType == eUninitialized);
130 : mType = eArrayBufferView;
131 : return mValue.mArrayBufferView.SetValue(cx);
132 : }
133 :
134 : inline RootedTypedArray<ArrayBufferView>&
135 : SetAsArrayBufferView(JSContext* cx)
136 : {
137 : if (mType == eArrayBufferView) {
138 : return mValue.mArrayBufferView.Value();
139 : }
140 : Uninit();
141 : mType = eArrayBufferView;
142 : return mValue.mArrayBufferView.SetValue(cx);
143 : }
144 :
145 : inline bool
146 0 : IsArrayBufferView() const
147 : {
148 0 : return mType == eArrayBufferView;
149 : }
150 :
151 : inline RootedTypedArray<ArrayBufferView>&
152 0 : GetAsArrayBufferView()
153 : {
154 0 : MOZ_ASSERT(IsArrayBufferView(), "Wrong type!");
155 0 : return mValue.mArrayBufferView.Value();
156 : }
157 :
158 : inline ArrayBufferView const &
159 0 : GetAsArrayBufferView() const
160 : {
161 0 : MOZ_ASSERT(IsArrayBufferView(), "Wrong type!");
162 0 : return mValue.mArrayBufferView.Value();
163 : }
164 :
165 : inline RootedTypedArray<ArrayBuffer>&
166 : RawSetAsArrayBuffer(JSContext* cx)
167 : {
168 : if (mType == eArrayBuffer) {
169 : return mValue.mArrayBuffer.Value();
170 : }
171 : MOZ_ASSERT(mType == eUninitialized);
172 : mType = eArrayBuffer;
173 : return mValue.mArrayBuffer.SetValue(cx);
174 : }
175 :
176 : inline RootedTypedArray<ArrayBuffer>&
177 : SetAsArrayBuffer(JSContext* cx)
178 : {
179 : if (mType == eArrayBuffer) {
180 : return mValue.mArrayBuffer.Value();
181 : }
182 : Uninit();
183 : mType = eArrayBuffer;
184 : return mValue.mArrayBuffer.SetValue(cx);
185 : }
186 :
187 : inline bool
188 0 : IsArrayBuffer() const
189 : {
190 0 : return mType == eArrayBuffer;
191 : }
192 :
193 : inline RootedTypedArray<ArrayBuffer>&
194 0 : GetAsArrayBuffer()
195 : {
196 0 : MOZ_ASSERT(IsArrayBuffer(), "Wrong type!");
197 0 : return mValue.mArrayBuffer.Value();
198 : }
199 :
200 : inline ArrayBuffer const &
201 0 : GetAsArrayBuffer() const
202 : {
203 0 : MOZ_ASSERT(IsArrayBuffer(), "Wrong type!");
204 0 : return mValue.mArrayBuffer.Value();
205 : }
206 :
207 : inline NonNull<mozilla::dom::FormData>&
208 : RawSetAsFormData()
209 : {
210 : if (mType == eFormData) {
211 : return mValue.mFormData.Value();
212 : }
213 : MOZ_ASSERT(mType == eUninitialized);
214 : mType = eFormData;
215 : return mValue.mFormData.SetValue();
216 : }
217 :
218 : inline NonNull<mozilla::dom::FormData>&
219 : SetAsFormData()
220 : {
221 : if (mType == eFormData) {
222 : return mValue.mFormData.Value();
223 : }
224 : Uninit();
225 : mType = eFormData;
226 : return mValue.mFormData.SetValue();
227 : }
228 :
229 : inline bool
230 0 : IsFormData() const
231 : {
232 0 : return mType == eFormData;
233 : }
234 :
235 : inline NonNull<mozilla::dom::FormData>&
236 : GetAsFormData()
237 : {
238 : MOZ_ASSERT(IsFormData(), "Wrong type!");
239 : return mValue.mFormData.Value();
240 : }
241 :
242 : inline mozilla::dom::FormData&
243 0 : GetAsFormData() const
244 : {
245 0 : MOZ_ASSERT(IsFormData(), "Wrong type!");
246 0 : return mValue.mFormData.Value();
247 : }
248 :
249 : inline NonNull<mozilla::dom::URLSearchParams>&
250 : RawSetAsURLSearchParams()
251 : {
252 : if (mType == eURLSearchParams) {
253 : return mValue.mURLSearchParams.Value();
254 : }
255 : MOZ_ASSERT(mType == eUninitialized);
256 : mType = eURLSearchParams;
257 : return mValue.mURLSearchParams.SetValue();
258 : }
259 :
260 : inline NonNull<mozilla::dom::URLSearchParams>&
261 : SetAsURLSearchParams()
262 : {
263 : if (mType == eURLSearchParams) {
264 : return mValue.mURLSearchParams.Value();
265 : }
266 : Uninit();
267 : mType = eURLSearchParams;
268 : return mValue.mURLSearchParams.SetValue();
269 : }
270 :
271 : inline bool
272 0 : IsURLSearchParams() const
273 : {
274 0 : return mType == eURLSearchParams;
275 : }
276 :
277 : inline NonNull<mozilla::dom::URLSearchParams>&
278 : GetAsURLSearchParams()
279 : {
280 : MOZ_ASSERT(IsURLSearchParams(), "Wrong type!");
281 : return mValue.mURLSearchParams.Value();
282 : }
283 :
284 : inline mozilla::dom::URLSearchParams&
285 0 : GetAsURLSearchParams() const
286 : {
287 0 : MOZ_ASSERT(IsURLSearchParams(), "Wrong type!");
288 0 : return mValue.mURLSearchParams.Value();
289 : }
290 :
291 : inline binding_detail::FakeString&
292 : RawSetAsUSVString()
293 : {
294 : if (mType == eUSVString) {
295 : return mValue.mUSVString.Value();
296 : }
297 : MOZ_ASSERT(mType == eUninitialized);
298 : mType = eUSVString;
299 : return mValue.mUSVString.SetValue();
300 : }
301 :
302 : inline binding_detail::FakeString&
303 : SetAsUSVString()
304 : {
305 : if (mType == eUSVString) {
306 : return mValue.mUSVString.Value();
307 : }
308 : Uninit();
309 : mType = eUSVString;
310 : return mValue.mUSVString.SetValue();
311 : }
312 :
313 : inline bool
314 0 : IsUSVString() const
315 : {
316 0 : return mType == eUSVString;
317 : }
318 :
319 : inline binding_detail::FakeString&
320 : GetAsUSVString()
321 : {
322 : MOZ_ASSERT(IsUSVString(), "Wrong type!");
323 : return mValue.mUSVString.Value();
324 : }
325 :
326 : inline const nsAString&
327 0 : GetAsUSVString() const
328 : {
329 0 : MOZ_ASSERT(IsUSVString(), "Wrong type!");
330 0 : return mValue.mUSVString.Value();
331 : }
332 :
333 : inline void
334 0 : Uninit()
335 : {
336 0 : switch (mType) {
337 : case eUninitialized: {
338 0 : break;
339 : }
340 : case eBlob: {
341 0 : DestroyBlob();
342 0 : break;
343 : }
344 : case eArrayBufferView: {
345 0 : DestroyArrayBufferView();
346 0 : break;
347 : }
348 : case eArrayBuffer: {
349 0 : DestroyArrayBuffer();
350 0 : break;
351 : }
352 : case eFormData: {
353 0 : DestroyFormData();
354 0 : break;
355 : }
356 : case eURLSearchParams: {
357 0 : DestroyURLSearchParams();
358 0 : break;
359 : }
360 : case eUSVString: {
361 0 : DestroyUSVString();
362 0 : break;
363 : }
364 : }
365 0 : }
366 :
367 : bool
368 : ToJSVal(JSContext* cx, JS::Handle<JSObject*> scopeObj, JS::MutableHandle<JS::Value> rval) const;
369 :
370 : private:
371 : inline void
372 0 : DestroyBlob()
373 : {
374 0 : MOZ_ASSERT(IsBlob(), "Wrong type!");
375 0 : mValue.mBlob.Destroy();
376 0 : mType = eUninitialized;
377 0 : }
378 :
379 : inline void
380 0 : DestroyArrayBufferView()
381 : {
382 0 : MOZ_ASSERT(IsArrayBufferView(), "Wrong type!");
383 0 : mValue.mArrayBufferView.Destroy();
384 0 : mType = eUninitialized;
385 0 : }
386 :
387 : inline void
388 0 : DestroyArrayBuffer()
389 : {
390 0 : MOZ_ASSERT(IsArrayBuffer(), "Wrong type!");
391 0 : mValue.mArrayBuffer.Destroy();
392 0 : mType = eUninitialized;
393 0 : }
394 :
395 : inline void
396 0 : DestroyFormData()
397 : {
398 0 : MOZ_ASSERT(IsFormData(), "Wrong type!");
399 0 : mValue.mFormData.Destroy();
400 0 : mType = eUninitialized;
401 0 : }
402 :
403 : inline void
404 0 : DestroyURLSearchParams()
405 : {
406 0 : MOZ_ASSERT(IsURLSearchParams(), "Wrong type!");
407 0 : mValue.mURLSearchParams.Destroy();
408 0 : mType = eUninitialized;
409 0 : }
410 :
411 : inline void
412 0 : DestroyUSVString()
413 : {
414 0 : MOZ_ASSERT(IsUSVString(), "Wrong type!");
415 0 : mValue.mUSVString.Destroy();
416 0 : mType = eUninitialized;
417 0 : }
418 : };
419 :
420 :
421 : class OwningBlobOrArrayBufferViewOrArrayBufferOrFormDataOrURLSearchParamsOrUSVString : public AllOwningUnionBase
422 : {
423 : friend void ImplCycleCollectionUnlink(OwningBlobOrArrayBufferViewOrArrayBufferOrFormDataOrURLSearchParamsOrUSVString& aUnion);
424 : enum Type
425 : {
426 : eUninitialized,
427 : eBlob,
428 : eArrayBufferView,
429 : eArrayBuffer,
430 : eFormData,
431 : eURLSearchParams,
432 : eUSVString
433 : };
434 :
435 0 : union Value
436 : {
437 : UnionMember<OwningNonNull<mozilla::dom::Blob> > mBlob;
438 : UnionMember<ArrayBufferView > mArrayBufferView;
439 : UnionMember<ArrayBuffer > mArrayBuffer;
440 : UnionMember<OwningNonNull<mozilla::dom::FormData> > mFormData;
441 : UnionMember<OwningNonNull<mozilla::dom::URLSearchParams> > mURLSearchParams;
442 : UnionMember<nsString > mUSVString;
443 :
444 : };
445 :
446 : Type mType;
447 : Value mValue;
448 :
449 : OwningBlobOrArrayBufferViewOrArrayBufferOrFormDataOrURLSearchParamsOrUSVString(const OwningBlobOrArrayBufferViewOrArrayBufferOrFormDataOrURLSearchParamsOrUSVString&) = delete;
450 : OwningBlobOrArrayBufferViewOrArrayBufferOrFormDataOrURLSearchParamsOrUSVString& operator=(const OwningBlobOrArrayBufferViewOrArrayBufferOrFormDataOrURLSearchParamsOrUSVString&) = delete;
451 : public:
452 0 : explicit inline OwningBlobOrArrayBufferViewOrArrayBufferOrFormDataOrURLSearchParamsOrUSVString()
453 0 : : mType(eUninitialized)
454 : {
455 0 : }
456 :
457 0 : inline ~OwningBlobOrArrayBufferViewOrArrayBufferOrFormDataOrURLSearchParamsOrUSVString()
458 0 : {
459 0 : Uninit();
460 0 : }
461 :
462 : OwningNonNull<mozilla::dom::Blob>&
463 : RawSetAsBlob();
464 :
465 : OwningNonNull<mozilla::dom::Blob>&
466 : SetAsBlob();
467 :
468 : bool
469 : TrySetToBlob(JSContext* cx, JS::Handle<JS::Value> value, bool& tryNext, bool passedToJSImpl = false);
470 :
471 : inline bool
472 0 : IsBlob() const
473 : {
474 0 : return mType == eBlob;
475 : }
476 :
477 : inline OwningNonNull<mozilla::dom::Blob>&
478 0 : GetAsBlob()
479 : {
480 0 : MOZ_ASSERT(IsBlob(), "Wrong type!");
481 0 : return mValue.mBlob.Value();
482 : }
483 :
484 : inline OwningNonNull<mozilla::dom::Blob> const &
485 0 : GetAsBlob() const
486 : {
487 0 : MOZ_ASSERT(IsBlob(), "Wrong type!");
488 0 : return mValue.mBlob.Value();
489 : }
490 :
491 : ArrayBufferView&
492 : RawSetAsArrayBufferView();
493 :
494 : ArrayBufferView&
495 : SetAsArrayBufferView();
496 :
497 : bool
498 : TrySetToArrayBufferView(JSContext* cx, JS::Handle<JS::Value> value, bool& tryNext, bool passedToJSImpl = false);
499 :
500 : inline bool
501 0 : IsArrayBufferView() const
502 : {
503 0 : return mType == eArrayBufferView;
504 : }
505 :
506 : inline ArrayBufferView&
507 0 : GetAsArrayBufferView()
508 : {
509 0 : MOZ_ASSERT(IsArrayBufferView(), "Wrong type!");
510 0 : return mValue.mArrayBufferView.Value();
511 : }
512 :
513 : inline ArrayBufferView const &
514 0 : GetAsArrayBufferView() const
515 : {
516 0 : MOZ_ASSERT(IsArrayBufferView(), "Wrong type!");
517 0 : return mValue.mArrayBufferView.Value();
518 : }
519 :
520 : ArrayBuffer&
521 : RawSetAsArrayBuffer();
522 :
523 : ArrayBuffer&
524 : SetAsArrayBuffer();
525 :
526 : bool
527 : TrySetToArrayBuffer(JSContext* cx, JS::Handle<JS::Value> value, bool& tryNext, bool passedToJSImpl = false);
528 :
529 : inline bool
530 0 : IsArrayBuffer() const
531 : {
532 0 : return mType == eArrayBuffer;
533 : }
534 :
535 : inline ArrayBuffer&
536 0 : GetAsArrayBuffer()
537 : {
538 0 : MOZ_ASSERT(IsArrayBuffer(), "Wrong type!");
539 0 : return mValue.mArrayBuffer.Value();
540 : }
541 :
542 : inline ArrayBuffer const &
543 0 : GetAsArrayBuffer() const
544 : {
545 0 : MOZ_ASSERT(IsArrayBuffer(), "Wrong type!");
546 0 : return mValue.mArrayBuffer.Value();
547 : }
548 :
549 : OwningNonNull<mozilla::dom::FormData>&
550 : RawSetAsFormData();
551 :
552 : OwningNonNull<mozilla::dom::FormData>&
553 : SetAsFormData();
554 :
555 : bool
556 : TrySetToFormData(JSContext* cx, JS::Handle<JS::Value> value, bool& tryNext, bool passedToJSImpl = false);
557 :
558 : inline bool
559 0 : IsFormData() const
560 : {
561 0 : return mType == eFormData;
562 : }
563 :
564 : inline OwningNonNull<mozilla::dom::FormData>&
565 0 : GetAsFormData()
566 : {
567 0 : MOZ_ASSERT(IsFormData(), "Wrong type!");
568 0 : return mValue.mFormData.Value();
569 : }
570 :
571 : inline OwningNonNull<mozilla::dom::FormData> const &
572 0 : GetAsFormData() const
573 : {
574 0 : MOZ_ASSERT(IsFormData(), "Wrong type!");
575 0 : return mValue.mFormData.Value();
576 : }
577 :
578 : OwningNonNull<mozilla::dom::URLSearchParams>&
579 : RawSetAsURLSearchParams();
580 :
581 : OwningNonNull<mozilla::dom::URLSearchParams>&
582 : SetAsURLSearchParams();
583 :
584 : bool
585 : TrySetToURLSearchParams(JSContext* cx, JS::Handle<JS::Value> value, bool& tryNext, bool passedToJSImpl = false);
586 :
587 : inline bool
588 0 : IsURLSearchParams() const
589 : {
590 0 : return mType == eURLSearchParams;
591 : }
592 :
593 : inline OwningNonNull<mozilla::dom::URLSearchParams>&
594 0 : GetAsURLSearchParams()
595 : {
596 0 : MOZ_ASSERT(IsURLSearchParams(), "Wrong type!");
597 0 : return mValue.mURLSearchParams.Value();
598 : }
599 :
600 : inline OwningNonNull<mozilla::dom::URLSearchParams> const &
601 0 : GetAsURLSearchParams() const
602 : {
603 0 : MOZ_ASSERT(IsURLSearchParams(), "Wrong type!");
604 0 : return mValue.mURLSearchParams.Value();
605 : }
606 :
607 : nsString&
608 : RawSetAsUSVString();
609 :
610 : nsString&
611 : SetAsUSVString();
612 :
613 : bool
614 : TrySetToUSVString(JSContext* cx, JS::Handle<JS::Value> value, bool& tryNext, bool passedToJSImpl = false);
615 :
616 : inline void
617 : SetStringData(const nsString::char_type* aData, nsString::size_type aLength)
618 : {
619 : RawSetAsUSVString().Assign(aData, aLength);
620 : }
621 :
622 : inline bool
623 0 : IsUSVString() const
624 : {
625 0 : return mType == eUSVString;
626 : }
627 :
628 : inline nsString&
629 : GetAsUSVString()
630 : {
631 : MOZ_ASSERT(IsUSVString(), "Wrong type!");
632 : return mValue.mUSVString.Value();
633 : }
634 :
635 : inline nsString const &
636 0 : GetAsUSVString() const
637 : {
638 0 : MOZ_ASSERT(IsUSVString(), "Wrong type!");
639 0 : return mValue.mUSVString.Value();
640 : }
641 :
642 : void
643 : Uninit();
644 :
645 : bool
646 : ToJSVal(JSContext* cx, JS::Handle<JSObject*> scopeObj, JS::MutableHandle<JS::Value> rval) const;
647 :
648 : void
649 : TraceUnion(JSTracer* trc);
650 :
651 : private:
652 : void
653 : DestroyBlob();
654 :
655 : void
656 : DestroyArrayBufferView();
657 :
658 : void
659 : DestroyArrayBuffer();
660 :
661 : void
662 : DestroyFormData();
663 :
664 : void
665 : DestroyURLSearchParams();
666 :
667 : void
668 : DestroyUSVString();
669 : };
670 :
671 :
672 : } // namespace dom
673 : } // namespace mozilla
674 :
675 : #endif // mozilla_dom_FetchBinding_h
|