Line data Source code
1 : /* THIS FILE IS AUTOGENERATED FROM Document.webidl BY Codegen.py - DO NOT EDIT */
2 :
3 : #include "AtomList.h"
4 : #include "CustomElementRegistry.h"
5 : #include "DOMPointBinding.h"
6 : #include "DocumentBinding.h"
7 : #include "EventHandlerBinding.h"
8 : #include "GeometryUtilsBinding.h"
9 : #include "NodeBinding.h"
10 : #include "NodeFilterBinding.h"
11 : #include "WebComponentsBinding.h"
12 : #include "WrapperFactory.h"
13 : #include "XPathNSResolverBinding.h"
14 : #include "jsapi.h"
15 : #include "mozilla/FloatingPoint.h"
16 : #include "mozilla/OwningNonNull.h"
17 : #include "mozilla/Preferences.h"
18 : #include "mozilla/dom/Animation.h"
19 : #include "mozilla/dom/AnonymousContent.h"
20 : #include "mozilla/dom/Attr.h"
21 : #include "mozilla/dom/BindingUtils.h"
22 : #include "mozilla/dom/CDATASection.h"
23 : #include "mozilla/dom/Comment.h"
24 : #include "mozilla/dom/CustomElementRegistry.h"
25 : #include "mozilla/dom/DOMImplementation.h"
26 : #include "mozilla/dom/DOMJSClass.h"
27 : #include "mozilla/dom/DOMPoint.h"
28 : #include "mozilla/dom/DOMQuad.h"
29 : #include "mozilla/dom/DOMRect.h"
30 : #include "mozilla/dom/DOMStringList.h"
31 : #include "mozilla/dom/DocumentFragment.h"
32 : #include "mozilla/dom/DocumentTimeline.h"
33 : #include "mozilla/dom/DocumentType.h"
34 : #include "mozilla/dom/Element.h"
35 : #include "mozilla/dom/Event.h"
36 : #include "mozilla/dom/EventTarget.h"
37 : #include "mozilla/dom/FontFaceSet.h"
38 : #include "mozilla/dom/Location.h"
39 : #include "mozilla/dom/NodeIterator.h"
40 : #include "mozilla/dom/NonRefcountedDOMObject.h"
41 : #include "mozilla/dom/Nullable.h"
42 : #include "mozilla/dom/PrimitiveConversions.h"
43 : #include "mozilla/dom/ProcessingInstruction.h"
44 : #include "mozilla/dom/Promise.h"
45 : #include "mozilla/dom/SVGSVGElement.h"
46 : #include "mozilla/dom/ScriptSettings.h"
47 : #include "mozilla/dom/SimpleGlobalObject.h"
48 : #include "mozilla/dom/StyleSheetList.h"
49 : #include "mozilla/dom/ToJSValue.h"
50 : #include "mozilla/dom/Touch.h"
51 : #include "mozilla/dom/TouchEvent.h"
52 : #include "mozilla/dom/TreeWalker.h"
53 : #include "mozilla/dom/UnionConversions.h"
54 : #include "mozilla/dom/UnionTypes.h"
55 : #include "mozilla/dom/XPathExpression.h"
56 : #include "mozilla/dom/XPathResult.h"
57 : #include "mozilla/dom/XrayExpandoClass.h"
58 : #include "nsContentList.h"
59 : #include "nsContentUtils.h"
60 : #include "nsDOMCaretPosition.h"
61 : #include "nsDocument.h"
62 : #include "nsGenericHTMLElement.h"
63 : #include "nsGlobalWindow.h"
64 : #include "nsIDocShell.h"
65 : #include "nsIDocument.h"
66 : #include "nsILoadGroup.h"
67 : #include "nsINode.h"
68 : #include "nsINodeList.h"
69 : #include "nsISupports.h"
70 : #include "nsIURI.h"
71 : #include "nsPIDOMWindow.h"
72 : #include "nsRange.h"
73 : #include "nsTextNode.h"
74 : #include "xpcjsid.h"
75 :
76 : namespace mozilla {
77 : namespace dom {
78 :
79 : namespace VisibilityStateValues {
80 : extern const EnumEntry strings[4] = {
81 : {"hidden", 6},
82 : {"visible", 7},
83 : {"prerender", 9},
84 : { nullptr, 0 }
85 : };
86 : } // namespace VisibilityStateValues
87 :
88 : bool
89 0 : ToJSValue(JSContext* aCx, VisibilityState aArgument, JS::MutableHandle<JS::Value> aValue)
90 : {
91 0 : MOZ_ASSERT(uint32_t(aArgument) < ArrayLength(VisibilityStateValues::strings));
92 : JSString* resultStr =
93 0 : JS_NewStringCopyN(aCx, VisibilityStateValues::strings[uint32_t(aArgument)].value,
94 0 : VisibilityStateValues::strings[uint32_t(aArgument)].length);
95 0 : if (!resultStr) {
96 0 : return false;
97 : }
98 0 : aValue.setString(resultStr);
99 0 : return true;
100 : }
101 :
102 :
103 : namespace FlashClassificationValues {
104 : extern const EnumEntry strings[5] = {
105 : {"unclassified", 12},
106 : {"unknown", 7},
107 : {"allowed", 7},
108 : {"denied", 6},
109 : { nullptr, 0 }
110 : };
111 : } // namespace FlashClassificationValues
112 :
113 : bool
114 0 : ToJSValue(JSContext* aCx, FlashClassification aArgument, JS::MutableHandle<JS::Value> aValue)
115 : {
116 0 : MOZ_ASSERT(uint32_t(aArgument) < ArrayLength(FlashClassificationValues::strings));
117 : JSString* resultStr =
118 0 : JS_NewStringCopyN(aCx, FlashClassificationValues::strings[uint32_t(aArgument)].value,
119 0 : FlashClassificationValues::strings[uint32_t(aArgument)].length);
120 0 : if (!resultStr) {
121 0 : return false;
122 : }
123 0 : aValue.setString(resultStr);
124 0 : return true;
125 : }
126 :
127 :
128 :
129 0 : ElementCreationOptions::ElementCreationOptions()
130 : {
131 : // Safe to pass a null context if we pass a null value
132 0 : Init(nullptr, JS::NullHandleValue);
133 0 : }
134 :
135 :
136 :
137 : bool
138 1 : ElementCreationOptions::InitIds(JSContext* cx, ElementCreationOptionsAtoms* atomsCache)
139 : {
140 1 : MOZ_ASSERT(!*reinterpret_cast<jsid**>(atomsCache));
141 :
142 : // Initialize these in reverse order so that any failure leaves the first one
143 : // uninitialized.
144 2 : if (!atomsCache->pseudo_id.init(cx, "pseudo") ||
145 1 : !atomsCache->is_id.init(cx, "is")) {
146 0 : return false;
147 : }
148 1 : return true;
149 : }
150 :
151 : bool
152 56 : ElementCreationOptions::Init(JSContext* cx, JS::Handle<JS::Value> val, const char* sourceDescription, bool passedToJSImpl)
153 : {
154 : // Passing a null JSContext is OK only if we're initing from null,
155 : // Since in that case we will not have to do any property gets
156 : // Also evaluate isNullOrUndefined in order to avoid false-positive
157 : // checkers by static analysis tools
158 56 : MOZ_ASSERT_IF(!cx, val.isNull() && val.isNullOrUndefined());
159 56 : ElementCreationOptionsAtoms* atomsCache = nullptr;
160 56 : if (cx) {
161 56 : atomsCache = GetAtomCache<ElementCreationOptionsAtoms>(cx);
162 56 : if (!*reinterpret_cast<jsid**>(atomsCache) && !InitIds(cx, atomsCache)) {
163 0 : return false;
164 : }
165 : }
166 :
167 56 : if (!IsConvertibleToDictionary(val)) {
168 0 : return ThrowErrorMessage(cx, MSG_NOT_DICTIONARY, sourceDescription);
169 : }
170 :
171 56 : bool isNull = val.isNullOrUndefined();
172 : // We only need these if !isNull, in which case we have |cx|.
173 112 : Maybe<JS::Rooted<JSObject *> > object;
174 112 : Maybe<JS::Rooted<JS::Value> > temp;
175 56 : if (!isNull) {
176 0 : MOZ_ASSERT(cx);
177 0 : object.emplace(cx, &val.toObject());
178 0 : temp.emplace(cx);
179 : }
180 56 : if (!isNull) {
181 0 : if (!JS_GetPropertyById(cx, *object, atomsCache->is_id, temp.ptr())) {
182 0 : return false;
183 : }
184 : }
185 56 : if (!isNull && !temp->isUndefined()) {
186 0 : mIs.Construct();
187 0 : if (!ConvertJSValueToString(cx, temp.ref(), eStringify, eStringify, (mIs.Value()))) {
188 0 : return false;
189 : }
190 0 : mIsAnyMemberPresent = true;
191 : }
192 :
193 56 : if (!isNull) {
194 0 : if (nsContentUtils::ThreadsafeIsSystemCaller(cx)) {
195 0 : if (!JS_GetPropertyById(cx, *object, atomsCache->pseudo_id, temp.ptr())) {
196 0 : return false;
197 : }
198 : } else {
199 0 : temp->setUndefined();
200 : }
201 : }
202 56 : if (!isNull && !temp->isUndefined()) {
203 0 : mPseudo.Construct();
204 0 : if (!ConvertJSValueToString(cx, temp.ref(), eStringify, eStringify, (mPseudo.Value()))) {
205 0 : return false;
206 : }
207 0 : mIsAnyMemberPresent = true;
208 : }
209 56 : return true;
210 : }
211 :
212 : bool
213 0 : ElementCreationOptions::Init(const nsAString& aJSON)
214 : {
215 0 : AutoJSAPI jsapi;
216 0 : JSObject* cleanGlobal = SimpleGlobalObject::Create(SimpleGlobalObject::GlobalType::BindingDetail);
217 0 : if (!cleanGlobal) {
218 0 : return false;
219 : }
220 0 : if (!jsapi.Init(cleanGlobal)) {
221 0 : return false;
222 : }
223 0 : JSContext* cx = jsapi.cx();
224 0 : JS::Rooted<JS::Value> json(cx);
225 0 : bool ok = ParseJSON(cx, aJSON, &json);
226 0 : NS_ENSURE_TRUE(ok, false);
227 0 : return Init(cx, json);
228 : }
229 :
230 : bool
231 0 : ElementCreationOptions::ToObjectInternal(JSContext* cx, JS::MutableHandle<JS::Value> rval) const
232 : {
233 0 : ElementCreationOptionsAtoms* atomsCache = GetAtomCache<ElementCreationOptionsAtoms>(cx);
234 0 : if (!*reinterpret_cast<jsid**>(atomsCache) && !InitIds(cx, atomsCache)) {
235 0 : return false;
236 : }
237 :
238 0 : JS::Rooted<JSObject*> obj(cx, JS_NewPlainObject(cx));
239 0 : if (!obj) {
240 0 : return false;
241 : }
242 0 : rval.set(JS::ObjectValue(*obj));
243 :
244 0 : if (mIs.WasPassed()) {
245 : do {
246 : // block for our 'break' successCode and scope for 'temp' and 'currentValue'
247 0 : JS::Rooted<JS::Value> temp(cx);
248 0 : nsString const & currentValue = mIs.InternalValue();
249 0 : if (!xpc::NonVoidStringToJsval(cx, currentValue, &temp)) {
250 0 : return false;
251 : }
252 0 : if (!JS_DefinePropertyById(cx, obj, atomsCache->is_id, temp, JSPROP_ENUMERATE)) {
253 0 : return false;
254 : }
255 0 : break;
256 : } while(0);
257 : }
258 :
259 0 : if (nsContentUtils::ThreadsafeIsSystemCaller(cx)) {
260 0 : if (mPseudo.WasPassed()) {
261 : do {
262 : // block for our 'break' successCode and scope for 'temp' and 'currentValue'
263 0 : JS::Rooted<JS::Value> temp(cx);
264 0 : nsString const & currentValue = mPseudo.InternalValue();
265 0 : if (!xpc::NonVoidStringToJsval(cx, currentValue, &temp)) {
266 0 : return false;
267 : }
268 0 : if (!JS_DefinePropertyById(cx, obj, atomsCache->pseudo_id, temp, JSPROP_ENUMERATE)) {
269 0 : return false;
270 : }
271 0 : break;
272 : } while(0);
273 : }
274 : }
275 :
276 0 : return true;
277 : }
278 :
279 : bool
280 0 : ElementCreationOptions::ToJSON(nsAString& aJSON) const
281 : {
282 0 : AutoJSAPI jsapi;
283 0 : jsapi.Init();
284 0 : JSContext *cx = jsapi.cx();
285 : // It's safe to use UnprivilegedJunkScopeOrWorkerGlobal here
286 : // because we'll only be creating objects, in ways that have no
287 : // side-effects, followed by a call to JS::ToJSONMaybeSafely,
288 : // which likewise guarantees no side-effects for the sorts of
289 : // things we will pass it.
290 0 : JSAutoCompartment ac(cx, binding_detail::UnprivilegedJunkScopeOrWorkerGlobal());
291 0 : JS::Rooted<JS::Value> val(cx);
292 0 : if (!ToObjectInternal(cx, &val)) {
293 0 : return false;
294 : }
295 0 : JS::Rooted<JSObject*> obj(cx, &val.toObject());
296 0 : return StringifyToJSON(cx, obj, aJSON);
297 : }
298 :
299 : void
300 0 : ElementCreationOptions::TraceDictionary(JSTracer* trc)
301 : {
302 0 : }
303 :
304 : ElementCreationOptions&
305 0 : ElementCreationOptions::operator=(const ElementCreationOptions& aOther)
306 : {
307 0 : mIs.Reset();
308 0 : if (aOther.mIs.WasPassed()) {
309 0 : mIs.Construct(aOther.mIs.Value());
310 : }
311 0 : mPseudo.Reset();
312 0 : if (aOther.mPseudo.WasPassed()) {
313 0 : mPseudo.Construct(aOther.mPseudo.Value());
314 : }
315 0 : return *this;
316 : }
317 :
318 : namespace binding_detail {
319 : } // namespace binding_detail
320 :
321 :
322 : bool
323 0 : ElementCreationOptionsOrString::ToJSVal(JSContext* cx, JS::Handle<JSObject*> scopeObj, JS::MutableHandle<JS::Value> rval) const
324 : {
325 0 : switch (mType) {
326 : case eUninitialized: {
327 0 : return false;
328 : break;
329 : }
330 : case eElementCreationOptions: {
331 0 : if (!mValue.mElementCreationOptions.Value().ToObjectInternal(cx, rval)) {
332 0 : return false;
333 : }
334 0 : return true;
335 : break;
336 : }
337 : case eString: {
338 0 : if (!xpc::NonVoidStringToJsval(cx, mValue.mString.Value(), rval)) {
339 0 : return false;
340 : }
341 0 : return true;
342 : break;
343 : }
344 : default: {
345 0 : return false;
346 : break;
347 : }
348 : }
349 :
350 : return false;
351 : }
352 :
353 :
354 : ElementCreationOptions&
355 0 : OwningElementCreationOptionsOrString::RawSetAsElementCreationOptions()
356 : {
357 0 : if (mType == eElementCreationOptions) {
358 0 : return mValue.mElementCreationOptions.Value();
359 : }
360 0 : MOZ_ASSERT(mType == eUninitialized);
361 0 : mType = eElementCreationOptions;
362 0 : return mValue.mElementCreationOptions.SetValue();
363 : }
364 :
365 : ElementCreationOptions&
366 0 : OwningElementCreationOptionsOrString::SetAsElementCreationOptions()
367 : {
368 0 : if (mType == eElementCreationOptions) {
369 0 : return mValue.mElementCreationOptions.Value();
370 : }
371 0 : Uninit();
372 0 : mType = eElementCreationOptions;
373 0 : return mValue.mElementCreationOptions.SetValue();
374 : }
375 :
376 : bool
377 0 : OwningElementCreationOptionsOrString::TrySetToElementCreationOptions(JSContext* cx, JS::Handle<JS::Value> value, bool& tryNext, bool passedToJSImpl)
378 : {
379 0 : tryNext = false;
380 : { // scope for memberSlot
381 0 : ElementCreationOptions& memberSlot = RawSetAsElementCreationOptions();
382 0 : if (!IsConvertibleToDictionary(value)) {
383 0 : DestroyElementCreationOptions();
384 0 : tryNext = true;
385 0 : return true;
386 : }
387 0 : if (!memberSlot.Init(cx, value, "Member of ElementCreationOptionsOrString", passedToJSImpl)) {
388 0 : return false;
389 : }
390 : }
391 0 : return true;
392 : }
393 :
394 : void
395 0 : OwningElementCreationOptionsOrString::DestroyElementCreationOptions()
396 : {
397 0 : MOZ_ASSERT(IsElementCreationOptions(), "Wrong type!");
398 0 : mValue.mElementCreationOptions.Destroy();
399 0 : mType = eUninitialized;
400 0 : }
401 :
402 :
403 :
404 :
405 : nsString&
406 0 : OwningElementCreationOptionsOrString::RawSetAsString()
407 : {
408 0 : if (mType == eString) {
409 0 : return mValue.mString.Value();
410 : }
411 0 : MOZ_ASSERT(mType == eUninitialized);
412 0 : mType = eString;
413 0 : return mValue.mString.SetValue();
414 : }
415 :
416 : nsString&
417 0 : OwningElementCreationOptionsOrString::SetAsString()
418 : {
419 0 : if (mType == eString) {
420 0 : return mValue.mString.Value();
421 : }
422 0 : Uninit();
423 0 : mType = eString;
424 0 : return mValue.mString.SetValue();
425 : }
426 :
427 : bool
428 0 : OwningElementCreationOptionsOrString::TrySetToString(JSContext* cx, JS::Handle<JS::Value> value, bool& tryNext, bool passedToJSImpl)
429 : {
430 0 : tryNext = false;
431 : { // scope for memberSlot
432 0 : nsString& memberSlot = RawSetAsString();
433 0 : if (!ConvertJSValueToString(cx, value, eStringify, eStringify, memberSlot)) {
434 0 : return false;
435 : }
436 : }
437 0 : return true;
438 : }
439 :
440 :
441 : void
442 0 : OwningElementCreationOptionsOrString::DestroyString()
443 : {
444 0 : MOZ_ASSERT(IsString(), "Wrong type!");
445 0 : mValue.mString.Destroy();
446 0 : mType = eUninitialized;
447 0 : }
448 :
449 :
450 :
451 :
452 : void
453 0 : OwningElementCreationOptionsOrString::Uninit()
454 : {
455 0 : switch (mType) {
456 : case eUninitialized: {
457 0 : break;
458 : }
459 : case eElementCreationOptions: {
460 0 : DestroyElementCreationOptions();
461 0 : break;
462 : }
463 : case eString: {
464 0 : DestroyString();
465 0 : break;
466 : }
467 : }
468 0 : }
469 :
470 : bool
471 0 : OwningElementCreationOptionsOrString::ToJSVal(JSContext* cx, JS::Handle<JSObject*> scopeObj, JS::MutableHandle<JS::Value> rval) const
472 : {
473 0 : switch (mType) {
474 : case eUninitialized: {
475 0 : return false;
476 : break;
477 : }
478 : case eElementCreationOptions: {
479 0 : if (!mValue.mElementCreationOptions.Value().ToObjectInternal(cx, rval)) {
480 0 : return false;
481 : }
482 0 : return true;
483 : break;
484 : }
485 : case eString: {
486 0 : if (!xpc::NonVoidStringToJsval(cx, mValue.mString.Value(), rval)) {
487 0 : return false;
488 : }
489 0 : return true;
490 : break;
491 : }
492 : default: {
493 0 : return false;
494 : break;
495 : }
496 : }
497 :
498 : return false;
499 : }
500 :
501 : void
502 0 : OwningElementCreationOptionsOrString::TraceUnion(JSTracer* trc)
503 : {
504 0 : }
505 :
506 : OwningElementCreationOptionsOrString&
507 0 : OwningElementCreationOptionsOrString::operator=(const OwningElementCreationOptionsOrString& aOther)
508 : {
509 0 : switch (aOther.mType) {
510 : case eUninitialized: {
511 0 : MOZ_ASSERT(mType == eUninitialized,
512 : "We need to destroy ourselves?");
513 0 : break;
514 : }
515 : case eElementCreationOptions: {
516 0 : SetAsElementCreationOptions() = aOther.GetAsElementCreationOptions();
517 0 : break;
518 : }
519 : case eString: {
520 0 : SetAsString() = aOther.GetAsString();
521 0 : break;
522 : }
523 : }
524 0 : return *this;
525 : }
526 :
527 :
528 : namespace DocumentBinding {
529 :
530 : static_assert(IsRefcounted<NativeType>::value == IsRefcounted<NodeBinding::NativeType>::value,
531 : "Can't inherit from an interface with a different ownership model.");
532 :
533 : static bool
534 0 : get_implementation(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
535 : {
536 0 : binding_detail::FastErrorResult rv;
537 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMImplementation>(self->GetImplementation(rv)));
538 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
539 0 : return false;
540 : }
541 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
542 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
543 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
544 0 : return false;
545 : }
546 0 : return true;
547 : }
548 :
549 : static const JSJitInfo implementation_getterinfo = {
550 : { (JSJitGetterOp)get_implementation },
551 : { prototypes::id::Document },
552 : { PrototypeTraits<prototypes::id::Document>::Depth },
553 : JSJitInfo::Getter,
554 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
555 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
556 : false, /* isInfallible. False in setters. */
557 : false, /* isMovable. Not relevant for setters. */
558 : false, /* isEliminatable. Not relevant for setters. */
559 : false, /* isAlwaysInSlot. Only relevant for getters. */
560 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
561 : false, /* isTypedMethod. Only relevant for methods. */
562 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
563 : };
564 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
565 : static_assert(0 < 1, "There is no slot for us");
566 :
567 : static bool
568 0 : get_URL(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
569 : {
570 0 : binding_detail::FastErrorResult rv;
571 0 : DOMString result;
572 0 : self->GetDocumentURIFromJS(result, nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem, rv);
573 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
574 0 : return false;
575 : }
576 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
577 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
578 0 : return false;
579 : }
580 0 : return true;
581 : }
582 :
583 : static const JSJitInfo URL_getterinfo = {
584 : { (JSJitGetterOp)get_URL },
585 : { prototypes::id::Document },
586 : { PrototypeTraits<prototypes::id::Document>::Depth },
587 : JSJitInfo::Getter,
588 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
589 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
590 : false, /* isInfallible. False in setters. */
591 : false, /* isMovable. Not relevant for setters. */
592 : false, /* isEliminatable. Not relevant for setters. */
593 : false, /* isAlwaysInSlot. Only relevant for getters. */
594 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
595 : false, /* isTypedMethod. Only relevant for methods. */
596 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
597 : };
598 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
599 : static_assert(0 < 1, "There is no slot for us");
600 :
601 : static bool
602 12 : get_documentURI(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
603 : {
604 24 : binding_detail::FastErrorResult rv;
605 24 : DOMString result;
606 12 : self->GetDocumentURIFromJS(result, nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem, rv);
607 12 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
608 0 : return false;
609 : }
610 12 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
611 12 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
612 0 : return false;
613 : }
614 12 : return true;
615 : }
616 :
617 : static const JSJitInfo documentURI_getterinfo = {
618 : { (JSJitGetterOp)get_documentURI },
619 : { prototypes::id::Document },
620 : { PrototypeTraits<prototypes::id::Document>::Depth },
621 : JSJitInfo::Getter,
622 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
623 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
624 : false, /* isInfallible. False in setters. */
625 : false, /* isMovable. Not relevant for setters. */
626 : false, /* isEliminatable. Not relevant for setters. */
627 : false, /* isAlwaysInSlot. Only relevant for getters. */
628 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
629 : false, /* isTypedMethod. Only relevant for methods. */
630 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
631 : };
632 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
633 : static_assert(0 < 1, "There is no slot for us");
634 :
635 : static bool
636 0 : get_compatMode(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
637 : {
638 0 : DOMString result;
639 0 : self->GetCompatMode(result);
640 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
641 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
642 0 : return false;
643 : }
644 0 : return true;
645 : }
646 :
647 : static const JSJitInfo compatMode_getterinfo = {
648 : { (JSJitGetterOp)get_compatMode },
649 : { prototypes::id::Document },
650 : { PrototypeTraits<prototypes::id::Document>::Depth },
651 : JSJitInfo::Getter,
652 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
653 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
654 : false, /* isInfallible. False in setters. */
655 : true, /* isMovable. Not relevant for setters. */
656 : true, /* isEliminatable. Not relevant for setters. */
657 : false, /* isAlwaysInSlot. Only relevant for getters. */
658 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
659 : false, /* isTypedMethod. Only relevant for methods. */
660 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
661 : };
662 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
663 : static_assert(0 < 1, "There is no slot for us");
664 :
665 : static bool
666 5 : get_characterSet(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
667 : {
668 10 : DOMString result;
669 5 : self->GetCharacterSet(result);
670 5 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
671 5 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
672 0 : return false;
673 : }
674 5 : return true;
675 : }
676 :
677 : static const JSJitInfo characterSet_getterinfo = {
678 : { (JSJitGetterOp)get_characterSet },
679 : { prototypes::id::Document },
680 : { PrototypeTraits<prototypes::id::Document>::Depth },
681 : JSJitInfo::Getter,
682 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
683 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
684 : false, /* isInfallible. False in setters. */
685 : true, /* isMovable. Not relevant for setters. */
686 : true, /* isEliminatable. Not relevant for setters. */
687 : false, /* isAlwaysInSlot. Only relevant for getters. */
688 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
689 : false, /* isTypedMethod. Only relevant for methods. */
690 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
691 : };
692 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
693 : static_assert(0 < 1, "There is no slot for us");
694 :
695 : static bool
696 0 : get_charset(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
697 : {
698 0 : DOMString result;
699 0 : self->GetCharacterSet(result);
700 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
701 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
702 0 : return false;
703 : }
704 0 : return true;
705 : }
706 :
707 : static const JSJitInfo charset_getterinfo = {
708 : { (JSJitGetterOp)get_charset },
709 : { prototypes::id::Document },
710 : { PrototypeTraits<prototypes::id::Document>::Depth },
711 : JSJitInfo::Getter,
712 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
713 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
714 : false, /* isInfallible. False in setters. */
715 : true, /* isMovable. Not relevant for setters. */
716 : true, /* isEliminatable. Not relevant for setters. */
717 : false, /* isAlwaysInSlot. Only relevant for getters. */
718 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
719 : false, /* isTypedMethod. Only relevant for methods. */
720 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
721 : };
722 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
723 : static_assert(0 < 1, "There is no slot for us");
724 :
725 : static bool
726 0 : get_inputEncoding(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
727 : {
728 0 : DOMString result;
729 0 : self->GetCharacterSet(result);
730 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
731 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
732 0 : return false;
733 : }
734 0 : return true;
735 : }
736 :
737 : static const JSJitInfo inputEncoding_getterinfo = {
738 : { (JSJitGetterOp)get_inputEncoding },
739 : { prototypes::id::Document },
740 : { PrototypeTraits<prototypes::id::Document>::Depth },
741 : JSJitInfo::Getter,
742 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
743 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
744 : false, /* isInfallible. False in setters. */
745 : true, /* isMovable. Not relevant for setters. */
746 : true, /* isEliminatable. Not relevant for setters. */
747 : false, /* isAlwaysInSlot. Only relevant for getters. */
748 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
749 : false, /* isTypedMethod. Only relevant for methods. */
750 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
751 : };
752 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
753 : static_assert(0 < 1, "There is no slot for us");
754 :
755 : static bool
756 9 : get_contentType(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
757 : {
758 18 : DOMString result;
759 9 : self->GetContentType(result);
760 9 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
761 9 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
762 0 : return false;
763 : }
764 9 : return true;
765 : }
766 :
767 : static const JSJitInfo contentType_getterinfo = {
768 : { (JSJitGetterOp)get_contentType },
769 : { prototypes::id::Document },
770 : { PrototypeTraits<prototypes::id::Document>::Depth },
771 : JSJitInfo::Getter,
772 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
773 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
774 : false, /* isInfallible. False in setters. */
775 : true, /* isMovable. Not relevant for setters. */
776 : true, /* isEliminatable. Not relevant for setters. */
777 : false, /* isAlwaysInSlot. Only relevant for getters. */
778 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
779 : false, /* isTypedMethod. Only relevant for methods. */
780 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
781 : };
782 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
783 : static_assert(0 < 1, "There is no slot for us");
784 :
785 : static bool
786 0 : get_doctype(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
787 : {
788 0 : auto result(StrongOrRawPtr<mozilla::dom::DocumentType>(self->GetDoctype()));
789 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
790 0 : if (!result) {
791 0 : args.rval().setNull();
792 0 : return true;
793 : }
794 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
795 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
796 0 : return false;
797 : }
798 0 : return true;
799 : }
800 :
801 : static const JSJitInfo doctype_getterinfo = {
802 : { (JSJitGetterOp)get_doctype },
803 : { prototypes::id::Document },
804 : { PrototypeTraits<prototypes::id::Document>::Depth },
805 : JSJitInfo::Getter,
806 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
807 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
808 : false, /* isInfallible. False in setters. */
809 : true, /* isMovable. Not relevant for setters. */
810 : true, /* isEliminatable. Not relevant for setters. */
811 : false, /* isAlwaysInSlot. Only relevant for getters. */
812 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
813 : false, /* isTypedMethod. Only relevant for methods. */
814 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
815 : };
816 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
817 : static_assert(0 < 1, "There is no slot for us");
818 :
819 : static bool
820 13 : get_documentElement(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
821 : {
822 13 : auto result(StrongOrRawPtr<mozilla::dom::Element>(self->GetDocumentElement()));
823 13 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
824 13 : if (!result) {
825 0 : args.rval().setNull();
826 0 : return true;
827 : }
828 13 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
829 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
830 0 : return false;
831 : }
832 13 : return true;
833 : }
834 :
835 : static const JSJitInfo documentElement_getterinfo = {
836 : { (JSJitGetterOp)get_documentElement },
837 : { prototypes::id::Document },
838 : { PrototypeTraits<prototypes::id::Document>::Depth },
839 : JSJitInfo::Getter,
840 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
841 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
842 : false, /* isInfallible. False in setters. */
843 : true, /* isMovable. Not relevant for setters. */
844 : true, /* isEliminatable. Not relevant for setters. */
845 : false, /* isAlwaysInSlot. Only relevant for getters. */
846 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
847 : false, /* isTypedMethod. Only relevant for methods. */
848 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
849 : };
850 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
851 : static_assert(0 < 1, "There is no slot for us");
852 :
853 : static bool
854 0 : getElementsByTagName(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
855 : {
856 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
857 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.getElementsByTagName");
858 : }
859 0 : binding_detail::FakeString arg0;
860 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
861 0 : return false;
862 : }
863 0 : auto result(StrongOrRawPtr<nsIHTMLCollection>(self->GetElementsByTagName(NonNullHelper(Constify(arg0)))));
864 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
865 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
866 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
867 0 : return false;
868 : }
869 0 : return true;
870 : }
871 :
872 : static const JSJitInfo::ArgType getElementsByTagName_methodinfo_argTypes[] = { JSJitInfo::String, JSJitInfo::ArgTypeListEnd };
873 : static const JSTypedMethodJitInfo getElementsByTagName_methodinfo = {
874 : {
875 : { (JSJitGetterOp)getElementsByTagName },
876 : { prototypes::id::Document },
877 : { PrototypeTraits<prototypes::id::Document>::Depth },
878 : JSJitInfo::Method,
879 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
880 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
881 : false, /* isInfallible. False in setters. */
882 : true, /* isMovable. Not relevant for setters. */
883 : true, /* isEliminatable. Not relevant for setters. */
884 : false, /* isAlwaysInSlot. Only relevant for getters. */
885 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
886 : true, /* isTypedMethod. Only relevant for methods. */
887 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
888 : },
889 : getElementsByTagName_methodinfo_argTypes
890 : };
891 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
892 : static_assert(0 < 1, "There is no slot for us");
893 :
894 : static bool
895 0 : getElementsByTagNameNS(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
896 : {
897 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
898 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.getElementsByTagNameNS");
899 : }
900 0 : binding_detail::FakeString arg0;
901 0 : if (!ConvertJSValueToString(cx, args[0], eNull, eNull, arg0)) {
902 0 : return false;
903 : }
904 0 : binding_detail::FakeString arg1;
905 0 : if (!ConvertJSValueToString(cx, args[1], eStringify, eStringify, arg1)) {
906 0 : return false;
907 : }
908 0 : binding_detail::FastErrorResult rv;
909 0 : auto result(StrongOrRawPtr<nsIHTMLCollection>(self->GetElementsByTagNameNS(NonNullHelper(Constify(arg0)), NonNullHelper(Constify(arg1)), rv)));
910 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
911 0 : return false;
912 : }
913 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
914 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
915 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
916 0 : return false;
917 : }
918 0 : return true;
919 : }
920 :
921 : static const JSJitInfo::ArgType getElementsByTagNameNS_methodinfo_argTypes[] = { JSJitInfo::ArgType(JSJitInfo::Null | JSJitInfo::String), JSJitInfo::String, JSJitInfo::ArgTypeListEnd };
922 : static const JSTypedMethodJitInfo getElementsByTagNameNS_methodinfo = {
923 : {
924 : { (JSJitGetterOp)getElementsByTagNameNS },
925 : { prototypes::id::Document },
926 : { PrototypeTraits<prototypes::id::Document>::Depth },
927 : JSJitInfo::Method,
928 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
929 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
930 : false, /* isInfallible. False in setters. */
931 : false, /* isMovable. Not relevant for setters. */
932 : false, /* isEliminatable. Not relevant for setters. */
933 : false, /* isAlwaysInSlot. Only relevant for getters. */
934 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
935 : true, /* isTypedMethod. Only relevant for methods. */
936 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
937 : },
938 : getElementsByTagNameNS_methodinfo_argTypes
939 : };
940 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
941 : static_assert(0 < 1, "There is no slot for us");
942 :
943 : static bool
944 0 : getElementsByClassName(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
945 : {
946 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
947 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.getElementsByClassName");
948 : }
949 0 : binding_detail::FakeString arg0;
950 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
951 0 : return false;
952 : }
953 0 : auto result(StrongOrRawPtr<nsIHTMLCollection>(self->GetElementsByClassName(NonNullHelper(Constify(arg0)))));
954 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
955 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
956 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
957 0 : return false;
958 : }
959 0 : return true;
960 : }
961 :
962 : static const JSJitInfo::ArgType getElementsByClassName_methodinfo_argTypes[] = { JSJitInfo::String, JSJitInfo::ArgTypeListEnd };
963 : static const JSTypedMethodJitInfo getElementsByClassName_methodinfo = {
964 : {
965 : { (JSJitGetterOp)getElementsByClassName },
966 : { prototypes::id::Document },
967 : { PrototypeTraits<prototypes::id::Document>::Depth },
968 : JSJitInfo::Method,
969 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
970 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
971 : false, /* isInfallible. False in setters. */
972 : true, /* isMovable. Not relevant for setters. */
973 : true, /* isEliminatable. Not relevant for setters. */
974 : false, /* isAlwaysInSlot. Only relevant for getters. */
975 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
976 : true, /* isTypedMethod. Only relevant for methods. */
977 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
978 : },
979 : getElementsByClassName_methodinfo_argTypes
980 : };
981 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
982 : static_assert(0 < 1, "There is no slot for us");
983 :
984 : static bool
985 221 : getElementById(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
986 : {
987 221 : if (MOZ_UNLIKELY(args.length() < 1)) {
988 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.getElementById");
989 : }
990 442 : binding_detail::FakeString arg0;
991 221 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
992 0 : return false;
993 : }
994 221 : auto result(StrongOrRawPtr<mozilla::dom::Element>(self->GetElementById(NonNullHelper(Constify(arg0)))));
995 221 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
996 221 : if (!result) {
997 25 : args.rval().setNull();
998 25 : return true;
999 : }
1000 196 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1001 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1002 0 : return false;
1003 : }
1004 196 : return true;
1005 : }
1006 :
1007 : static const JSJitInfo::ArgType getElementById_methodinfo_argTypes[] = { JSJitInfo::String, JSJitInfo::ArgTypeListEnd };
1008 : static const JSTypedMethodJitInfo getElementById_methodinfo = {
1009 : {
1010 : { (JSJitGetterOp)getElementById },
1011 : { prototypes::id::Document },
1012 : { PrototypeTraits<prototypes::id::Document>::Depth },
1013 : JSJitInfo::Method,
1014 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
1015 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1016 : false, /* isInfallible. False in setters. */
1017 : true, /* isMovable. Not relevant for setters. */
1018 : true, /* isEliminatable. Not relevant for setters. */
1019 : false, /* isAlwaysInSlot. Only relevant for getters. */
1020 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1021 : true, /* isTypedMethod. Only relevant for methods. */
1022 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1023 : },
1024 : getElementById_methodinfo_argTypes
1025 : };
1026 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1027 : static_assert(0 < 1, "There is no slot for us");
1028 :
1029 : static bool
1030 48 : createElement(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
1031 : {
1032 48 : if (MOZ_UNLIKELY(args.length() < 1)) {
1033 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.createElement");
1034 : }
1035 96 : binding_detail::FakeString arg0;
1036 48 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
1037 0 : return false;
1038 : }
1039 96 : ElementCreationOptionsOrString arg1;
1040 48 : ElementCreationOptionsOrStringArgument arg1_holder(arg1);
1041 48 : if (!(args.hasDefined(1))) {
1042 48 : if (!arg1.RawSetAsElementCreationOptions().Init(cx, JS::NullHandleValue, "Member of ElementCreationOptionsOrString")) {
1043 0 : return false;
1044 : }
1045 : } else {
1046 : {
1047 0 : bool done = false, failed = false, tryNext;
1048 0 : if (!done) {
1049 0 : done = (failed = !arg1_holder.TrySetToElementCreationOptions(cx, args[1], tryNext, false)) || !tryNext;
1050 : }
1051 0 : if (!done) {
1052 : do {
1053 0 : done = (failed = !arg1_holder.TrySetToString(cx, args[1], tryNext)) || !tryNext;
1054 0 : break;
1055 : } while (0);
1056 : }
1057 0 : if (failed) {
1058 0 : return false;
1059 : }
1060 0 : if (!done) {
1061 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of Document.createElement", "ElementCreationOptions");
1062 0 : return false;
1063 : }
1064 : }
1065 : }
1066 96 : binding_detail::FastErrorResult rv;
1067 96 : auto result(StrongOrRawPtr<mozilla::dom::Element>(self->CreateElement(NonNullHelper(Constify(arg0)), Constify(arg1), rv)));
1068 48 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1069 0 : return false;
1070 : }
1071 48 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1072 : static_assert(!IsPointer<decltype(result)>::value,
1073 : "NewObject implies that we need to keep the object alive with a strong reference.");
1074 48 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1075 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1076 0 : return false;
1077 : }
1078 48 : return true;
1079 : }
1080 :
1081 : static const JSJitInfo createElement_methodinfo = {
1082 : { (JSJitGetterOp)createElement },
1083 : { prototypes::id::Document },
1084 : { PrototypeTraits<prototypes::id::Document>::Depth },
1085 : JSJitInfo::Method,
1086 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1087 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1088 : false, /* isInfallible. False in setters. */
1089 : false, /* isMovable. Not relevant for setters. */
1090 : false, /* isEliminatable. Not relevant for setters. */
1091 : false, /* isAlwaysInSlot. Only relevant for getters. */
1092 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1093 : false, /* isTypedMethod. Only relevant for methods. */
1094 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1095 : };
1096 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1097 : static_assert(0 < 1, "There is no slot for us");
1098 :
1099 : static bool
1100 8 : createElementNS(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
1101 : {
1102 8 : if (MOZ_UNLIKELY(args.length() < 2)) {
1103 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.createElementNS");
1104 : }
1105 16 : binding_detail::FakeString arg0;
1106 8 : if (!ConvertJSValueToString(cx, args[0], eNull, eNull, arg0)) {
1107 0 : return false;
1108 : }
1109 16 : binding_detail::FakeString arg1;
1110 8 : if (!ConvertJSValueToString(cx, args[1], eStringify, eStringify, arg1)) {
1111 0 : return false;
1112 : }
1113 16 : ElementCreationOptionsOrString arg2;
1114 8 : ElementCreationOptionsOrStringArgument arg2_holder(arg2);
1115 8 : if (!(args.hasDefined(2))) {
1116 8 : if (!arg2.RawSetAsElementCreationOptions().Init(cx, JS::NullHandleValue, "Member of ElementCreationOptionsOrString")) {
1117 0 : return false;
1118 : }
1119 : } else {
1120 : {
1121 0 : bool done = false, failed = false, tryNext;
1122 0 : if (!done) {
1123 0 : done = (failed = !arg2_holder.TrySetToElementCreationOptions(cx, args[2], tryNext, false)) || !tryNext;
1124 : }
1125 0 : if (!done) {
1126 : do {
1127 0 : done = (failed = !arg2_holder.TrySetToString(cx, args[2], tryNext)) || !tryNext;
1128 0 : break;
1129 : } while (0);
1130 : }
1131 0 : if (failed) {
1132 0 : return false;
1133 : }
1134 0 : if (!done) {
1135 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 3 of Document.createElementNS", "ElementCreationOptions");
1136 0 : return false;
1137 : }
1138 : }
1139 : }
1140 16 : binding_detail::FastErrorResult rv;
1141 16 : auto result(StrongOrRawPtr<mozilla::dom::Element>(self->CreateElementNS(NonNullHelper(Constify(arg0)), NonNullHelper(Constify(arg1)), Constify(arg2), rv)));
1142 8 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1143 0 : return false;
1144 : }
1145 8 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1146 : static_assert(!IsPointer<decltype(result)>::value,
1147 : "NewObject implies that we need to keep the object alive with a strong reference.");
1148 8 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1149 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1150 0 : return false;
1151 : }
1152 8 : return true;
1153 : }
1154 :
1155 : static const JSJitInfo createElementNS_methodinfo = {
1156 : { (JSJitGetterOp)createElementNS },
1157 : { prototypes::id::Document },
1158 : { PrototypeTraits<prototypes::id::Document>::Depth },
1159 : JSJitInfo::Method,
1160 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1161 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1162 : false, /* isInfallible. False in setters. */
1163 : false, /* isMovable. Not relevant for setters. */
1164 : false, /* isEliminatable. Not relevant for setters. */
1165 : false, /* isAlwaysInSlot. Only relevant for getters. */
1166 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1167 : false, /* isTypedMethod. Only relevant for methods. */
1168 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1169 : };
1170 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1171 : static_assert(0 < 1, "There is no slot for us");
1172 :
1173 : static bool
1174 4 : createDocumentFragment(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
1175 : {
1176 8 : auto result(StrongOrRawPtr<mozilla::dom::DocumentFragment>(self->CreateDocumentFragment()));
1177 4 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1178 : static_assert(!IsPointer<decltype(result)>::value,
1179 : "NewObject implies that we need to keep the object alive with a strong reference.");
1180 4 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1181 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1182 0 : return false;
1183 : }
1184 4 : return true;
1185 : }
1186 :
1187 : static const JSJitInfo createDocumentFragment_methodinfo = {
1188 : { (JSJitGetterOp)createDocumentFragment },
1189 : { prototypes::id::Document },
1190 : { PrototypeTraits<prototypes::id::Document>::Depth },
1191 : JSJitInfo::Method,
1192 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1193 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1194 : false, /* isInfallible. False in setters. */
1195 : false, /* isMovable. Not relevant for setters. */
1196 : false, /* isEliminatable. Not relevant for setters. */
1197 : false, /* isAlwaysInSlot. Only relevant for getters. */
1198 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1199 : false, /* isTypedMethod. Only relevant for methods. */
1200 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1201 : };
1202 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1203 : static_assert(0 < 1, "There is no slot for us");
1204 :
1205 : static bool
1206 0 : createTextNode(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
1207 : {
1208 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
1209 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.createTextNode");
1210 : }
1211 0 : binding_detail::FakeString arg0;
1212 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
1213 0 : return false;
1214 : }
1215 0 : auto result(StrongOrRawPtr<mozilla::dom::Text>(self->CreateTextNode(NonNullHelper(Constify(arg0)))));
1216 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1217 : static_assert(!IsPointer<decltype(result)>::value,
1218 : "NewObject implies that we need to keep the object alive with a strong reference.");
1219 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1220 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1221 0 : return false;
1222 : }
1223 0 : return true;
1224 : }
1225 :
1226 : static const JSJitInfo createTextNode_methodinfo = {
1227 : { (JSJitGetterOp)createTextNode },
1228 : { prototypes::id::Document },
1229 : { PrototypeTraits<prototypes::id::Document>::Depth },
1230 : JSJitInfo::Method,
1231 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1232 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1233 : false, /* isInfallible. False in setters. */
1234 : false, /* isMovable. Not relevant for setters. */
1235 : false, /* isEliminatable. Not relevant for setters. */
1236 : false, /* isAlwaysInSlot. Only relevant for getters. */
1237 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1238 : false, /* isTypedMethod. Only relevant for methods. */
1239 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1240 : };
1241 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1242 : static_assert(0 < 1, "There is no slot for us");
1243 :
1244 : static bool
1245 0 : createComment(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
1246 : {
1247 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
1248 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.createComment");
1249 : }
1250 0 : binding_detail::FakeString arg0;
1251 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
1252 0 : return false;
1253 : }
1254 0 : auto result(StrongOrRawPtr<mozilla::dom::Comment>(self->CreateComment(NonNullHelper(Constify(arg0)))));
1255 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1256 : static_assert(!IsPointer<decltype(result)>::value,
1257 : "NewObject implies that we need to keep the object alive with a strong reference.");
1258 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1259 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1260 0 : return false;
1261 : }
1262 0 : return true;
1263 : }
1264 :
1265 : static const JSJitInfo createComment_methodinfo = {
1266 : { (JSJitGetterOp)createComment },
1267 : { prototypes::id::Document },
1268 : { PrototypeTraits<prototypes::id::Document>::Depth },
1269 : JSJitInfo::Method,
1270 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1271 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1272 : false, /* isInfallible. False in setters. */
1273 : false, /* isMovable. Not relevant for setters. */
1274 : false, /* isEliminatable. Not relevant for setters. */
1275 : false, /* isAlwaysInSlot. Only relevant for getters. */
1276 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1277 : false, /* isTypedMethod. Only relevant for methods. */
1278 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1279 : };
1280 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1281 : static_assert(0 < 1, "There is no slot for us");
1282 :
1283 : static bool
1284 0 : createProcessingInstruction(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
1285 : {
1286 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
1287 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.createProcessingInstruction");
1288 : }
1289 0 : binding_detail::FakeString arg0;
1290 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
1291 0 : return false;
1292 : }
1293 0 : binding_detail::FakeString arg1;
1294 0 : if (!ConvertJSValueToString(cx, args[1], eStringify, eStringify, arg1)) {
1295 0 : return false;
1296 : }
1297 0 : binding_detail::FastErrorResult rv;
1298 0 : auto result(StrongOrRawPtr<mozilla::dom::ProcessingInstruction>(self->CreateProcessingInstruction(NonNullHelper(Constify(arg0)), NonNullHelper(Constify(arg1)), rv)));
1299 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1300 0 : return false;
1301 : }
1302 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1303 : static_assert(!IsPointer<decltype(result)>::value,
1304 : "NewObject implies that we need to keep the object alive with a strong reference.");
1305 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1306 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1307 0 : return false;
1308 : }
1309 0 : return true;
1310 : }
1311 :
1312 : static const JSJitInfo createProcessingInstruction_methodinfo = {
1313 : { (JSJitGetterOp)createProcessingInstruction },
1314 : { prototypes::id::Document },
1315 : { PrototypeTraits<prototypes::id::Document>::Depth },
1316 : JSJitInfo::Method,
1317 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1318 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1319 : false, /* isInfallible. False in setters. */
1320 : false, /* isMovable. Not relevant for setters. */
1321 : false, /* isEliminatable. Not relevant for setters. */
1322 : false, /* isAlwaysInSlot. Only relevant for getters. */
1323 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1324 : false, /* isTypedMethod. Only relevant for methods. */
1325 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1326 : };
1327 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1328 : static_assert(0 < 1, "There is no slot for us");
1329 :
1330 : static bool
1331 0 : importNode(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
1332 : {
1333 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
1334 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.importNode");
1335 : }
1336 0 : NonNull<nsINode> arg0;
1337 0 : if (args[0].isObject()) {
1338 : {
1339 0 : nsresult rv = UnwrapObject<prototypes::id::Node, nsINode>(args[0], arg0);
1340 0 : if (NS_FAILED(rv)) {
1341 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of Document.importNode", "Node");
1342 0 : return false;
1343 : }
1344 : }
1345 : } else {
1346 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of Document.importNode");
1347 0 : return false;
1348 : }
1349 : bool arg1;
1350 0 : if (args.hasDefined(1)) {
1351 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[1], &arg1)) {
1352 0 : return false;
1353 : }
1354 : } else {
1355 0 : arg1 = false;
1356 : }
1357 0 : CustomElementReactionsStack* reactionsStack = GetCustomElementReactionsStack(obj);
1358 0 : Maybe<AutoCEReaction> ceReaction;
1359 0 : if (reactionsStack) {
1360 0 : ceReaction.emplace(reactionsStack);
1361 : }
1362 0 : binding_detail::FastErrorResult rv;
1363 0 : auto result(StrongOrRawPtr<nsINode>(self->ImportNode(NonNullHelper(arg0), arg1, rv)));
1364 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1365 0 : return false;
1366 : }
1367 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1368 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1369 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1370 0 : return false;
1371 : }
1372 0 : return true;
1373 : }
1374 :
1375 : static const JSJitInfo importNode_methodinfo = {
1376 : { (JSJitGetterOp)importNode },
1377 : { prototypes::id::Document },
1378 : { PrototypeTraits<prototypes::id::Document>::Depth },
1379 : JSJitInfo::Method,
1380 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1381 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1382 : false, /* isInfallible. False in setters. */
1383 : false, /* isMovable. Not relevant for setters. */
1384 : false, /* isEliminatable. Not relevant for setters. */
1385 : false, /* isAlwaysInSlot. Only relevant for getters. */
1386 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1387 : false, /* isTypedMethod. Only relevant for methods. */
1388 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1389 : };
1390 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1391 : static_assert(0 < 1, "There is no slot for us");
1392 :
1393 : static bool
1394 0 : adoptNode(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
1395 : {
1396 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
1397 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.adoptNode");
1398 : }
1399 0 : NonNull<nsINode> arg0;
1400 0 : if (args[0].isObject()) {
1401 : {
1402 0 : nsresult rv = UnwrapObject<prototypes::id::Node, nsINode>(args[0], arg0);
1403 0 : if (NS_FAILED(rv)) {
1404 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of Document.adoptNode", "Node");
1405 0 : return false;
1406 : }
1407 : }
1408 : } else {
1409 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of Document.adoptNode");
1410 0 : return false;
1411 : }
1412 0 : CustomElementReactionsStack* reactionsStack = GetCustomElementReactionsStack(obj);
1413 0 : Maybe<AutoCEReaction> ceReaction;
1414 0 : if (reactionsStack) {
1415 0 : ceReaction.emplace(reactionsStack);
1416 : }
1417 0 : binding_detail::FastErrorResult rv;
1418 0 : auto result(StrongOrRawPtr<nsINode>(self->AdoptNode(NonNullHelper(arg0), rv)));
1419 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1420 0 : return false;
1421 : }
1422 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1423 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1424 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1425 0 : return false;
1426 : }
1427 0 : return true;
1428 : }
1429 :
1430 : static const JSJitInfo adoptNode_methodinfo = {
1431 : { (JSJitGetterOp)adoptNode },
1432 : { prototypes::id::Document },
1433 : { PrototypeTraits<prototypes::id::Document>::Depth },
1434 : JSJitInfo::Method,
1435 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1436 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1437 : false, /* isInfallible. False in setters. */
1438 : false, /* isMovable. Not relevant for setters. */
1439 : false, /* isEliminatable. Not relevant for setters. */
1440 : false, /* isAlwaysInSlot. Only relevant for getters. */
1441 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1442 : false, /* isTypedMethod. Only relevant for methods. */
1443 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1444 : };
1445 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1446 : static_assert(0 < 1, "There is no slot for us");
1447 :
1448 : static bool
1449 3 : createEvent(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
1450 : {
1451 3 : if (MOZ_UNLIKELY(args.length() < 1)) {
1452 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.createEvent");
1453 : }
1454 6 : binding_detail::FakeString arg0;
1455 3 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
1456 0 : return false;
1457 : }
1458 6 : binding_detail::FastErrorResult rv;
1459 6 : auto result(StrongOrRawPtr<mozilla::dom::Event>(self->CreateEvent(NonNullHelper(Constify(arg0)), nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem, rv)));
1460 3 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1461 0 : return false;
1462 : }
1463 3 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1464 : static_assert(!IsPointer<decltype(result)>::value,
1465 : "NewObject implies that we need to keep the object alive with a strong reference.");
1466 3 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1467 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1468 0 : return false;
1469 : }
1470 3 : return true;
1471 : }
1472 :
1473 : static const JSJitInfo createEvent_methodinfo = {
1474 : { (JSJitGetterOp)createEvent },
1475 : { prototypes::id::Document },
1476 : { PrototypeTraits<prototypes::id::Document>::Depth },
1477 : JSJitInfo::Method,
1478 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1479 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1480 : false, /* isInfallible. False in setters. */
1481 : false, /* isMovable. Not relevant for setters. */
1482 : false, /* isEliminatable. Not relevant for setters. */
1483 : false, /* isAlwaysInSlot. Only relevant for getters. */
1484 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1485 : false, /* isTypedMethod. Only relevant for methods. */
1486 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1487 : };
1488 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1489 : static_assert(0 < 1, "There is no slot for us");
1490 :
1491 : static bool
1492 2 : createRange(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
1493 : {
1494 4 : binding_detail::FastErrorResult rv;
1495 4 : auto result(StrongOrRawPtr<nsRange>(self->CreateRange(rv)));
1496 2 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1497 0 : return false;
1498 : }
1499 2 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1500 : static_assert(!IsPointer<decltype(result)>::value,
1501 : "NewObject implies that we need to keep the object alive with a strong reference.");
1502 2 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1503 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1504 0 : return false;
1505 : }
1506 2 : return true;
1507 : }
1508 :
1509 : static const JSJitInfo createRange_methodinfo = {
1510 : { (JSJitGetterOp)createRange },
1511 : { prototypes::id::Document },
1512 : { PrototypeTraits<prototypes::id::Document>::Depth },
1513 : JSJitInfo::Method,
1514 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1515 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1516 : false, /* isInfallible. False in setters. */
1517 : false, /* isMovable. Not relevant for setters. */
1518 : false, /* isEliminatable. Not relevant for setters. */
1519 : false, /* isAlwaysInSlot. Only relevant for getters. */
1520 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1521 : false, /* isTypedMethod. Only relevant for methods. */
1522 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1523 : };
1524 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1525 : static_assert(0 < 1, "There is no slot for us");
1526 :
1527 : static bool
1528 0 : createNodeIterator(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
1529 : {
1530 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
1531 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.createNodeIterator");
1532 : }
1533 0 : NonNull<nsINode> arg0;
1534 0 : if (args[0].isObject()) {
1535 : {
1536 0 : nsresult rv = UnwrapObject<prototypes::id::Node, nsINode>(args[0], arg0);
1537 0 : if (NS_FAILED(rv)) {
1538 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of Document.createNodeIterator", "Node");
1539 0 : return false;
1540 : }
1541 : }
1542 : } else {
1543 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of Document.createNodeIterator");
1544 0 : return false;
1545 : }
1546 : uint32_t arg1;
1547 0 : if (args.hasDefined(1)) {
1548 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
1549 0 : return false;
1550 : }
1551 : } else {
1552 0 : arg1 = 4294967295U;
1553 : }
1554 0 : RootedCallback<RefPtr<binding_detail::FastNodeFilter>> arg2(cx);
1555 0 : if (args.hasDefined(2)) {
1556 0 : if (args[2].isObject()) {
1557 : { // scope for tempRoot
1558 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[2].toObject());
1559 0 : arg2 = new binding_detail::FastNodeFilter(tempRoot);
1560 : }
1561 0 : } else if (args[2].isNullOrUndefined()) {
1562 0 : arg2 = nullptr;
1563 : } else {
1564 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 3 of Document.createNodeIterator");
1565 0 : return false;
1566 : }
1567 : } else {
1568 0 : arg2 = nullptr;
1569 : }
1570 0 : binding_detail::FastErrorResult rv;
1571 0 : auto result(StrongOrRawPtr<mozilla::dom::NodeIterator>(self->CreateNodeIterator(NonNullHelper(arg0), arg1, Constify(arg2), rv)));
1572 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1573 0 : return false;
1574 : }
1575 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1576 : static_assert(!IsPointer<decltype(result)>::value,
1577 : "NewObject implies that we need to keep the object alive with a strong reference.");
1578 0 : if (!WrapNewBindingNonWrapperCachedObject(cx, obj, result, args.rval())) {
1579 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1580 0 : return false;
1581 : }
1582 0 : return true;
1583 : }
1584 :
1585 : static const JSJitInfo createNodeIterator_methodinfo = {
1586 : { (JSJitGetterOp)createNodeIterator },
1587 : { prototypes::id::Document },
1588 : { PrototypeTraits<prototypes::id::Document>::Depth },
1589 : JSJitInfo::Method,
1590 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1591 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1592 : false, /* isInfallible. False in setters. */
1593 : false, /* isMovable. Not relevant for setters. */
1594 : false, /* isEliminatable. Not relevant for setters. */
1595 : false, /* isAlwaysInSlot. Only relevant for getters. */
1596 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1597 : false, /* isTypedMethod. Only relevant for methods. */
1598 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1599 : };
1600 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1601 : static_assert(0 < 1, "There is no slot for us");
1602 :
1603 : static bool
1604 0 : createTreeWalker(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
1605 : {
1606 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
1607 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.createTreeWalker");
1608 : }
1609 0 : NonNull<nsINode> arg0;
1610 0 : if (args[0].isObject()) {
1611 : {
1612 0 : nsresult rv = UnwrapObject<prototypes::id::Node, nsINode>(args[0], arg0);
1613 0 : if (NS_FAILED(rv)) {
1614 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of Document.createTreeWalker", "Node");
1615 0 : return false;
1616 : }
1617 : }
1618 : } else {
1619 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of Document.createTreeWalker");
1620 0 : return false;
1621 : }
1622 : uint32_t arg1;
1623 0 : if (args.hasDefined(1)) {
1624 0 : if (!ValueToPrimitive<uint32_t, eDefault>(cx, args[1], &arg1)) {
1625 0 : return false;
1626 : }
1627 : } else {
1628 0 : arg1 = 4294967295U;
1629 : }
1630 0 : RootedCallback<RefPtr<binding_detail::FastNodeFilter>> arg2(cx);
1631 0 : if (args.hasDefined(2)) {
1632 0 : if (args[2].isObject()) {
1633 : { // scope for tempRoot
1634 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[2].toObject());
1635 0 : arg2 = new binding_detail::FastNodeFilter(tempRoot);
1636 : }
1637 0 : } else if (args[2].isNullOrUndefined()) {
1638 0 : arg2 = nullptr;
1639 : } else {
1640 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 3 of Document.createTreeWalker");
1641 0 : return false;
1642 : }
1643 : } else {
1644 0 : arg2 = nullptr;
1645 : }
1646 0 : binding_detail::FastErrorResult rv;
1647 0 : auto result(StrongOrRawPtr<mozilla::dom::TreeWalker>(self->CreateTreeWalker(NonNullHelper(arg0), arg1, Constify(arg2), rv)));
1648 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1649 0 : return false;
1650 : }
1651 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1652 : static_assert(!IsPointer<decltype(result)>::value,
1653 : "NewObject implies that we need to keep the object alive with a strong reference.");
1654 0 : if (!WrapNewBindingNonWrapperCachedObject(cx, obj, result, args.rval())) {
1655 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1656 0 : return false;
1657 : }
1658 0 : return true;
1659 : }
1660 :
1661 : static const JSJitInfo createTreeWalker_methodinfo = {
1662 : { (JSJitGetterOp)createTreeWalker },
1663 : { prototypes::id::Document },
1664 : { PrototypeTraits<prototypes::id::Document>::Depth },
1665 : JSJitInfo::Method,
1666 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1667 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1668 : false, /* isInfallible. False in setters. */
1669 : false, /* isMovable. Not relevant for setters. */
1670 : false, /* isEliminatable. Not relevant for setters. */
1671 : false, /* isAlwaysInSlot. Only relevant for getters. */
1672 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1673 : false, /* isTypedMethod. Only relevant for methods. */
1674 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1675 : };
1676 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1677 : static_assert(0 < 1, "There is no slot for us");
1678 :
1679 : static bool
1680 0 : createCDATASection(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
1681 : {
1682 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
1683 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.createCDATASection");
1684 : }
1685 0 : binding_detail::FakeString arg0;
1686 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
1687 0 : return false;
1688 : }
1689 0 : binding_detail::FastErrorResult rv;
1690 0 : auto result(StrongOrRawPtr<mozilla::dom::CDATASection>(self->CreateCDATASection(NonNullHelper(Constify(arg0)), rv)));
1691 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1692 0 : return false;
1693 : }
1694 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1695 : static_assert(!IsPointer<decltype(result)>::value,
1696 : "NewObject implies that we need to keep the object alive with a strong reference.");
1697 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1698 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1699 0 : return false;
1700 : }
1701 0 : return true;
1702 : }
1703 :
1704 : static const JSJitInfo createCDATASection_methodinfo = {
1705 : { (JSJitGetterOp)createCDATASection },
1706 : { prototypes::id::Document },
1707 : { PrototypeTraits<prototypes::id::Document>::Depth },
1708 : JSJitInfo::Method,
1709 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1710 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1711 : false, /* isInfallible. False in setters. */
1712 : false, /* isMovable. Not relevant for setters. */
1713 : false, /* isEliminatable. Not relevant for setters. */
1714 : false, /* isAlwaysInSlot. Only relevant for getters. */
1715 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1716 : false, /* isTypedMethod. Only relevant for methods. */
1717 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1718 : };
1719 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1720 : static_assert(0 < 1, "There is no slot for us");
1721 :
1722 : static bool
1723 0 : createAttribute(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
1724 : {
1725 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
1726 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.createAttribute");
1727 : }
1728 0 : binding_detail::FakeString arg0;
1729 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
1730 0 : return false;
1731 : }
1732 0 : binding_detail::FastErrorResult rv;
1733 0 : auto result(StrongOrRawPtr<mozilla::dom::Attr>(self->CreateAttribute(NonNullHelper(Constify(arg0)), rv)));
1734 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1735 0 : return false;
1736 : }
1737 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1738 : static_assert(!IsPointer<decltype(result)>::value,
1739 : "NewObject implies that we need to keep the object alive with a strong reference.");
1740 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1741 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1742 0 : return false;
1743 : }
1744 0 : return true;
1745 : }
1746 :
1747 : static const JSJitInfo createAttribute_methodinfo = {
1748 : { (JSJitGetterOp)createAttribute },
1749 : { prototypes::id::Document },
1750 : { PrototypeTraits<prototypes::id::Document>::Depth },
1751 : JSJitInfo::Method,
1752 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1753 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1754 : false, /* isInfallible. False in setters. */
1755 : false, /* isMovable. Not relevant for setters. */
1756 : false, /* isEliminatable. Not relevant for setters. */
1757 : false, /* isAlwaysInSlot. Only relevant for getters. */
1758 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1759 : false, /* isTypedMethod. Only relevant for methods. */
1760 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1761 : };
1762 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1763 : static_assert(0 < 1, "There is no slot for us");
1764 :
1765 : static bool
1766 0 : createAttributeNS(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
1767 : {
1768 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
1769 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.createAttributeNS");
1770 : }
1771 0 : binding_detail::FakeString arg0;
1772 0 : if (!ConvertJSValueToString(cx, args[0], eNull, eNull, arg0)) {
1773 0 : return false;
1774 : }
1775 0 : binding_detail::FakeString arg1;
1776 0 : if (!ConvertJSValueToString(cx, args[1], eStringify, eStringify, arg1)) {
1777 0 : return false;
1778 : }
1779 0 : binding_detail::FastErrorResult rv;
1780 0 : auto result(StrongOrRawPtr<mozilla::dom::Attr>(self->CreateAttributeNS(NonNullHelper(Constify(arg0)), NonNullHelper(Constify(arg1)), rv)));
1781 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1782 0 : return false;
1783 : }
1784 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1785 : static_assert(!IsPointer<decltype(result)>::value,
1786 : "NewObject implies that we need to keep the object alive with a strong reference.");
1787 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1788 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1789 0 : return false;
1790 : }
1791 0 : return true;
1792 : }
1793 :
1794 : static const JSJitInfo createAttributeNS_methodinfo = {
1795 : { (JSJitGetterOp)createAttributeNS },
1796 : { prototypes::id::Document },
1797 : { PrototypeTraits<prototypes::id::Document>::Depth },
1798 : JSJitInfo::Method,
1799 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1800 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
1801 : false, /* isInfallible. False in setters. */
1802 : false, /* isMovable. Not relevant for setters. */
1803 : false, /* isEliminatable. Not relevant for setters. */
1804 : false, /* isAlwaysInSlot. Only relevant for getters. */
1805 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1806 : false, /* isTypedMethod. Only relevant for methods. */
1807 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1808 : };
1809 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1810 : static_assert(0 < 1, "There is no slot for us");
1811 :
1812 : static bool
1813 0 : get_location(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
1814 : {
1815 0 : auto result(StrongOrRawPtr<mozilla::dom::Location>(self->GetLocation()));
1816 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1817 0 : if (!result) {
1818 0 : args.rval().setNull();
1819 0 : return true;
1820 : }
1821 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
1822 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
1823 0 : return false;
1824 : }
1825 0 : return true;
1826 : }
1827 :
1828 : static bool
1829 0 : set_location(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
1830 : {
1831 0 : JS::Rooted<JS::Value> v(cx);
1832 0 : if (!JS_GetProperty(cx, obj, "location", &v)) {
1833 0 : return false;
1834 : }
1835 :
1836 0 : if (!v.isObject()) {
1837 0 : return ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Document.location");
1838 : }
1839 :
1840 0 : JS::Rooted<JSObject*> targetObj(cx, &v.toObject());
1841 0 : return JS_SetProperty(cx, targetObj, "href", args[0]);
1842 : }
1843 :
1844 : static const JSJitInfo location_getterinfo = {
1845 : { (JSJitGetterOp)get_location },
1846 : { prototypes::id::Document },
1847 : { PrototypeTraits<prototypes::id::Document>::Depth },
1848 : JSJitInfo::Getter,
1849 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1850 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
1851 : false, /* isInfallible. False in setters. */
1852 : false, /* isMovable. Not relevant for setters. */
1853 : false, /* isEliminatable. Not relevant for setters. */
1854 : false, /* isAlwaysInSlot. Only relevant for getters. */
1855 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1856 : false, /* isTypedMethod. Only relevant for methods. */
1857 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1858 : };
1859 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1860 : static_assert(0 < 1, "There is no slot for us");
1861 : static const JSJitInfo location_setterinfo = {
1862 : { (JSJitGetterOp)set_location },
1863 : { prototypes::id::Document },
1864 : { PrototypeTraits<prototypes::id::Document>::Depth },
1865 : JSJitInfo::Setter,
1866 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1867 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
1868 : false, /* isInfallible. False in setters. */
1869 : false, /* isMovable. Not relevant for setters. */
1870 : false, /* isEliminatable. Not relevant for setters. */
1871 : false, /* isAlwaysInSlot. Only relevant for getters. */
1872 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1873 : false, /* isTypedMethod. Only relevant for methods. */
1874 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1875 : };
1876 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1877 : static_assert(0 < 1, "There is no slot for us");
1878 :
1879 : static bool
1880 0 : get_referrer(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
1881 : {
1882 0 : DOMString result;
1883 0 : self->GetReferrer(result);
1884 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1885 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
1886 0 : return false;
1887 : }
1888 0 : return true;
1889 : }
1890 :
1891 : static const JSJitInfo referrer_getterinfo = {
1892 : { (JSJitGetterOp)get_referrer },
1893 : { prototypes::id::Document },
1894 : { PrototypeTraits<prototypes::id::Document>::Depth },
1895 : JSJitInfo::Getter,
1896 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1897 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
1898 : false, /* isInfallible. False in setters. */
1899 : false, /* isMovable. Not relevant for setters. */
1900 : false, /* isEliminatable. Not relevant for setters. */
1901 : false, /* isAlwaysInSlot. Only relevant for getters. */
1902 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1903 : false, /* isTypedMethod. Only relevant for methods. */
1904 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1905 : };
1906 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1907 : static_assert(0 < 1, "There is no slot for us");
1908 :
1909 : static bool
1910 0 : get_lastModified(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
1911 : {
1912 0 : DOMString result;
1913 0 : self->GetLastModified(result);
1914 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1915 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
1916 0 : return false;
1917 : }
1918 0 : return true;
1919 : }
1920 :
1921 : static const JSJitInfo lastModified_getterinfo = {
1922 : { (JSJitGetterOp)get_lastModified },
1923 : { prototypes::id::Document },
1924 : { PrototypeTraits<prototypes::id::Document>::Depth },
1925 : JSJitInfo::Getter,
1926 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1927 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
1928 : false, /* isInfallible. False in setters. */
1929 : false, /* isMovable. Not relevant for setters. */
1930 : false, /* isEliminatable. Not relevant for setters. */
1931 : false, /* isAlwaysInSlot. Only relevant for getters. */
1932 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1933 : false, /* isTypedMethod. Only relevant for methods. */
1934 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1935 : };
1936 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1937 : static_assert(0 < 1, "There is no slot for us");
1938 :
1939 : static bool
1940 10 : get_readyState(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
1941 : {
1942 20 : DOMString result;
1943 10 : self->GetReadyState(result);
1944 10 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1945 10 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
1946 0 : return false;
1947 : }
1948 10 : return true;
1949 : }
1950 :
1951 : static const JSJitInfo readyState_getterinfo = {
1952 : { (JSJitGetterOp)get_readyState },
1953 : { prototypes::id::Document },
1954 : { PrototypeTraits<prototypes::id::Document>::Depth },
1955 : JSJitInfo::Getter,
1956 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
1957 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
1958 : false, /* isInfallible. False in setters. */
1959 : false, /* isMovable. Not relevant for setters. */
1960 : false, /* isEliminatable. Not relevant for setters. */
1961 : false, /* isAlwaysInSlot. Only relevant for getters. */
1962 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
1963 : false, /* isTypedMethod. Only relevant for methods. */
1964 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
1965 : };
1966 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
1967 : static_assert(0 < 1, "There is no slot for us");
1968 :
1969 : static bool
1970 2 : get_title(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
1971 : {
1972 4 : DOMString result;
1973 2 : self->GetTitle(result);
1974 2 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1975 2 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
1976 0 : return false;
1977 : }
1978 2 : return true;
1979 : }
1980 :
1981 : static bool
1982 1 : set_title(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
1983 : {
1984 2 : binding_detail::FakeString arg0;
1985 1 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
1986 0 : return false;
1987 : }
1988 1 : CustomElementReactionsStack* reactionsStack = GetCustomElementReactionsStack(obj);
1989 2 : Maybe<AutoCEReaction> ceReaction;
1990 1 : if (reactionsStack) {
1991 1 : ceReaction.emplace(reactionsStack);
1992 : }
1993 2 : binding_detail::FastErrorResult rv;
1994 1 : self->SetTitle(NonNullHelper(Constify(arg0)), rv);
1995 1 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
1996 0 : return false;
1997 : }
1998 1 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
1999 :
2000 1 : return true;
2001 : }
2002 :
2003 : static const JSJitInfo title_getterinfo = {
2004 : { (JSJitGetterOp)get_title },
2005 : { prototypes::id::Document },
2006 : { PrototypeTraits<prototypes::id::Document>::Depth },
2007 : JSJitInfo::Getter,
2008 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
2009 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
2010 : false, /* isInfallible. False in setters. */
2011 : true, /* isMovable. Not relevant for setters. */
2012 : true, /* isEliminatable. Not relevant for setters. */
2013 : false, /* isAlwaysInSlot. Only relevant for getters. */
2014 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2015 : false, /* isTypedMethod. Only relevant for methods. */
2016 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2017 : };
2018 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2019 : static_assert(0 < 1, "There is no slot for us");
2020 : static const JSJitInfo title_setterinfo = {
2021 : { (JSJitGetterOp)set_title },
2022 : { prototypes::id::Document },
2023 : { PrototypeTraits<prototypes::id::Document>::Depth },
2024 : JSJitInfo::Setter,
2025 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2026 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2027 : false, /* isInfallible. False in setters. */
2028 : false, /* isMovable. Not relevant for setters. */
2029 : false, /* isEliminatable. Not relevant for setters. */
2030 : false, /* isAlwaysInSlot. Only relevant for getters. */
2031 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2032 : false, /* isTypedMethod. Only relevant for methods. */
2033 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2034 : };
2035 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2036 : static_assert(0 < 1, "There is no slot for us");
2037 :
2038 : static bool
2039 0 : get_dir(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
2040 : {
2041 0 : DOMString result;
2042 0 : self->GetDir(result);
2043 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2044 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
2045 0 : return false;
2046 : }
2047 0 : return true;
2048 : }
2049 :
2050 : static bool
2051 0 : set_dir(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
2052 : {
2053 0 : binding_detail::FakeString arg0;
2054 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
2055 0 : return false;
2056 : }
2057 0 : CustomElementReactionsStack* reactionsStack = GetCustomElementReactionsStack(obj);
2058 0 : Maybe<AutoCEReaction> ceReaction;
2059 0 : if (reactionsStack) {
2060 0 : ceReaction.emplace(reactionsStack);
2061 : }
2062 0 : self->SetDir(NonNullHelper(Constify(arg0)));
2063 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2064 :
2065 0 : return true;
2066 : }
2067 :
2068 : static const JSJitInfo dir_getterinfo = {
2069 : { (JSJitGetterOp)get_dir },
2070 : { prototypes::id::Document },
2071 : { PrototypeTraits<prototypes::id::Document>::Depth },
2072 : JSJitInfo::Getter,
2073 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
2074 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
2075 : false, /* isInfallible. False in setters. */
2076 : true, /* isMovable. Not relevant for setters. */
2077 : true, /* isEliminatable. Not relevant for setters. */
2078 : false, /* isAlwaysInSlot. Only relevant for getters. */
2079 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2080 : false, /* isTypedMethod. Only relevant for methods. */
2081 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2082 : };
2083 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2084 : static_assert(0 < 1, "There is no slot for us");
2085 : static const JSJitInfo dir_setterinfo = {
2086 : { (JSJitGetterOp)set_dir },
2087 : { prototypes::id::Document },
2088 : { PrototypeTraits<prototypes::id::Document>::Depth },
2089 : JSJitInfo::Setter,
2090 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2091 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2092 : false, /* isInfallible. False in setters. */
2093 : false, /* isMovable. Not relevant for setters. */
2094 : false, /* isEliminatable. Not relevant for setters. */
2095 : false, /* isAlwaysInSlot. Only relevant for getters. */
2096 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2097 : false, /* isTypedMethod. Only relevant for methods. */
2098 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2099 : };
2100 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2101 : static_assert(0 < 1, "There is no slot for us");
2102 :
2103 : static bool
2104 17 : get_defaultView(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
2105 : {
2106 17 : auto result(StrongOrRawPtr<nsPIDOMWindowOuter>(self->GetDefaultView()));
2107 17 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2108 17 : if (!result) {
2109 0 : args.rval().setNull();
2110 0 : return true;
2111 : }
2112 17 : if (!WrapObject(cx, result, args.rval())) {
2113 0 : return false;
2114 : }
2115 17 : return true;
2116 : }
2117 :
2118 : static const JSJitInfo defaultView_getterinfo = {
2119 : { (JSJitGetterOp)get_defaultView },
2120 : { prototypes::id::Document },
2121 : { PrototypeTraits<prototypes::id::Document>::Depth },
2122 : JSJitInfo::Getter,
2123 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
2124 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2125 : false, /* isInfallible. False in setters. */
2126 : true, /* isMovable. Not relevant for setters. */
2127 : true, /* isEliminatable. Not relevant for setters. */
2128 : false, /* isAlwaysInSlot. Only relevant for getters. */
2129 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2130 : false, /* isTypedMethod. Only relevant for methods. */
2131 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2132 : };
2133 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2134 : static_assert(0 < 1, "There is no slot for us");
2135 :
2136 : static bool
2137 1 : get_activeElement(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
2138 : {
2139 1 : auto result(StrongOrRawPtr<mozilla::dom::Element>(self->GetActiveElement()));
2140 1 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2141 1 : if (!result) {
2142 0 : args.rval().setNull();
2143 0 : return true;
2144 : }
2145 1 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
2146 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
2147 0 : return false;
2148 : }
2149 1 : return true;
2150 : }
2151 :
2152 : static const JSJitInfo activeElement_getterinfo = {
2153 : { (JSJitGetterOp)get_activeElement },
2154 : { prototypes::id::Document },
2155 : { PrototypeTraits<prototypes::id::Document>::Depth },
2156 : JSJitInfo::Getter,
2157 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2158 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2159 : false, /* isInfallible. False in setters. */
2160 : false, /* isMovable. Not relevant for setters. */
2161 : false, /* isEliminatable. Not relevant for setters. */
2162 : false, /* isAlwaysInSlot. Only relevant for getters. */
2163 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2164 : false, /* isTypedMethod. Only relevant for methods. */
2165 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2166 : };
2167 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2168 : static_assert(0 < 1, "There is no slot for us");
2169 :
2170 : static bool
2171 0 : hasFocus(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
2172 : {
2173 0 : binding_detail::FastErrorResult rv;
2174 0 : bool result(self->HasFocus(rv));
2175 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
2176 0 : return false;
2177 : }
2178 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2179 0 : args.rval().setBoolean(result);
2180 0 : return true;
2181 : }
2182 :
2183 : static const JSJitInfo hasFocus_methodinfo = {
2184 : { (JSJitGetterOp)hasFocus },
2185 : { prototypes::id::Document },
2186 : { PrototypeTraits<prototypes::id::Document>::Depth },
2187 : JSJitInfo::Method,
2188 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2189 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
2190 : false, /* isInfallible. False in setters. */
2191 : false, /* isMovable. Not relevant for setters. */
2192 : false, /* isEliminatable. Not relevant for setters. */
2193 : false, /* isAlwaysInSlot. Only relevant for getters. */
2194 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2195 : false, /* isTypedMethod. Only relevant for methods. */
2196 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2197 : };
2198 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2199 : static_assert(0 < 1, "There is no slot for us");
2200 :
2201 : static bool
2202 0 : get_onreadystatechange(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
2203 : {
2204 0 : RefPtr<EventHandlerNonNull> result(self->GetOnreadystatechange());
2205 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2206 0 : if (result) {
2207 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2208 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2209 0 : return false;
2210 : }
2211 0 : return true;
2212 : } else {
2213 0 : args.rval().setNull();
2214 0 : return true;
2215 : }
2216 : }
2217 :
2218 : static bool
2219 0 : set_onreadystatechange(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
2220 : {
2221 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2222 0 : if (args[0].isObject()) {
2223 : { // scope for tempRoot
2224 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2225 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2226 : }
2227 : } else {
2228 0 : arg0 = nullptr;
2229 : }
2230 0 : self->SetOnreadystatechange(Constify(arg0));
2231 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2232 :
2233 0 : return true;
2234 : }
2235 :
2236 : static const JSJitInfo onreadystatechange_getterinfo = {
2237 : { (JSJitGetterOp)get_onreadystatechange },
2238 : { prototypes::id::Document },
2239 : { PrototypeTraits<prototypes::id::Document>::Depth },
2240 : JSJitInfo::Getter,
2241 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2242 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2243 : false, /* isInfallible. False in setters. */
2244 : false, /* isMovable. Not relevant for setters. */
2245 : false, /* isEliminatable. Not relevant for setters. */
2246 : false, /* isAlwaysInSlot. Only relevant for getters. */
2247 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2248 : false, /* isTypedMethod. Only relevant for methods. */
2249 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2250 : };
2251 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2252 : static_assert(0 < 1, "There is no slot for us");
2253 : static const JSJitInfo onreadystatechange_setterinfo = {
2254 : { (JSJitGetterOp)set_onreadystatechange },
2255 : { prototypes::id::Document },
2256 : { PrototypeTraits<prototypes::id::Document>::Depth },
2257 : JSJitInfo::Setter,
2258 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2259 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2260 : false, /* isInfallible. False in setters. */
2261 : false, /* isMovable. Not relevant for setters. */
2262 : false, /* isEliminatable. Not relevant for setters. */
2263 : false, /* isAlwaysInSlot. Only relevant for getters. */
2264 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2265 : false, /* isTypedMethod. Only relevant for methods. */
2266 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2267 : };
2268 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2269 : static_assert(0 < 1, "There is no slot for us");
2270 :
2271 : static bool
2272 0 : get_onbeforescriptexecute(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
2273 : {
2274 0 : RefPtr<EventHandlerNonNull> result(self->GetOnbeforescriptexecute());
2275 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2276 0 : if (result) {
2277 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2278 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2279 0 : return false;
2280 : }
2281 0 : return true;
2282 : } else {
2283 0 : args.rval().setNull();
2284 0 : return true;
2285 : }
2286 : }
2287 :
2288 : static bool
2289 0 : set_onbeforescriptexecute(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
2290 : {
2291 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2292 0 : if (args[0].isObject()) {
2293 : { // scope for tempRoot
2294 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2295 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2296 : }
2297 : } else {
2298 0 : arg0 = nullptr;
2299 : }
2300 0 : self->SetOnbeforescriptexecute(Constify(arg0));
2301 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2302 :
2303 0 : return true;
2304 : }
2305 :
2306 : static const JSJitInfo onbeforescriptexecute_getterinfo = {
2307 : { (JSJitGetterOp)get_onbeforescriptexecute },
2308 : { prototypes::id::Document },
2309 : { PrototypeTraits<prototypes::id::Document>::Depth },
2310 : JSJitInfo::Getter,
2311 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2312 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2313 : false, /* isInfallible. False in setters. */
2314 : false, /* isMovable. Not relevant for setters. */
2315 : false, /* isEliminatable. Not relevant for setters. */
2316 : false, /* isAlwaysInSlot. Only relevant for getters. */
2317 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2318 : false, /* isTypedMethod. Only relevant for methods. */
2319 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2320 : };
2321 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2322 : static_assert(0 < 1, "There is no slot for us");
2323 : static const JSJitInfo onbeforescriptexecute_setterinfo = {
2324 : { (JSJitGetterOp)set_onbeforescriptexecute },
2325 : { prototypes::id::Document },
2326 : { PrototypeTraits<prototypes::id::Document>::Depth },
2327 : JSJitInfo::Setter,
2328 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2329 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2330 : false, /* isInfallible. False in setters. */
2331 : false, /* isMovable. Not relevant for setters. */
2332 : false, /* isEliminatable. Not relevant for setters. */
2333 : false, /* isAlwaysInSlot. Only relevant for getters. */
2334 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2335 : false, /* isTypedMethod. Only relevant for methods. */
2336 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2337 : };
2338 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2339 : static_assert(0 < 1, "There is no slot for us");
2340 :
2341 : static bool
2342 0 : get_onafterscriptexecute(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
2343 : {
2344 0 : RefPtr<EventHandlerNonNull> result(self->GetOnafterscriptexecute());
2345 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2346 0 : if (result) {
2347 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2348 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2349 0 : return false;
2350 : }
2351 0 : return true;
2352 : } else {
2353 0 : args.rval().setNull();
2354 0 : return true;
2355 : }
2356 : }
2357 :
2358 : static bool
2359 0 : set_onafterscriptexecute(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
2360 : {
2361 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2362 0 : if (args[0].isObject()) {
2363 : { // scope for tempRoot
2364 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2365 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2366 : }
2367 : } else {
2368 0 : arg0 = nullptr;
2369 : }
2370 0 : self->SetOnafterscriptexecute(Constify(arg0));
2371 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2372 :
2373 0 : return true;
2374 : }
2375 :
2376 : static const JSJitInfo onafterscriptexecute_getterinfo = {
2377 : { (JSJitGetterOp)get_onafterscriptexecute },
2378 : { prototypes::id::Document },
2379 : { PrototypeTraits<prototypes::id::Document>::Depth },
2380 : JSJitInfo::Getter,
2381 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2382 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2383 : false, /* isInfallible. False in setters. */
2384 : false, /* isMovable. Not relevant for setters. */
2385 : false, /* isEliminatable. Not relevant for setters. */
2386 : false, /* isAlwaysInSlot. Only relevant for getters. */
2387 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2388 : false, /* isTypedMethod. Only relevant for methods. */
2389 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2390 : };
2391 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2392 : static_assert(0 < 1, "There is no slot for us");
2393 : static const JSJitInfo onafterscriptexecute_setterinfo = {
2394 : { (JSJitGetterOp)set_onafterscriptexecute },
2395 : { prototypes::id::Document },
2396 : { PrototypeTraits<prototypes::id::Document>::Depth },
2397 : JSJitInfo::Setter,
2398 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2399 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2400 : false, /* isInfallible. False in setters. */
2401 : false, /* isMovable. Not relevant for setters. */
2402 : false, /* isEliminatable. Not relevant for setters. */
2403 : false, /* isAlwaysInSlot. Only relevant for getters. */
2404 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2405 : false, /* isTypedMethod. Only relevant for methods. */
2406 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2407 : };
2408 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2409 : static_assert(0 < 1, "There is no slot for us");
2410 :
2411 : static bool
2412 0 : get_onselectionchange(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
2413 : {
2414 0 : RefPtr<EventHandlerNonNull> result(self->GetOnselectionchange());
2415 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2416 0 : if (result) {
2417 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2418 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2419 0 : return false;
2420 : }
2421 0 : return true;
2422 : } else {
2423 0 : args.rval().setNull();
2424 0 : return true;
2425 : }
2426 : }
2427 :
2428 : static bool
2429 0 : set_onselectionchange(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
2430 : {
2431 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
2432 0 : if (args[0].isObject()) {
2433 : { // scope for tempRoot
2434 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
2435 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
2436 : }
2437 : } else {
2438 0 : arg0 = nullptr;
2439 : }
2440 0 : self->SetOnselectionchange(Constify(arg0));
2441 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2442 :
2443 0 : return true;
2444 : }
2445 :
2446 : static const JSJitInfo onselectionchange_getterinfo = {
2447 : { (JSJitGetterOp)get_onselectionchange },
2448 : { prototypes::id::Document },
2449 : { PrototypeTraits<prototypes::id::Document>::Depth },
2450 : JSJitInfo::Getter,
2451 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2452 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2453 : false, /* isInfallible. False in setters. */
2454 : false, /* isMovable. Not relevant for setters. */
2455 : false, /* isEliminatable. Not relevant for setters. */
2456 : false, /* isAlwaysInSlot. Only relevant for getters. */
2457 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2458 : false, /* isTypedMethod. Only relevant for methods. */
2459 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2460 : };
2461 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2462 : static_assert(0 < 1, "There is no slot for us");
2463 : static const JSJitInfo onselectionchange_setterinfo = {
2464 : { (JSJitGetterOp)set_onselectionchange },
2465 : { prototypes::id::Document },
2466 : { PrototypeTraits<prototypes::id::Document>::Depth },
2467 : JSJitInfo::Setter,
2468 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2469 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2470 : false, /* isInfallible. False in setters. */
2471 : false, /* isMovable. Not relevant for setters. */
2472 : false, /* isEliminatable. Not relevant for setters. */
2473 : false, /* isAlwaysInSlot. Only relevant for getters. */
2474 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2475 : false, /* isTypedMethod. Only relevant for methods. */
2476 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2477 : };
2478 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2479 : static_assert(0 < 1, "There is no slot for us");
2480 :
2481 : static bool
2482 3 : get_mozSyntheticDocument(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
2483 : {
2484 3 : bool result(self->MozSyntheticDocument());
2485 3 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2486 3 : args.rval().setBoolean(result);
2487 3 : return true;
2488 : }
2489 :
2490 : static const JSJitInfo mozSyntheticDocument_getterinfo = {
2491 : { (JSJitGetterOp)get_mozSyntheticDocument },
2492 : { prototypes::id::Document },
2493 : { PrototypeTraits<prototypes::id::Document>::Depth },
2494 : JSJitInfo::Getter,
2495 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2496 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
2497 : true, /* isInfallible. False in setters. */
2498 : false, /* isMovable. Not relevant for setters. */
2499 : false, /* isEliminatable. Not relevant for setters. */
2500 : false, /* isAlwaysInSlot. Only relevant for getters. */
2501 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2502 : false, /* isTypedMethod. Only relevant for methods. */
2503 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2504 : };
2505 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2506 : static_assert(0 < 1, "There is no slot for us");
2507 :
2508 : static bool
2509 0 : get_currentScript(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
2510 : {
2511 0 : auto result(StrongOrRawPtr<mozilla::dom::Element>(self->GetCurrentScript()));
2512 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2513 0 : if (!result) {
2514 0 : args.rval().setNull();
2515 0 : return true;
2516 : }
2517 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
2518 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
2519 0 : return false;
2520 : }
2521 0 : return true;
2522 : }
2523 :
2524 : static const JSJitInfo currentScript_getterinfo = {
2525 : { (JSJitGetterOp)get_currentScript },
2526 : { prototypes::id::Document },
2527 : { PrototypeTraits<prototypes::id::Document>::Depth },
2528 : JSJitInfo::Getter,
2529 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
2530 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2531 : false, /* isInfallible. False in setters. */
2532 : true, /* isMovable. Not relevant for setters. */
2533 : true, /* isEliminatable. Not relevant for setters. */
2534 : false, /* isAlwaysInSlot. Only relevant for getters. */
2535 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2536 : false, /* isTypedMethod. Only relevant for methods. */
2537 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2538 : };
2539 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2540 : static_assert(0 < 1, "There is no slot for us");
2541 :
2542 : static bool
2543 0 : releaseCapture(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
2544 : {
2545 0 : self->ReleaseCapture();
2546 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2547 0 : args.rval().setUndefined();
2548 0 : return true;
2549 : }
2550 :
2551 : static const JSJitInfo releaseCapture_methodinfo = {
2552 : { (JSJitGetterOp)releaseCapture },
2553 : { prototypes::id::Document },
2554 : { PrototypeTraits<prototypes::id::Document>::Depth },
2555 : JSJitInfo::Method,
2556 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2557 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2558 : true, /* isInfallible. False in setters. */
2559 : false, /* isMovable. Not relevant for setters. */
2560 : false, /* isEliminatable. Not relevant for setters. */
2561 : false, /* isAlwaysInSlot. Only relevant for getters. */
2562 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2563 : false, /* isTypedMethod. Only relevant for methods. */
2564 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2565 : };
2566 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2567 : static_assert(0 < 1, "There is no slot for us");
2568 :
2569 : static bool
2570 0 : mozSetImageElement(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
2571 : {
2572 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
2573 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.mozSetImageElement");
2574 : }
2575 0 : binding_detail::FakeString arg0;
2576 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
2577 0 : return false;
2578 : }
2579 : mozilla::dom::Element* arg1;
2580 0 : if (args[1].isObject()) {
2581 : {
2582 0 : nsresult rv = UnwrapObject<prototypes::id::Element, mozilla::dom::Element>(args[1], arg1);
2583 0 : if (NS_FAILED(rv)) {
2584 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 2 of Document.mozSetImageElement", "Element");
2585 0 : return false;
2586 : }
2587 : }
2588 0 : } else if (args[1].isNullOrUndefined()) {
2589 0 : arg1 = nullptr;
2590 : } else {
2591 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 2 of Document.mozSetImageElement");
2592 0 : return false;
2593 : }
2594 0 : self->MozSetImageElement(NonNullHelper(Constify(arg0)), Constify(arg1));
2595 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2596 0 : args.rval().setUndefined();
2597 0 : return true;
2598 : }
2599 :
2600 : static const JSJitInfo mozSetImageElement_methodinfo = {
2601 : { (JSJitGetterOp)mozSetImageElement },
2602 : { prototypes::id::Document },
2603 : { PrototypeTraits<prototypes::id::Document>::Depth },
2604 : JSJitInfo::Method,
2605 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2606 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2607 : false, /* isInfallible. False in setters. */
2608 : false, /* isMovable. Not relevant for setters. */
2609 : false, /* isEliminatable. Not relevant for setters. */
2610 : false, /* isAlwaysInSlot. Only relevant for getters. */
2611 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2612 : false, /* isTypedMethod. Only relevant for methods. */
2613 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2614 : };
2615 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2616 : static_assert(0 < 1, "There is no slot for us");
2617 :
2618 : static bool
2619 7 : get_documentURIObject(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
2620 : {
2621 7 : auto result(StrongOrRawPtr<nsIURI>(self->GetDocumentURIObject()));
2622 7 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2623 7 : if (!result) {
2624 0 : args.rval().setNull();
2625 0 : return true;
2626 : }
2627 7 : if (!WrapObject(cx, result, &NS_GET_IID(nsIURI), args.rval())) {
2628 0 : return false;
2629 : }
2630 7 : return true;
2631 : }
2632 :
2633 : static const JSJitInfo documentURIObject_getterinfo = {
2634 : { (JSJitGetterOp)get_documentURIObject },
2635 : { prototypes::id::Document },
2636 : { PrototypeTraits<prototypes::id::Document>::Depth },
2637 : JSJitInfo::Getter,
2638 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2639 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2640 : false, /* isInfallible. False in setters. */
2641 : false, /* isMovable. Not relevant for setters. */
2642 : false, /* isEliminatable. Not relevant for setters. */
2643 : false, /* isAlwaysInSlot. Only relevant for getters. */
2644 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2645 : false, /* isTypedMethod. Only relevant for methods. */
2646 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2647 : };
2648 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2649 : static_assert(0 < 1, "There is no slot for us");
2650 :
2651 : static bool
2652 0 : get_referrerPolicy(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
2653 : {
2654 0 : uint32_t result(self->ReferrerPolicy());
2655 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2656 0 : args.rval().setNumber(result);
2657 0 : return true;
2658 : }
2659 :
2660 : static const JSJitInfo referrerPolicy_getterinfo = {
2661 : { (JSJitGetterOp)get_referrerPolicy },
2662 : { prototypes::id::Document },
2663 : { PrototypeTraits<prototypes::id::Document>::Depth },
2664 : JSJitInfo::Getter,
2665 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2666 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
2667 : true, /* isInfallible. False in setters. */
2668 : false, /* isMovable. Not relevant for setters. */
2669 : false, /* isEliminatable. Not relevant for setters. */
2670 : false, /* isAlwaysInSlot. Only relevant for getters. */
2671 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2672 : false, /* isTypedMethod. Only relevant for methods. */
2673 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2674 : };
2675 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2676 : static_assert(0 < 1, "There is no slot for us");
2677 :
2678 : static bool
2679 0 : get_fullscreen(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
2680 : {
2681 0 : bool result(self->Fullscreen());
2682 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2683 0 : args.rval().setBoolean(result);
2684 0 : return true;
2685 : }
2686 :
2687 : static bool
2688 0 : set_fullscreen(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
2689 : {
2690 0 : DeprecationWarning(cx, obj, nsIDocument::eLenientSetter);
2691 0 : return true;
2692 : }
2693 :
2694 : static const JSJitInfo fullscreen_getterinfo = {
2695 : { (JSJitGetterOp)get_fullscreen },
2696 : { prototypes::id::Document },
2697 : { PrototypeTraits<prototypes::id::Document>::Depth },
2698 : JSJitInfo::Getter,
2699 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2700 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
2701 : true, /* isInfallible. False in setters. */
2702 : false, /* isMovable. Not relevant for setters. */
2703 : false, /* isEliminatable. Not relevant for setters. */
2704 : false, /* isAlwaysInSlot. Only relevant for getters. */
2705 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2706 : false, /* isTypedMethod. Only relevant for methods. */
2707 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2708 : };
2709 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2710 : static_assert(0 < 1, "There is no slot for us");
2711 : static const JSJitInfo fullscreen_setterinfo = {
2712 : { (JSJitGetterOp)set_fullscreen },
2713 : { prototypes::id::Document },
2714 : { PrototypeTraits<prototypes::id::Document>::Depth },
2715 : JSJitInfo::Setter,
2716 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2717 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2718 : false, /* isInfallible. False in setters. */
2719 : false, /* isMovable. Not relevant for setters. */
2720 : false, /* isEliminatable. Not relevant for setters. */
2721 : false, /* isAlwaysInSlot. Only relevant for getters. */
2722 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2723 : false, /* isTypedMethod. Only relevant for methods. */
2724 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2725 : };
2726 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2727 : static_assert(0 < 1, "There is no slot for us");
2728 :
2729 : static bool
2730 0 : get_mozFullScreen(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
2731 : {
2732 0 : bool result(self->Fullscreen());
2733 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2734 0 : args.rval().setBoolean(result);
2735 0 : return true;
2736 : }
2737 :
2738 : static const JSJitInfo mozFullScreen_getterinfo = {
2739 : { (JSJitGetterOp)get_mozFullScreen },
2740 : { prototypes::id::Document },
2741 : { PrototypeTraits<prototypes::id::Document>::Depth },
2742 : JSJitInfo::Getter,
2743 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2744 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
2745 : true, /* isInfallible. False in setters. */
2746 : false, /* isMovable. Not relevant for setters. */
2747 : false, /* isEliminatable. Not relevant for setters. */
2748 : false, /* isAlwaysInSlot. Only relevant for getters. */
2749 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2750 : false, /* isTypedMethod. Only relevant for methods. */
2751 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2752 : };
2753 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2754 : static_assert(0 < 1, "There is no slot for us");
2755 :
2756 : static bool
2757 0 : get_fullscreenEnabled(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
2758 : {
2759 0 : bool result(self->FullscreenEnabled(nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem));
2760 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2761 0 : args.rval().setBoolean(result);
2762 0 : return true;
2763 : }
2764 :
2765 : static bool
2766 0 : set_fullscreenEnabled(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
2767 : {
2768 0 : DeprecationWarning(cx, obj, nsIDocument::eLenientSetter);
2769 0 : return true;
2770 : }
2771 :
2772 : static const JSJitInfo fullscreenEnabled_getterinfo = {
2773 : { (JSJitGetterOp)get_fullscreenEnabled },
2774 : { prototypes::id::Document },
2775 : { PrototypeTraits<prototypes::id::Document>::Depth },
2776 : JSJitInfo::Getter,
2777 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2778 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
2779 : true, /* isInfallible. False in setters. */
2780 : false, /* isMovable. Not relevant for setters. */
2781 : false, /* isEliminatable. Not relevant for setters. */
2782 : false, /* isAlwaysInSlot. Only relevant for getters. */
2783 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2784 : false, /* isTypedMethod. Only relevant for methods. */
2785 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2786 : };
2787 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2788 : static_assert(0 < 1, "There is no slot for us");
2789 : static const JSJitInfo fullscreenEnabled_setterinfo = {
2790 : { (JSJitGetterOp)set_fullscreenEnabled },
2791 : { prototypes::id::Document },
2792 : { PrototypeTraits<prototypes::id::Document>::Depth },
2793 : JSJitInfo::Setter,
2794 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2795 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2796 : false, /* isInfallible. False in setters. */
2797 : false, /* isMovable. Not relevant for setters. */
2798 : false, /* isEliminatable. Not relevant for setters. */
2799 : false, /* isAlwaysInSlot. Only relevant for getters. */
2800 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2801 : false, /* isTypedMethod. Only relevant for methods. */
2802 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2803 : };
2804 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2805 : static_assert(0 < 1, "There is no slot for us");
2806 :
2807 : static bool
2808 0 : get_mozFullScreenEnabled(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
2809 : {
2810 0 : bool result(self->FullscreenEnabled(nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem));
2811 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2812 0 : args.rval().setBoolean(result);
2813 0 : return true;
2814 : }
2815 :
2816 : static const JSJitInfo mozFullScreenEnabled_getterinfo = {
2817 : { (JSJitGetterOp)get_mozFullScreenEnabled },
2818 : { prototypes::id::Document },
2819 : { PrototypeTraits<prototypes::id::Document>::Depth },
2820 : JSJitInfo::Getter,
2821 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2822 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
2823 : true, /* isInfallible. False in setters. */
2824 : false, /* isMovable. Not relevant for setters. */
2825 : false, /* isEliminatable. Not relevant for setters. */
2826 : false, /* isAlwaysInSlot. Only relevant for getters. */
2827 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2828 : false, /* isTypedMethod. Only relevant for methods. */
2829 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2830 : };
2831 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2832 : static_assert(0 < 1, "There is no slot for us");
2833 :
2834 : static bool
2835 0 : get_fullscreenElement(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
2836 : {
2837 0 : auto result(StrongOrRawPtr<mozilla::dom::Element>(self->GetFullscreenElement()));
2838 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2839 0 : if (!result) {
2840 0 : args.rval().setNull();
2841 0 : return true;
2842 : }
2843 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
2844 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
2845 0 : return false;
2846 : }
2847 0 : return true;
2848 : }
2849 :
2850 : static bool
2851 0 : set_fullscreenElement(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
2852 : {
2853 0 : DeprecationWarning(cx, obj, nsIDocument::eLenientSetter);
2854 0 : return true;
2855 : }
2856 :
2857 : static const JSJitInfo fullscreenElement_getterinfo = {
2858 : { (JSJitGetterOp)get_fullscreenElement },
2859 : { prototypes::id::Document },
2860 : { PrototypeTraits<prototypes::id::Document>::Depth },
2861 : JSJitInfo::Getter,
2862 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2863 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2864 : false, /* isInfallible. False in setters. */
2865 : false, /* isMovable. Not relevant for setters. */
2866 : false, /* isEliminatable. Not relevant for setters. */
2867 : false, /* isAlwaysInSlot. Only relevant for getters. */
2868 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2869 : false, /* isTypedMethod. Only relevant for methods. */
2870 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2871 : };
2872 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2873 : static_assert(0 < 1, "There is no slot for us");
2874 : static const JSJitInfo fullscreenElement_setterinfo = {
2875 : { (JSJitGetterOp)set_fullscreenElement },
2876 : { prototypes::id::Document },
2877 : { PrototypeTraits<prototypes::id::Document>::Depth },
2878 : JSJitInfo::Setter,
2879 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2880 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2881 : false, /* isInfallible. False in setters. */
2882 : false, /* isMovable. Not relevant for setters. */
2883 : false, /* isEliminatable. Not relevant for setters. */
2884 : false, /* isAlwaysInSlot. Only relevant for getters. */
2885 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2886 : false, /* isTypedMethod. Only relevant for methods. */
2887 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2888 : };
2889 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2890 : static_assert(0 < 1, "There is no slot for us");
2891 :
2892 : static bool
2893 0 : get_mozFullScreenElement(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
2894 : {
2895 0 : auto result(StrongOrRawPtr<mozilla::dom::Element>(self->GetFullscreenElement()));
2896 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2897 0 : if (!result) {
2898 0 : args.rval().setNull();
2899 0 : return true;
2900 : }
2901 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
2902 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
2903 0 : return false;
2904 : }
2905 0 : return true;
2906 : }
2907 :
2908 : static const JSJitInfo mozFullScreenElement_getterinfo = {
2909 : { (JSJitGetterOp)get_mozFullScreenElement },
2910 : { prototypes::id::Document },
2911 : { PrototypeTraits<prototypes::id::Document>::Depth },
2912 : JSJitInfo::Getter,
2913 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2914 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
2915 : false, /* isInfallible. False in setters. */
2916 : false, /* isMovable. Not relevant for setters. */
2917 : false, /* isEliminatable. Not relevant for setters. */
2918 : false, /* isAlwaysInSlot. Only relevant for getters. */
2919 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2920 : false, /* isTypedMethod. Only relevant for methods. */
2921 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2922 : };
2923 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2924 : static_assert(0 < 1, "There is no slot for us");
2925 :
2926 : static bool
2927 0 : exitFullscreen(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
2928 : {
2929 0 : self->ExitFullscreen();
2930 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2931 0 : args.rval().setUndefined();
2932 0 : return true;
2933 : }
2934 :
2935 : static const JSJitInfo exitFullscreen_methodinfo = {
2936 : { (JSJitGetterOp)exitFullscreen },
2937 : { prototypes::id::Document },
2938 : { PrototypeTraits<prototypes::id::Document>::Depth },
2939 : JSJitInfo::Method,
2940 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2941 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2942 : true, /* isInfallible. False in setters. */
2943 : false, /* isMovable. Not relevant for setters. */
2944 : false, /* isEliminatable. Not relevant for setters. */
2945 : false, /* isAlwaysInSlot. Only relevant for getters. */
2946 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2947 : false, /* isTypedMethod. Only relevant for methods. */
2948 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2949 : };
2950 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2951 : static_assert(0 < 1, "There is no slot for us");
2952 :
2953 : static bool
2954 0 : mozCancelFullScreen(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
2955 : {
2956 0 : self->ExitFullscreen();
2957 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2958 0 : args.rval().setUndefined();
2959 0 : return true;
2960 : }
2961 :
2962 : static const JSJitInfo mozCancelFullScreen_methodinfo = {
2963 : { (JSJitGetterOp)mozCancelFullScreen },
2964 : { prototypes::id::Document },
2965 : { PrototypeTraits<prototypes::id::Document>::Depth },
2966 : JSJitInfo::Method,
2967 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
2968 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
2969 : true, /* isInfallible. False in setters. */
2970 : false, /* isMovable. Not relevant for setters. */
2971 : false, /* isEliminatable. Not relevant for setters. */
2972 : false, /* isAlwaysInSlot. Only relevant for getters. */
2973 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
2974 : false, /* isTypedMethod. Only relevant for methods. */
2975 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
2976 : };
2977 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
2978 : static_assert(0 < 1, "There is no slot for us");
2979 :
2980 : static bool
2981 0 : get_onfullscreenchange(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
2982 : {
2983 0 : RefPtr<EventHandlerNonNull> result(self->GetOnfullscreenchange());
2984 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
2985 0 : if (result) {
2986 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
2987 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
2988 0 : return false;
2989 : }
2990 0 : return true;
2991 : } else {
2992 0 : args.rval().setNull();
2993 0 : return true;
2994 : }
2995 : }
2996 :
2997 : static bool
2998 0 : set_onfullscreenchange(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
2999 : {
3000 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3001 0 : if (args[0].isObject()) {
3002 : { // scope for tempRoot
3003 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3004 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3005 : }
3006 : } else {
3007 0 : arg0 = nullptr;
3008 : }
3009 0 : self->SetOnfullscreenchange(Constify(arg0));
3010 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3011 :
3012 0 : return true;
3013 : }
3014 :
3015 : static const JSJitInfo onfullscreenchange_getterinfo = {
3016 : { (JSJitGetterOp)get_onfullscreenchange },
3017 : { prototypes::id::Document },
3018 : { PrototypeTraits<prototypes::id::Document>::Depth },
3019 : JSJitInfo::Getter,
3020 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3021 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3022 : false, /* isInfallible. False in setters. */
3023 : false, /* isMovable. Not relevant for setters. */
3024 : false, /* isEliminatable. Not relevant for setters. */
3025 : false, /* isAlwaysInSlot. Only relevant for getters. */
3026 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3027 : false, /* isTypedMethod. Only relevant for methods. */
3028 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3029 : };
3030 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3031 : static_assert(0 < 1, "There is no slot for us");
3032 : static const JSJitInfo onfullscreenchange_setterinfo = {
3033 : { (JSJitGetterOp)set_onfullscreenchange },
3034 : { prototypes::id::Document },
3035 : { PrototypeTraits<prototypes::id::Document>::Depth },
3036 : JSJitInfo::Setter,
3037 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3038 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3039 : false, /* isInfallible. False in setters. */
3040 : false, /* isMovable. Not relevant for setters. */
3041 : false, /* isEliminatable. Not relevant for setters. */
3042 : false, /* isAlwaysInSlot. Only relevant for getters. */
3043 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3044 : false, /* isTypedMethod. Only relevant for methods. */
3045 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3046 : };
3047 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3048 : static_assert(0 < 1, "There is no slot for us");
3049 :
3050 : static bool
3051 0 : get_onfullscreenerror(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
3052 : {
3053 0 : RefPtr<EventHandlerNonNull> result(self->GetOnfullscreenerror());
3054 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3055 0 : if (result) {
3056 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3057 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3058 0 : return false;
3059 : }
3060 0 : return true;
3061 : } else {
3062 0 : args.rval().setNull();
3063 0 : return true;
3064 : }
3065 : }
3066 :
3067 : static bool
3068 0 : set_onfullscreenerror(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
3069 : {
3070 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3071 0 : if (args[0].isObject()) {
3072 : { // scope for tempRoot
3073 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3074 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3075 : }
3076 : } else {
3077 0 : arg0 = nullptr;
3078 : }
3079 0 : self->SetOnfullscreenerror(Constify(arg0));
3080 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3081 :
3082 0 : return true;
3083 : }
3084 :
3085 : static const JSJitInfo onfullscreenerror_getterinfo = {
3086 : { (JSJitGetterOp)get_onfullscreenerror },
3087 : { prototypes::id::Document },
3088 : { PrototypeTraits<prototypes::id::Document>::Depth },
3089 : JSJitInfo::Getter,
3090 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3091 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3092 : false, /* isInfallible. False in setters. */
3093 : false, /* isMovable. Not relevant for setters. */
3094 : false, /* isEliminatable. Not relevant for setters. */
3095 : false, /* isAlwaysInSlot. Only relevant for getters. */
3096 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3097 : false, /* isTypedMethod. Only relevant for methods. */
3098 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3099 : };
3100 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3101 : static_assert(0 < 1, "There is no slot for us");
3102 : static const JSJitInfo onfullscreenerror_setterinfo = {
3103 : { (JSJitGetterOp)set_onfullscreenerror },
3104 : { prototypes::id::Document },
3105 : { PrototypeTraits<prototypes::id::Document>::Depth },
3106 : JSJitInfo::Setter,
3107 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3108 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3109 : false, /* isInfallible. False in setters. */
3110 : false, /* isMovable. Not relevant for setters. */
3111 : false, /* isEliminatable. Not relevant for setters. */
3112 : false, /* isAlwaysInSlot. Only relevant for getters. */
3113 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3114 : false, /* isTypedMethod. Only relevant for methods. */
3115 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3116 : };
3117 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3118 : static_assert(0 < 1, "There is no slot for us");
3119 :
3120 : static bool
3121 0 : get_pointerLockElement(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
3122 : {
3123 0 : auto result(StrongOrRawPtr<mozilla::dom::Element>(self->GetPointerLockElement()));
3124 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3125 0 : if (!result) {
3126 0 : args.rval().setNull();
3127 0 : return true;
3128 : }
3129 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3130 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3131 0 : return false;
3132 : }
3133 0 : return true;
3134 : }
3135 :
3136 : static const JSJitInfo pointerLockElement_getterinfo = {
3137 : { (JSJitGetterOp)get_pointerLockElement },
3138 : { prototypes::id::Document },
3139 : { PrototypeTraits<prototypes::id::Document>::Depth },
3140 : JSJitInfo::Getter,
3141 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3142 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3143 : false, /* isInfallible. False in setters. */
3144 : false, /* isMovable. Not relevant for setters. */
3145 : false, /* isEliminatable. Not relevant for setters. */
3146 : false, /* isAlwaysInSlot. Only relevant for getters. */
3147 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3148 : false, /* isTypedMethod. Only relevant for methods. */
3149 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3150 : };
3151 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3152 : static_assert(0 < 1, "There is no slot for us");
3153 :
3154 : static bool
3155 0 : exitPointerLock(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
3156 : {
3157 0 : self->ExitPointerLock();
3158 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3159 0 : args.rval().setUndefined();
3160 0 : return true;
3161 : }
3162 :
3163 : static const JSJitInfo exitPointerLock_methodinfo = {
3164 : { (JSJitGetterOp)exitPointerLock },
3165 : { prototypes::id::Document },
3166 : { PrototypeTraits<prototypes::id::Document>::Depth },
3167 : JSJitInfo::Method,
3168 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3169 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3170 : true, /* isInfallible. False in setters. */
3171 : false, /* isMovable. Not relevant for setters. */
3172 : false, /* isEliminatable. Not relevant for setters. */
3173 : false, /* isAlwaysInSlot. Only relevant for getters. */
3174 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3175 : false, /* isTypedMethod. Only relevant for methods. */
3176 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3177 : };
3178 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3179 : static_assert(0 < 1, "There is no slot for us");
3180 :
3181 : static bool
3182 0 : get_onpointerlockchange(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
3183 : {
3184 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerlockchange());
3185 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3186 0 : if (result) {
3187 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3188 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3189 0 : return false;
3190 : }
3191 0 : return true;
3192 : } else {
3193 0 : args.rval().setNull();
3194 0 : return true;
3195 : }
3196 : }
3197 :
3198 : static bool
3199 0 : set_onpointerlockchange(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
3200 : {
3201 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3202 0 : if (args[0].isObject()) {
3203 : { // scope for tempRoot
3204 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3205 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3206 : }
3207 : } else {
3208 0 : arg0 = nullptr;
3209 : }
3210 0 : self->SetOnpointerlockchange(Constify(arg0));
3211 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3212 :
3213 0 : return true;
3214 : }
3215 :
3216 : static const JSJitInfo onpointerlockchange_getterinfo = {
3217 : { (JSJitGetterOp)get_onpointerlockchange },
3218 : { prototypes::id::Document },
3219 : { PrototypeTraits<prototypes::id::Document>::Depth },
3220 : JSJitInfo::Getter,
3221 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3222 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3223 : false, /* isInfallible. False in setters. */
3224 : false, /* isMovable. Not relevant for setters. */
3225 : false, /* isEliminatable. Not relevant for setters. */
3226 : false, /* isAlwaysInSlot. Only relevant for getters. */
3227 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3228 : false, /* isTypedMethod. Only relevant for methods. */
3229 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3230 : };
3231 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3232 : static_assert(0 < 1, "There is no slot for us");
3233 : static const JSJitInfo onpointerlockchange_setterinfo = {
3234 : { (JSJitGetterOp)set_onpointerlockchange },
3235 : { prototypes::id::Document },
3236 : { PrototypeTraits<prototypes::id::Document>::Depth },
3237 : JSJitInfo::Setter,
3238 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3239 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3240 : false, /* isInfallible. False in setters. */
3241 : false, /* isMovable. Not relevant for setters. */
3242 : false, /* isEliminatable. Not relevant for setters. */
3243 : false, /* isAlwaysInSlot. Only relevant for getters. */
3244 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3245 : false, /* isTypedMethod. Only relevant for methods. */
3246 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3247 : };
3248 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3249 : static_assert(0 < 1, "There is no slot for us");
3250 :
3251 : static bool
3252 0 : get_onpointerlockerror(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
3253 : {
3254 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerlockerror());
3255 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3256 0 : if (result) {
3257 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
3258 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
3259 0 : return false;
3260 : }
3261 0 : return true;
3262 : } else {
3263 0 : args.rval().setNull();
3264 0 : return true;
3265 : }
3266 : }
3267 :
3268 : static bool
3269 0 : set_onpointerlockerror(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
3270 : {
3271 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
3272 0 : if (args[0].isObject()) {
3273 : { // scope for tempRoot
3274 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
3275 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
3276 : }
3277 : } else {
3278 0 : arg0 = nullptr;
3279 : }
3280 0 : self->SetOnpointerlockerror(Constify(arg0));
3281 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3282 :
3283 0 : return true;
3284 : }
3285 :
3286 : static const JSJitInfo onpointerlockerror_getterinfo = {
3287 : { (JSJitGetterOp)get_onpointerlockerror },
3288 : { prototypes::id::Document },
3289 : { PrototypeTraits<prototypes::id::Document>::Depth },
3290 : JSJitInfo::Getter,
3291 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3292 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3293 : false, /* isInfallible. False in setters. */
3294 : false, /* isMovable. Not relevant for setters. */
3295 : false, /* isEliminatable. Not relevant for setters. */
3296 : false, /* isAlwaysInSlot. Only relevant for getters. */
3297 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3298 : false, /* isTypedMethod. Only relevant for methods. */
3299 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3300 : };
3301 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3302 : static_assert(0 < 1, "There is no slot for us");
3303 : static const JSJitInfo onpointerlockerror_setterinfo = {
3304 : { (JSJitGetterOp)set_onpointerlockerror },
3305 : { prototypes::id::Document },
3306 : { PrototypeTraits<prototypes::id::Document>::Depth },
3307 : JSJitInfo::Setter,
3308 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3309 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3310 : false, /* isInfallible. False in setters. */
3311 : false, /* isMovable. Not relevant for setters. */
3312 : false, /* isEliminatable. Not relevant for setters. */
3313 : false, /* isAlwaysInSlot. Only relevant for getters. */
3314 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3315 : false, /* isTypedMethod. Only relevant for methods. */
3316 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3317 : };
3318 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3319 : static_assert(0 < 1, "There is no slot for us");
3320 :
3321 : static bool
3322 0 : registerElement(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
3323 : {
3324 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
3325 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.registerElement");
3326 : }
3327 0 : binding_detail::FakeString arg0;
3328 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
3329 0 : return false;
3330 : }
3331 0 : RootedDictionary<binding_detail::FastElementRegistrationOptions> arg1(cx);
3332 0 : if (!arg1.Init(cx, (args.hasDefined(1)) ? args[1] : JS::NullHandleValue, "Argument 2 of Document.registerElement", false)) {
3333 0 : return false;
3334 : }
3335 0 : binding_detail::FastErrorResult rv;
3336 0 : JS::Rooted<JSObject*> result(cx);
3337 0 : self->RegisterElement(cx, NonNullHelper(Constify(arg0)), Constify(arg1), &result, rv);
3338 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
3339 0 : return false;
3340 : }
3341 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3342 0 : JS::ExposeObjectToActiveJS(result);
3343 0 : args.rval().setObject(*result);
3344 0 : if (!MaybeWrapObjectValue(cx, args.rval())) {
3345 0 : return false;
3346 : }
3347 0 : return true;
3348 : }
3349 :
3350 : static const JSJitInfo registerElement_methodinfo = {
3351 : { (JSJitGetterOp)registerElement },
3352 : { prototypes::id::Document },
3353 : { PrototypeTraits<prototypes::id::Document>::Depth },
3354 : JSJitInfo::Method,
3355 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3356 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3357 : false, /* isInfallible. False in setters. */
3358 : false, /* isMovable. Not relevant for setters. */
3359 : false, /* isEliminatable. Not relevant for setters. */
3360 : false, /* isAlwaysInSlot. Only relevant for getters. */
3361 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3362 : false, /* isTypedMethod. Only relevant for methods. */
3363 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3364 : };
3365 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3366 : static_assert(0 < 1, "There is no slot for us");
3367 :
3368 : static bool
3369 0 : get_hidden(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
3370 : {
3371 0 : bool result(self->Hidden());
3372 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3373 0 : args.rval().setBoolean(result);
3374 0 : return true;
3375 : }
3376 :
3377 : static const JSJitInfo hidden_getterinfo = {
3378 : { (JSJitGetterOp)get_hidden },
3379 : { prototypes::id::Document },
3380 : { PrototypeTraits<prototypes::id::Document>::Depth },
3381 : JSJitInfo::Getter,
3382 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3383 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
3384 : true, /* isInfallible. False in setters. */
3385 : false, /* isMovable. Not relevant for setters. */
3386 : false, /* isEliminatable. Not relevant for setters. */
3387 : false, /* isAlwaysInSlot. Only relevant for getters. */
3388 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3389 : false, /* isTypedMethod. Only relevant for methods. */
3390 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3391 : };
3392 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3393 : static_assert(0 < 1, "There is no slot for us");
3394 :
3395 : static bool
3396 0 : get_visibilityState(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
3397 : {
3398 0 : VisibilityState result(self->VisibilityState());
3399 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3400 0 : if (!ToJSValue(cx, result, args.rval())) {
3401 0 : return false;
3402 : }
3403 0 : return true;
3404 : }
3405 :
3406 : static const JSJitInfo visibilityState_getterinfo = {
3407 : { (JSJitGetterOp)get_visibilityState },
3408 : { prototypes::id::Document },
3409 : { PrototypeTraits<prototypes::id::Document>::Depth },
3410 : JSJitInfo::Getter,
3411 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3412 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
3413 : false, /* isInfallible. False in setters. */
3414 : false, /* isMovable. Not relevant for setters. */
3415 : false, /* isEliminatable. Not relevant for setters. */
3416 : false, /* isAlwaysInSlot. Only relevant for getters. */
3417 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3418 : false, /* isTypedMethod. Only relevant for methods. */
3419 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3420 : };
3421 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3422 : static_assert(0 < 1, "There is no slot for us");
3423 :
3424 : static bool
3425 2 : get_styleSheets(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
3426 : {
3427 2 : auto result(StrongOrRawPtr<mozilla::dom::StyleSheetList>(self->StyleSheets()));
3428 2 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3429 2 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3430 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3431 0 : return false;
3432 : }
3433 2 : return true;
3434 : }
3435 :
3436 : static const JSJitInfo styleSheets_getterinfo = {
3437 : { (JSJitGetterOp)get_styleSheets },
3438 : { prototypes::id::Document },
3439 : { PrototypeTraits<prototypes::id::Document>::Depth },
3440 : JSJitInfo::Getter,
3441 : JSJitInfo::AliasNone, /* aliasSet. Not relevant for setters. */
3442 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3443 : false, /* isInfallible. False in setters. */
3444 : true, /* isMovable. Not relevant for setters. */
3445 : true, /* isEliminatable. Not relevant for setters. */
3446 : false, /* isAlwaysInSlot. Only relevant for getters. */
3447 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3448 : false, /* isTypedMethod. Only relevant for methods. */
3449 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3450 : };
3451 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3452 : static_assert(0 < 1, "There is no slot for us");
3453 :
3454 : static bool
3455 1 : get_selectedStyleSheetSet(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
3456 : {
3457 2 : DOMString result;
3458 1 : self->GetSelectedStyleSheetSet(result);
3459 1 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3460 1 : if (!xpc::StringToJsval(cx, result, args.rval())) {
3461 0 : return false;
3462 : }
3463 1 : return true;
3464 : }
3465 :
3466 : static bool
3467 0 : set_selectedStyleSheetSet(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
3468 : {
3469 0 : binding_detail::FakeString arg0;
3470 0 : if (!ConvertJSValueToString(cx, args[0], eNull, eNull, arg0)) {
3471 0 : return false;
3472 : }
3473 0 : self->SetSelectedStyleSheetSet(NonNullHelper(Constify(arg0)));
3474 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3475 :
3476 0 : return true;
3477 : }
3478 :
3479 : static const JSJitInfo selectedStyleSheetSet_getterinfo = {
3480 : { (JSJitGetterOp)get_selectedStyleSheetSet },
3481 : { prototypes::id::Document },
3482 : { PrototypeTraits<prototypes::id::Document>::Depth },
3483 : JSJitInfo::Getter,
3484 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3485 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3486 : false, /* isInfallible. False in setters. */
3487 : false, /* isMovable. Not relevant for setters. */
3488 : false, /* isEliminatable. Not relevant for setters. */
3489 : false, /* isAlwaysInSlot. Only relevant for getters. */
3490 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3491 : false, /* isTypedMethod. Only relevant for methods. */
3492 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3493 : };
3494 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3495 : static_assert(0 < 1, "There is no slot for us");
3496 : static const JSJitInfo selectedStyleSheetSet_setterinfo = {
3497 : { (JSJitGetterOp)set_selectedStyleSheetSet },
3498 : { prototypes::id::Document },
3499 : { PrototypeTraits<prototypes::id::Document>::Depth },
3500 : JSJitInfo::Setter,
3501 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3502 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3503 : false, /* isInfallible. False in setters. */
3504 : false, /* isMovable. Not relevant for setters. */
3505 : false, /* isEliminatable. Not relevant for setters. */
3506 : false, /* isAlwaysInSlot. Only relevant for getters. */
3507 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3508 : false, /* isTypedMethod. Only relevant for methods. */
3509 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3510 : };
3511 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3512 : static_assert(0 < 1, "There is no slot for us");
3513 :
3514 : static bool
3515 1 : get_lastStyleSheetSet(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
3516 : {
3517 2 : DOMString result;
3518 1 : self->GetLastStyleSheetSet(result);
3519 1 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3520 1 : if (!xpc::StringToJsval(cx, result, args.rval())) {
3521 0 : return false;
3522 : }
3523 1 : return true;
3524 : }
3525 :
3526 : static const JSJitInfo lastStyleSheetSet_getterinfo = {
3527 : { (JSJitGetterOp)get_lastStyleSheetSet },
3528 : { prototypes::id::Document },
3529 : { PrototypeTraits<prototypes::id::Document>::Depth },
3530 : JSJitInfo::Getter,
3531 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3532 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3533 : false, /* isInfallible. False in setters. */
3534 : false, /* isMovable. Not relevant for setters. */
3535 : false, /* isEliminatable. Not relevant for setters. */
3536 : false, /* isAlwaysInSlot. Only relevant for getters. */
3537 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3538 : false, /* isTypedMethod. Only relevant for methods. */
3539 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3540 : };
3541 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3542 : static_assert(0 < 1, "There is no slot for us");
3543 :
3544 : static bool
3545 2 : get_preferredStyleSheetSet(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
3546 : {
3547 4 : DOMString result;
3548 2 : self->GetPreferredStyleSheetSet(result);
3549 2 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3550 2 : if (!xpc::StringToJsval(cx, result, args.rval())) {
3551 0 : return false;
3552 : }
3553 2 : return true;
3554 : }
3555 :
3556 : static const JSJitInfo preferredStyleSheetSet_getterinfo = {
3557 : { (JSJitGetterOp)get_preferredStyleSheetSet },
3558 : { prototypes::id::Document },
3559 : { PrototypeTraits<prototypes::id::Document>::Depth },
3560 : JSJitInfo::Getter,
3561 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3562 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3563 : false, /* isInfallible. False in setters. */
3564 : false, /* isMovable. Not relevant for setters. */
3565 : false, /* isEliminatable. Not relevant for setters. */
3566 : false, /* isAlwaysInSlot. Only relevant for getters. */
3567 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3568 : false, /* isTypedMethod. Only relevant for methods. */
3569 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3570 : };
3571 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3572 : static_assert(0 < 1, "There is no slot for us");
3573 :
3574 : static bool
3575 0 : get_styleSheetSets(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
3576 : {
3577 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMStringList>(self->StyleSheetSets()));
3578 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3579 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3580 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3581 0 : return false;
3582 : }
3583 0 : return true;
3584 : }
3585 :
3586 : static const JSJitInfo styleSheetSets_getterinfo = {
3587 : { (JSJitGetterOp)get_styleSheetSets },
3588 : { prototypes::id::Document },
3589 : { PrototypeTraits<prototypes::id::Document>::Depth },
3590 : JSJitInfo::Getter,
3591 : JSJitInfo::AliasNone, /* aliasSet. Not relevant for setters. */
3592 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3593 : false, /* isInfallible. False in setters. */
3594 : true, /* isMovable. Not relevant for setters. */
3595 : true, /* isEliminatable. Not relevant for setters. */
3596 : false, /* isAlwaysInSlot. Only relevant for getters. */
3597 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3598 : false, /* isTypedMethod. Only relevant for methods. */
3599 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3600 : };
3601 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3602 : static_assert(0 < 1, "There is no slot for us");
3603 :
3604 : static bool
3605 0 : enableStyleSheetsForSet(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
3606 : {
3607 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
3608 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.enableStyleSheetsForSet");
3609 : }
3610 0 : binding_detail::FakeString arg0;
3611 0 : if (!ConvertJSValueToString(cx, args[0], eNull, eNull, arg0)) {
3612 0 : return false;
3613 : }
3614 0 : self->EnableStyleSheetsForSet(NonNullHelper(Constify(arg0)));
3615 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3616 0 : args.rval().setUndefined();
3617 0 : return true;
3618 : }
3619 :
3620 : static const JSJitInfo enableStyleSheetsForSet_methodinfo = {
3621 : { (JSJitGetterOp)enableStyleSheetsForSet },
3622 : { prototypes::id::Document },
3623 : { PrototypeTraits<prototypes::id::Document>::Depth },
3624 : JSJitInfo::Method,
3625 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3626 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
3627 : false, /* isInfallible. False in setters. */
3628 : false, /* isMovable. Not relevant for setters. */
3629 : false, /* isEliminatable. Not relevant for setters. */
3630 : false, /* isAlwaysInSlot. Only relevant for getters. */
3631 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3632 : false, /* isTypedMethod. Only relevant for methods. */
3633 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3634 : };
3635 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3636 : static_assert(0 < 1, "There is no slot for us");
3637 :
3638 : static bool
3639 0 : elementFromPoint(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
3640 : {
3641 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
3642 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.elementFromPoint");
3643 : }
3644 : float arg0;
3645 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[0], &arg0)) {
3646 0 : return false;
3647 0 : } else if (!mozilla::IsFinite(arg0)) {
3648 0 : ThrowErrorMessage(cx, MSG_NOT_FINITE, "Argument 1 of Document.elementFromPoint");
3649 0 : return false;
3650 : }
3651 : float arg1;
3652 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[1], &arg1)) {
3653 0 : return false;
3654 0 : } else if (!mozilla::IsFinite(arg1)) {
3655 0 : ThrowErrorMessage(cx, MSG_NOT_FINITE, "Argument 2 of Document.elementFromPoint");
3656 0 : return false;
3657 : }
3658 0 : auto result(StrongOrRawPtr<mozilla::dom::Element>(self->ElementFromPoint(arg0, arg1)));
3659 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3660 0 : if (!result) {
3661 0 : args.rval().setNull();
3662 0 : return true;
3663 : }
3664 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3665 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3666 0 : return false;
3667 : }
3668 0 : return true;
3669 : }
3670 :
3671 : static const JSJitInfo elementFromPoint_methodinfo = {
3672 : { (JSJitGetterOp)elementFromPoint },
3673 : { prototypes::id::Document },
3674 : { PrototypeTraits<prototypes::id::Document>::Depth },
3675 : JSJitInfo::Method,
3676 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3677 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3678 : false, /* isInfallible. False in setters. */
3679 : false, /* isMovable. Not relevant for setters. */
3680 : false, /* isEliminatable. Not relevant for setters. */
3681 : false, /* isAlwaysInSlot. Only relevant for getters. */
3682 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3683 : false, /* isTypedMethod. Only relevant for methods. */
3684 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3685 : };
3686 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3687 : static_assert(0 < 1, "There is no slot for us");
3688 :
3689 : static bool
3690 0 : elementsFromPoint(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
3691 : {
3692 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
3693 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.elementsFromPoint");
3694 : }
3695 : float arg0;
3696 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[0], &arg0)) {
3697 0 : return false;
3698 0 : } else if (!mozilla::IsFinite(arg0)) {
3699 0 : ThrowErrorMessage(cx, MSG_NOT_FINITE, "Argument 1 of Document.elementsFromPoint");
3700 0 : return false;
3701 : }
3702 : float arg1;
3703 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[1], &arg1)) {
3704 0 : return false;
3705 0 : } else if (!mozilla::IsFinite(arg1)) {
3706 0 : ThrowErrorMessage(cx, MSG_NOT_FINITE, "Argument 2 of Document.elementsFromPoint");
3707 0 : return false;
3708 : }
3709 0 : nsTArray<StrongPtrForMember<mozilla::dom::Element>::Type> result;
3710 0 : self->ElementsFromPoint(arg0, arg1, result);
3711 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3712 :
3713 0 : uint32_t length = result.Length();
3714 0 : JS::Rooted<JSObject*> returnArray(cx, JS_NewArrayObject(cx, length));
3715 0 : if (!returnArray) {
3716 0 : return false;
3717 : }
3718 : // Scope for 'tmp'
3719 : {
3720 0 : JS::Rooted<JS::Value> tmp(cx);
3721 0 : for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
3722 : // Control block to let us common up the JS_DefineElement calls when there
3723 : // are different ways to succeed at wrapping the object.
3724 : do {
3725 0 : if (!GetOrCreateDOMReflector(cx, result[sequenceIdx0], &tmp)) {
3726 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3727 0 : return false;
3728 : }
3729 0 : break;
3730 : } while (0);
3731 0 : if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
3732 : JSPROP_ENUMERATE)) {
3733 0 : return false;
3734 : }
3735 : }
3736 : }
3737 0 : args.rval().setObject(*returnArray);
3738 0 : return true;
3739 : }
3740 :
3741 : static const JSJitInfo elementsFromPoint_methodinfo = {
3742 : { (JSJitGetterOp)elementsFromPoint },
3743 : { prototypes::id::Document },
3744 : { PrototypeTraits<prototypes::id::Document>::Depth },
3745 : JSJitInfo::Method,
3746 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3747 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3748 : false, /* isInfallible. False in setters. */
3749 : false, /* isMovable. Not relevant for setters. */
3750 : false, /* isEliminatable. Not relevant for setters. */
3751 : false, /* isAlwaysInSlot. Only relevant for getters. */
3752 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3753 : false, /* isTypedMethod. Only relevant for methods. */
3754 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3755 : };
3756 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3757 : static_assert(0 < 1, "There is no slot for us");
3758 :
3759 : static bool
3760 0 : caretPositionFromPoint(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
3761 : {
3762 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
3763 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.caretPositionFromPoint");
3764 : }
3765 : float arg0;
3766 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[0], &arg0)) {
3767 0 : return false;
3768 0 : } else if (!mozilla::IsFinite(arg0)) {
3769 0 : ThrowErrorMessage(cx, MSG_NOT_FINITE, "Argument 1 of Document.caretPositionFromPoint");
3770 0 : return false;
3771 : }
3772 : float arg1;
3773 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[1], &arg1)) {
3774 0 : return false;
3775 0 : } else if (!mozilla::IsFinite(arg1)) {
3776 0 : ThrowErrorMessage(cx, MSG_NOT_FINITE, "Argument 2 of Document.caretPositionFromPoint");
3777 0 : return false;
3778 : }
3779 0 : auto result(StrongOrRawPtr<nsDOMCaretPosition>(self->CaretPositionFromPoint(arg0, arg1)));
3780 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3781 0 : if (!result) {
3782 0 : args.rval().setNull();
3783 0 : return true;
3784 : }
3785 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3786 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3787 0 : return false;
3788 : }
3789 0 : return true;
3790 : }
3791 :
3792 : static const JSJitInfo caretPositionFromPoint_methodinfo = {
3793 : { (JSJitGetterOp)caretPositionFromPoint },
3794 : { prototypes::id::Document },
3795 : { PrototypeTraits<prototypes::id::Document>::Depth },
3796 : JSJitInfo::Method,
3797 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3798 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3799 : false, /* isInfallible. False in setters. */
3800 : false, /* isMovable. Not relevant for setters. */
3801 : false, /* isEliminatable. Not relevant for setters. */
3802 : false, /* isAlwaysInSlot. Only relevant for getters. */
3803 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3804 : false, /* isTypedMethod. Only relevant for methods. */
3805 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3806 : };
3807 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3808 : static_assert(0 < 1, "There is no slot for us");
3809 :
3810 : static bool
3811 0 : get_scrollingElement(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
3812 : {
3813 0 : auto result(StrongOrRawPtr<mozilla::dom::Element>(self->GetScrollingElement()));
3814 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3815 0 : if (!result) {
3816 0 : args.rval().setNull();
3817 0 : return true;
3818 : }
3819 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3820 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3821 0 : return false;
3822 : }
3823 0 : return true;
3824 : }
3825 :
3826 : static const JSJitInfo scrollingElement_getterinfo = {
3827 : { (JSJitGetterOp)get_scrollingElement },
3828 : { prototypes::id::Document },
3829 : { PrototypeTraits<prototypes::id::Document>::Depth },
3830 : JSJitInfo::Getter,
3831 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3832 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3833 : false, /* isInfallible. False in setters. */
3834 : false, /* isMovable. Not relevant for setters. */
3835 : false, /* isEliminatable. Not relevant for setters. */
3836 : false, /* isAlwaysInSlot. Only relevant for getters. */
3837 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3838 : false, /* isTypedMethod. Only relevant for methods. */
3839 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3840 : };
3841 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3842 : static_assert(0 < 1, "There is no slot for us");
3843 :
3844 : static bool
3845 3 : querySelector(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
3846 : {
3847 3 : if (MOZ_UNLIKELY(args.length() < 1)) {
3848 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.querySelector");
3849 : }
3850 6 : binding_detail::FakeString arg0;
3851 3 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
3852 0 : return false;
3853 : }
3854 6 : binding_detail::FastErrorResult rv;
3855 3 : auto result(StrongOrRawPtr<mozilla::dom::Element>(self->QuerySelector(NonNullHelper(Constify(arg0)), rv)));
3856 3 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
3857 0 : return false;
3858 : }
3859 3 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3860 3 : if (!result) {
3861 0 : args.rval().setNull();
3862 0 : return true;
3863 : }
3864 3 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3865 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3866 0 : return false;
3867 : }
3868 3 : return true;
3869 : }
3870 :
3871 : static const JSJitInfo::ArgType querySelector_methodinfo_argTypes[] = { JSJitInfo::String, JSJitInfo::ArgTypeListEnd };
3872 : static const JSTypedMethodJitInfo querySelector_methodinfo = {
3873 : {
3874 : { (JSJitGetterOp)querySelector },
3875 : { prototypes::id::Document },
3876 : { PrototypeTraits<prototypes::id::Document>::Depth },
3877 : JSJitInfo::Method,
3878 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
3879 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
3880 : false, /* isInfallible. False in setters. */
3881 : false, /* isMovable. Not relevant for setters. */
3882 : false, /* isEliminatable. Not relevant for setters. */
3883 : false, /* isAlwaysInSlot. Only relevant for getters. */
3884 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3885 : true, /* isTypedMethod. Only relevant for methods. */
3886 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3887 : },
3888 : querySelector_methodinfo_argTypes
3889 : };
3890 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3891 : static_assert(0 < 1, "There is no slot for us");
3892 :
3893 : static bool
3894 3 : querySelectorAll(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
3895 : {
3896 3 : if (MOZ_UNLIKELY(args.length() < 1)) {
3897 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.querySelectorAll");
3898 : }
3899 6 : binding_detail::FakeString arg0;
3900 3 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
3901 0 : return false;
3902 : }
3903 6 : binding_detail::FastErrorResult rv;
3904 6 : auto result(StrongOrRawPtr<nsINodeList>(self->QuerySelectorAll(NonNullHelper(Constify(arg0)), rv)));
3905 3 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
3906 0 : return false;
3907 : }
3908 3 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3909 3 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3910 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3911 0 : return false;
3912 : }
3913 3 : return true;
3914 : }
3915 :
3916 : static const JSJitInfo::ArgType querySelectorAll_methodinfo_argTypes[] = { JSJitInfo::String, JSJitInfo::ArgTypeListEnd };
3917 : static const JSTypedMethodJitInfo querySelectorAll_methodinfo = {
3918 : {
3919 : { (JSJitGetterOp)querySelectorAll },
3920 : { prototypes::id::Document },
3921 : { PrototypeTraits<prototypes::id::Document>::Depth },
3922 : JSJitInfo::Method,
3923 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
3924 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3925 : false, /* isInfallible. False in setters. */
3926 : false, /* isMovable. Not relevant for setters. */
3927 : false, /* isEliminatable. Not relevant for setters. */
3928 : false, /* isAlwaysInSlot. Only relevant for getters. */
3929 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3930 : true, /* isTypedMethod. Only relevant for methods. */
3931 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3932 : },
3933 : querySelectorAll_methodinfo_argTypes
3934 : };
3935 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3936 : static_assert(0 < 1, "There is no slot for us");
3937 :
3938 : static bool
3939 0 : get_timeline(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
3940 : {
3941 0 : auto result(StrongOrRawPtr<mozilla::dom::DocumentTimeline>(self->Timeline()));
3942 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3943 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
3944 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3945 0 : return false;
3946 : }
3947 0 : return true;
3948 : }
3949 :
3950 : static const JSJitInfo timeline_getterinfo = {
3951 : { (JSJitGetterOp)get_timeline },
3952 : { prototypes::id::Document },
3953 : { PrototypeTraits<prototypes::id::Document>::Depth },
3954 : JSJitInfo::Getter,
3955 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
3956 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
3957 : false, /* isInfallible. False in setters. */
3958 : false, /* isMovable. Not relevant for setters. */
3959 : false, /* isEliminatable. Not relevant for setters. */
3960 : false, /* isAlwaysInSlot. Only relevant for getters. */
3961 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
3962 : false, /* isTypedMethod. Only relevant for methods. */
3963 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
3964 : };
3965 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
3966 : static_assert(0 < 1, "There is no slot for us");
3967 :
3968 : static bool
3969 0 : getAnimations(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
3970 : {
3971 0 : nsTArray<StrongPtrForMember<mozilla::dom::Animation>::Type> result;
3972 0 : self->GetAnimations(result);
3973 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
3974 :
3975 0 : uint32_t length = result.Length();
3976 0 : JS::Rooted<JSObject*> returnArray(cx, JS_NewArrayObject(cx, length));
3977 0 : if (!returnArray) {
3978 0 : return false;
3979 : }
3980 : // Scope for 'tmp'
3981 : {
3982 0 : JS::Rooted<JS::Value> tmp(cx);
3983 0 : for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
3984 : // Control block to let us common up the JS_DefineElement calls when there
3985 : // are different ways to succeed at wrapping the object.
3986 : do {
3987 0 : if (!GetOrCreateDOMReflector(cx, result[sequenceIdx0], &tmp)) {
3988 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
3989 0 : return false;
3990 : }
3991 0 : break;
3992 : } while (0);
3993 0 : if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
3994 : JSPROP_ENUMERATE)) {
3995 0 : return false;
3996 : }
3997 : }
3998 : }
3999 0 : args.rval().setObject(*returnArray);
4000 0 : return true;
4001 : }
4002 :
4003 : static const JSJitInfo getAnimations_methodinfo = {
4004 : { (JSJitGetterOp)getAnimations },
4005 : { prototypes::id::Document },
4006 : { PrototypeTraits<prototypes::id::Document>::Depth },
4007 : JSJitInfo::Method,
4008 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4009 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
4010 : false, /* isInfallible. False in setters. */
4011 : false, /* isMovable. Not relevant for setters. */
4012 : false, /* isEliminatable. Not relevant for setters. */
4013 : false, /* isAlwaysInSlot. Only relevant for getters. */
4014 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4015 : false, /* isTypedMethod. Only relevant for methods. */
4016 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4017 : };
4018 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4019 : static_assert(0 < 1, "There is no slot for us");
4020 :
4021 : static bool
4022 0 : get_rootElement(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
4023 : {
4024 0 : auto result(StrongOrRawPtr<mozilla::dom::SVGSVGElement>(self->GetSVGRootElement()));
4025 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4026 0 : if (!result) {
4027 0 : args.rval().setNull();
4028 0 : return true;
4029 : }
4030 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
4031 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
4032 0 : return false;
4033 : }
4034 0 : return true;
4035 : }
4036 :
4037 : static const JSJitInfo rootElement_getterinfo = {
4038 : { (JSJitGetterOp)get_rootElement },
4039 : { prototypes::id::Document },
4040 : { PrototypeTraits<prototypes::id::Document>::Depth },
4041 : JSJitInfo::Getter,
4042 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4043 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4044 : false, /* isInfallible. False in setters. */
4045 : false, /* isMovable. Not relevant for setters. */
4046 : false, /* isEliminatable. Not relevant for setters. */
4047 : false, /* isAlwaysInSlot. Only relevant for getters. */
4048 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4049 : false, /* isTypedMethod. Only relevant for methods. */
4050 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4051 : };
4052 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4053 : static_assert(0 < 1, "There is no slot for us");
4054 :
4055 : static bool
4056 0 : getAnonymousNodes(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
4057 : {
4058 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
4059 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.getAnonymousNodes");
4060 : }
4061 0 : NonNull<mozilla::dom::Element> arg0;
4062 0 : if (args[0].isObject()) {
4063 : {
4064 0 : nsresult rv = UnwrapObject<prototypes::id::Element, mozilla::dom::Element>(args[0], arg0);
4065 0 : if (NS_FAILED(rv)) {
4066 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of Document.getAnonymousNodes", "Element");
4067 0 : return false;
4068 : }
4069 : }
4070 : } else {
4071 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of Document.getAnonymousNodes");
4072 0 : return false;
4073 : }
4074 0 : auto result(StrongOrRawPtr<nsINodeList>(self->GetAnonymousNodes(NonNullHelper(arg0))));
4075 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4076 0 : if (!result) {
4077 0 : args.rval().setNull();
4078 0 : return true;
4079 : }
4080 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
4081 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
4082 0 : return false;
4083 : }
4084 0 : return true;
4085 : }
4086 :
4087 : static const JSJitInfo getAnonymousNodes_methodinfo = {
4088 : { (JSJitGetterOp)getAnonymousNodes },
4089 : { prototypes::id::Document },
4090 : { PrototypeTraits<prototypes::id::Document>::Depth },
4091 : JSJitInfo::Method,
4092 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4093 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4094 : false, /* isInfallible. False in setters. */
4095 : false, /* isMovable. Not relevant for setters. */
4096 : false, /* isEliminatable. Not relevant for setters. */
4097 : false, /* isAlwaysInSlot. Only relevant for getters. */
4098 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4099 : false, /* isTypedMethod. Only relevant for methods. */
4100 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4101 : };
4102 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4103 : static_assert(0 < 1, "There is no slot for us");
4104 :
4105 : static bool
4106 16 : getAnonymousElementByAttribute(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
4107 : {
4108 16 : if (MOZ_UNLIKELY(args.length() < 3)) {
4109 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.getAnonymousElementByAttribute");
4110 : }
4111 16 : NonNull<mozilla::dom::Element> arg0;
4112 16 : if (args[0].isObject()) {
4113 : {
4114 16 : nsresult rv = UnwrapObject<prototypes::id::Element, mozilla::dom::Element>(args[0], arg0);
4115 16 : if (NS_FAILED(rv)) {
4116 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of Document.getAnonymousElementByAttribute", "Element");
4117 0 : return false;
4118 : }
4119 : }
4120 : } else {
4121 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of Document.getAnonymousElementByAttribute");
4122 0 : return false;
4123 : }
4124 32 : binding_detail::FakeString arg1;
4125 16 : if (!ConvertJSValueToString(cx, args[1], eStringify, eStringify, arg1)) {
4126 0 : return false;
4127 : }
4128 32 : binding_detail::FakeString arg2;
4129 16 : if (!ConvertJSValueToString(cx, args[2], eStringify, eStringify, arg2)) {
4130 0 : return false;
4131 : }
4132 16 : auto result(StrongOrRawPtr<mozilla::dom::Element>(self->GetAnonymousElementByAttribute(NonNullHelper(arg0), NonNullHelper(Constify(arg1)), NonNullHelper(Constify(arg2)))));
4133 16 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4134 16 : if (!result) {
4135 0 : args.rval().setNull();
4136 0 : return true;
4137 : }
4138 16 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
4139 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
4140 0 : return false;
4141 : }
4142 16 : return true;
4143 : }
4144 :
4145 : static const JSJitInfo getAnonymousElementByAttribute_methodinfo = {
4146 : { (JSJitGetterOp)getAnonymousElementByAttribute },
4147 : { prototypes::id::Document },
4148 : { PrototypeTraits<prototypes::id::Document>::Depth },
4149 : JSJitInfo::Method,
4150 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4151 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4152 : false, /* isInfallible. False in setters. */
4153 : false, /* isMovable. Not relevant for setters. */
4154 : false, /* isEliminatable. Not relevant for setters. */
4155 : false, /* isAlwaysInSlot. Only relevant for getters. */
4156 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4157 : false, /* isTypedMethod. Only relevant for methods. */
4158 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4159 : };
4160 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4161 : static_assert(0 < 1, "There is no slot for us");
4162 :
4163 : static bool
4164 2 : getBindingParent(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
4165 : {
4166 2 : if (MOZ_UNLIKELY(args.length() < 1)) {
4167 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.getBindingParent");
4168 : }
4169 2 : NonNull<nsINode> arg0;
4170 2 : if (args[0].isObject()) {
4171 : {
4172 2 : nsresult rv = UnwrapObject<prototypes::id::Node, nsINode>(args[0], arg0);
4173 2 : if (NS_FAILED(rv)) {
4174 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of Document.getBindingParent", "Node");
4175 0 : return false;
4176 : }
4177 : }
4178 : } else {
4179 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of Document.getBindingParent");
4180 0 : return false;
4181 : }
4182 2 : auto result(StrongOrRawPtr<mozilla::dom::Element>(self->GetBindingParent(NonNullHelper(arg0))));
4183 2 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4184 2 : if (!result) {
4185 0 : args.rval().setNull();
4186 0 : return true;
4187 : }
4188 2 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
4189 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
4190 0 : return false;
4191 : }
4192 2 : return true;
4193 : }
4194 :
4195 : static const JSJitInfo getBindingParent_methodinfo = {
4196 : { (JSJitGetterOp)getBindingParent },
4197 : { prototypes::id::Document },
4198 : { PrototypeTraits<prototypes::id::Document>::Depth },
4199 : JSJitInfo::Method,
4200 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4201 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4202 : false, /* isInfallible. False in setters. */
4203 : false, /* isMovable. Not relevant for setters. */
4204 : false, /* isEliminatable. Not relevant for setters. */
4205 : false, /* isAlwaysInSlot. Only relevant for getters. */
4206 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4207 : false, /* isTypedMethod. Only relevant for methods. */
4208 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4209 : };
4210 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4211 : static_assert(0 < 1, "There is no slot for us");
4212 :
4213 : static bool
4214 0 : loadBindingDocument(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
4215 : {
4216 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
4217 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.loadBindingDocument");
4218 : }
4219 0 : binding_detail::FakeString arg0;
4220 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
4221 0 : return false;
4222 : }
4223 0 : binding_detail::FastErrorResult rv;
4224 0 : JSCompartment* compartment = js::GetContextCompartment(cx);
4225 0 : MOZ_ASSERT(compartment);
4226 0 : JSPrincipals* principals = JS_GetCompartmentPrincipals(compartment);
4227 : // Initializing a nonnull is pretty darn annoying...
4228 0 : NonNull<nsIPrincipal> subjectPrincipal;
4229 0 : subjectPrincipal = static_cast<nsIPrincipal*>(nsJSPrincipals::get(principals));
4230 0 : self->LoadBindingDocument(NonNullHelper(Constify(arg0)), subjectPrincipal, rv);
4231 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
4232 0 : return false;
4233 : }
4234 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4235 0 : args.rval().setUndefined();
4236 0 : return true;
4237 : }
4238 :
4239 : static const JSJitInfo loadBindingDocument_methodinfo = {
4240 : { (JSJitGetterOp)loadBindingDocument },
4241 : { prototypes::id::Document },
4242 : { PrototypeTraits<prototypes::id::Document>::Depth },
4243 : JSJitInfo::Method,
4244 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4245 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4246 : false, /* isInfallible. False in setters. */
4247 : false, /* isMovable. Not relevant for setters. */
4248 : false, /* isEliminatable. Not relevant for setters. */
4249 : false, /* isAlwaysInSlot. Only relevant for getters. */
4250 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4251 : false, /* isTypedMethod. Only relevant for methods. */
4252 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4253 : };
4254 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4255 : static_assert(0 < 1, "There is no slot for us");
4256 :
4257 : static bool
4258 0 : createTouch(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
4259 : {
4260 : nsGlobalWindow* arg0;
4261 0 : if (args.hasDefined(0)) {
4262 0 : if (args[0].isObject()) {
4263 : {
4264 0 : nsresult rv = UnwrapObject<prototypes::id::Window, nsGlobalWindow>(args[0], arg0);
4265 0 : if (NS_FAILED(rv)) {
4266 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of Document.createTouch", "Window");
4267 0 : return false;
4268 : }
4269 : }
4270 0 : } else if (args[0].isNullOrUndefined()) {
4271 0 : arg0 = nullptr;
4272 : } else {
4273 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of Document.createTouch");
4274 0 : return false;
4275 : }
4276 : } else {
4277 0 : arg0 = nullptr;
4278 : }
4279 : mozilla::dom::EventTarget* arg1;
4280 0 : if (args.hasDefined(1)) {
4281 0 : if (args[1].isObject()) {
4282 : {
4283 0 : nsresult rv = UnwrapObject<prototypes::id::EventTarget, mozilla::dom::EventTarget>(args[1], arg1);
4284 0 : if (NS_FAILED(rv)) {
4285 0 : RefPtr<mozilla::dom::EventTarget> objPtr;
4286 0 : nsresult rv = UnwrapXPConnect<mozilla::dom::EventTarget>(cx, args[1], getter_AddRefs(objPtr));
4287 0 : if (NS_FAILED(rv)) {
4288 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 2 of Document.createTouch", "EventTarget");
4289 0 : return false;
4290 : }
4291 : // We should have an object
4292 0 : MOZ_ASSERT(objPtr);
4293 0 : arg1 = objPtr;
4294 : }
4295 : }
4296 0 : } else if (args[1].isNullOrUndefined()) {
4297 0 : arg1 = nullptr;
4298 : } else {
4299 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 2 of Document.createTouch");
4300 0 : return false;
4301 : }
4302 : } else {
4303 0 : arg1 = nullptr;
4304 : }
4305 : int32_t arg2;
4306 0 : if (args.hasDefined(2)) {
4307 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[2], &arg2)) {
4308 0 : return false;
4309 : }
4310 : } else {
4311 0 : arg2 = 0;
4312 : }
4313 : int32_t arg3;
4314 0 : if (args.hasDefined(3)) {
4315 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[3], &arg3)) {
4316 0 : return false;
4317 : }
4318 : } else {
4319 0 : arg3 = 0;
4320 : }
4321 : int32_t arg4;
4322 0 : if (args.hasDefined(4)) {
4323 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[4], &arg4)) {
4324 0 : return false;
4325 : }
4326 : } else {
4327 0 : arg4 = 0;
4328 : }
4329 : int32_t arg5;
4330 0 : if (args.hasDefined(5)) {
4331 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[5], &arg5)) {
4332 0 : return false;
4333 : }
4334 : } else {
4335 0 : arg5 = 0;
4336 : }
4337 : int32_t arg6;
4338 0 : if (args.hasDefined(6)) {
4339 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[6], &arg6)) {
4340 0 : return false;
4341 : }
4342 : } else {
4343 0 : arg6 = 0;
4344 : }
4345 : int32_t arg7;
4346 0 : if (args.hasDefined(7)) {
4347 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[7], &arg7)) {
4348 0 : return false;
4349 : }
4350 : } else {
4351 0 : arg7 = 0;
4352 : }
4353 : int32_t arg8;
4354 0 : if (args.hasDefined(8)) {
4355 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[8], &arg8)) {
4356 0 : return false;
4357 : }
4358 : } else {
4359 0 : arg8 = 0;
4360 : }
4361 : int32_t arg9;
4362 0 : if (args.hasDefined(9)) {
4363 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[9], &arg9)) {
4364 0 : return false;
4365 : }
4366 : } else {
4367 0 : arg9 = 0;
4368 : }
4369 : int32_t arg10;
4370 0 : if (args.hasDefined(10)) {
4371 0 : if (!ValueToPrimitive<int32_t, eDefault>(cx, args[10], &arg10)) {
4372 0 : return false;
4373 : }
4374 : } else {
4375 0 : arg10 = 0;
4376 : }
4377 : float arg11;
4378 0 : if (args.hasDefined(11)) {
4379 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[11], &arg11)) {
4380 0 : return false;
4381 0 : } else if (!mozilla::IsFinite(arg11)) {
4382 0 : ThrowErrorMessage(cx, MSG_NOT_FINITE, "Argument 12 of Document.createTouch");
4383 0 : return false;
4384 : }
4385 : } else {
4386 0 : arg11 = 0.0F;
4387 : }
4388 : float arg12;
4389 0 : if (args.hasDefined(12)) {
4390 0 : if (!ValueToPrimitive<float, eDefault>(cx, args[12], &arg12)) {
4391 0 : return false;
4392 0 : } else if (!mozilla::IsFinite(arg12)) {
4393 0 : ThrowErrorMessage(cx, MSG_NOT_FINITE, "Argument 13 of Document.createTouch");
4394 0 : return false;
4395 : }
4396 : } else {
4397 0 : arg12 = 0.0F;
4398 : }
4399 0 : auto result(StrongOrRawPtr<mozilla::dom::Touch>(self->CreateTouch(Constify(arg0), Constify(arg1), arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12)));
4400 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4401 : static_assert(!IsPointer<decltype(result)>::value,
4402 : "NewObject implies that we need to keep the object alive with a strong reference.");
4403 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
4404 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
4405 0 : return false;
4406 : }
4407 0 : return true;
4408 : }
4409 :
4410 : static const JSJitInfo createTouch_methodinfo = {
4411 : { (JSJitGetterOp)createTouch },
4412 : { prototypes::id::Document },
4413 : { PrototypeTraits<prototypes::id::Document>::Depth },
4414 : JSJitInfo::Method,
4415 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4416 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
4417 : false, /* isInfallible. False in setters. */
4418 : false, /* isMovable. Not relevant for setters. */
4419 : false, /* isEliminatable. Not relevant for setters. */
4420 : false, /* isAlwaysInSlot. Only relevant for getters. */
4421 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4422 : false, /* isTypedMethod. Only relevant for methods. */
4423 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4424 : };
4425 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4426 : static_assert(0 < 1, "There is no slot for us");
4427 :
4428 : static bool
4429 0 : createTouchList(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
4430 : {
4431 0 : unsigned argcount = std::min(args.length(), 2u);
4432 0 : switch (argcount) {
4433 : case 0: {
4434 0 : auto result(StrongOrRawPtr<mozilla::dom::TouchList>(self->CreateTouchList()));
4435 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4436 : static_assert(!IsPointer<decltype(result)>::value,
4437 : "NewObject implies that we need to keep the object alive with a strong reference.");
4438 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
4439 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
4440 0 : return false;
4441 : }
4442 0 : return true;
4443 : break;
4444 : }
4445 : case 1: {
4446 0 : if (args[0].isObject()) {
4447 : do {
4448 0 : NonNull<mozilla::dom::Touch> arg0;
4449 : {
4450 0 : nsresult rv = UnwrapObject<prototypes::id::Touch, mozilla::dom::Touch>(args[0], arg0);
4451 0 : if (NS_FAILED(rv)) {
4452 0 : break;
4453 : }
4454 : }
4455 0 : binding_detail::AutoSequence<OwningNonNull<mozilla::dom::Touch>> arg1;
4456 0 : if (args.length() > 1) {
4457 0 : if (!arg1.SetCapacity(args.length() - 1, mozilla::fallible)) {
4458 0 : JS_ReportOutOfMemory(cx);
4459 0 : return false;
4460 : }
4461 0 : for (uint32_t variadicArg = 1; variadicArg < args.length(); ++variadicArg) {
4462 0 : OwningNonNull<mozilla::dom::Touch>& slot = *arg1.AppendElement(mozilla::fallible);
4463 0 : if (args[variadicArg].isObject()) {
4464 : static_assert(IsRefcounted<mozilla::dom::Touch>::value, "We can only store refcounted classes.");{
4465 0 : nsresult rv = UnwrapObject<prototypes::id::Touch, mozilla::dom::Touch>(args[variadicArg], slot);
4466 0 : if (NS_FAILED(rv)) {
4467 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 2 of Document.createTouchList", "Touch");
4468 0 : return false;
4469 : }
4470 : }
4471 : } else {
4472 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 2 of Document.createTouchList");
4473 0 : return false;
4474 : }
4475 : }
4476 : }
4477 0 : auto result(StrongOrRawPtr<mozilla::dom::TouchList>(self->CreateTouchList(NonNullHelper(arg0), NonNullHelper(Constify(arg1)))));
4478 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4479 : static_assert(!IsPointer<decltype(result)>::value,
4480 : "NewObject implies that we need to keep the object alive with a strong reference.");
4481 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
4482 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
4483 0 : return false;
4484 : }
4485 0 : return true;
4486 : } while (0);
4487 : do {
4488 0 : binding_detail::AutoSequence<OwningNonNull<mozilla::dom::Touch>> arg0;
4489 0 : JS::ForOfIterator iter(cx);
4490 0 : if (!iter.init(args[0], JS::ForOfIterator::AllowNonIterable)) {
4491 0 : return false;
4492 : }
4493 0 : if (!iter.valueIsIterable()) {
4494 0 : break;
4495 : }
4496 0 : binding_detail::AutoSequence<OwningNonNull<mozilla::dom::Touch>> &arr = arg0;
4497 0 : JS::Rooted<JS::Value> temp(cx);
4498 : while (true) {
4499 : bool done;
4500 0 : if (!iter.next(&temp, &done)) {
4501 0 : return false;
4502 : }
4503 0 : if (done) {
4504 0 : break;
4505 : }
4506 0 : OwningNonNull<mozilla::dom::Touch>* slotPtr = arr.AppendElement(mozilla::fallible);
4507 0 : if (!slotPtr) {
4508 0 : JS_ReportOutOfMemory(cx);
4509 0 : return false;
4510 : }
4511 0 : OwningNonNull<mozilla::dom::Touch>& slot = *slotPtr;
4512 0 : if (temp.isObject()) {
4513 : static_assert(IsRefcounted<mozilla::dom::Touch>::value, "We can only store refcounted classes.");{
4514 0 : nsresult rv = UnwrapObject<prototypes::id::Touch, mozilla::dom::Touch>(&temp, slot);
4515 0 : if (NS_FAILED(rv)) {
4516 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Element of argument 1 of Document.createTouchList", "Touch");
4517 0 : return false;
4518 : }
4519 : }
4520 : } else {
4521 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Element of argument 1 of Document.createTouchList");
4522 0 : return false;
4523 : }
4524 0 : }
4525 0 : auto result(StrongOrRawPtr<mozilla::dom::TouchList>(self->CreateTouchList(Constify(arg0))));
4526 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4527 : static_assert(!IsPointer<decltype(result)>::value,
4528 : "NewObject implies that we need to keep the object alive with a strong reference.");
4529 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
4530 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
4531 0 : return false;
4532 : }
4533 0 : return true;
4534 : } while (0);
4535 : }
4536 0 : return ThrowErrorMessage(cx, MSG_OVERLOAD_RESOLUTION_FAILED, "1", "1", "Document.createTouchList");
4537 : break;
4538 : }
4539 : case 2: {
4540 0 : NonNull<mozilla::dom::Touch> arg0;
4541 0 : if (args[0].isObject()) {
4542 : {
4543 0 : nsresult rv = UnwrapObject<prototypes::id::Touch, mozilla::dom::Touch>(args[0], arg0);
4544 0 : if (NS_FAILED(rv)) {
4545 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of Document.createTouchList", "Touch");
4546 0 : return false;
4547 : }
4548 : }
4549 : } else {
4550 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of Document.createTouchList");
4551 0 : return false;
4552 : }
4553 0 : binding_detail::AutoSequence<OwningNonNull<mozilla::dom::Touch>> arg1;
4554 0 : if (args.length() > 1) {
4555 0 : if (!arg1.SetCapacity(args.length() - 1, mozilla::fallible)) {
4556 0 : JS_ReportOutOfMemory(cx);
4557 0 : return false;
4558 : }
4559 0 : for (uint32_t variadicArg = 1; variadicArg < args.length(); ++variadicArg) {
4560 0 : OwningNonNull<mozilla::dom::Touch>& slot = *arg1.AppendElement(mozilla::fallible);
4561 0 : if (args[variadicArg].isObject()) {
4562 : static_assert(IsRefcounted<mozilla::dom::Touch>::value, "We can only store refcounted classes.");{
4563 0 : nsresult rv = UnwrapObject<prototypes::id::Touch, mozilla::dom::Touch>(args[variadicArg], slot);
4564 0 : if (NS_FAILED(rv)) {
4565 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 2 of Document.createTouchList", "Touch");
4566 0 : return false;
4567 : }
4568 : }
4569 : } else {
4570 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 2 of Document.createTouchList");
4571 0 : return false;
4572 : }
4573 : }
4574 : }
4575 0 : auto result(StrongOrRawPtr<mozilla::dom::TouchList>(self->CreateTouchList(NonNullHelper(arg0), NonNullHelper(Constify(arg1)))));
4576 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4577 : static_assert(!IsPointer<decltype(result)>::value,
4578 : "NewObject implies that we need to keep the object alive with a strong reference.");
4579 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
4580 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
4581 0 : return false;
4582 : }
4583 0 : return true;
4584 : break;
4585 : }
4586 : default: {
4587 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.createTouchList");
4588 : break;
4589 : }
4590 : }
4591 : MOZ_CRASH("We have an always-returning default case");
4592 : return false;
4593 : }
4594 :
4595 : static const JSJitInfo createTouchList_methodinfo = {
4596 : { (JSJitGetterOp)createTouchList },
4597 : { prototypes::id::Document },
4598 : { PrototypeTraits<prototypes::id::Document>::Depth },
4599 : JSJitInfo::Method,
4600 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4601 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
4602 : false, /* isInfallible. False in setters. */
4603 : false, /* isMovable. Not relevant for setters. */
4604 : false, /* isEliminatable. Not relevant for setters. */
4605 : false, /* isAlwaysInSlot. Only relevant for getters. */
4606 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4607 : false, /* isTypedMethod. Only relevant for methods. */
4608 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4609 : };
4610 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4611 : static_assert(0 < 1, "There is no slot for us");
4612 :
4613 : static bool
4614 0 : get_styleSheetChangeEventsEnabled(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
4615 : {
4616 0 : bool result(self->StyleSheetChangeEventsEnabled());
4617 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4618 0 : args.rval().setBoolean(result);
4619 0 : return true;
4620 : }
4621 :
4622 : static bool
4623 0 : set_styleSheetChangeEventsEnabled(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
4624 : {
4625 : bool arg0;
4626 0 : if (!ValueToPrimitive<bool, eDefault>(cx, args[0], &arg0)) {
4627 0 : return false;
4628 : }
4629 0 : self->SetStyleSheetChangeEventsEnabled(arg0);
4630 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4631 :
4632 0 : return true;
4633 : }
4634 :
4635 : static const JSJitInfo styleSheetChangeEventsEnabled_getterinfo = {
4636 : { (JSJitGetterOp)get_styleSheetChangeEventsEnabled },
4637 : { prototypes::id::Document },
4638 : { PrototypeTraits<prototypes::id::Document>::Depth },
4639 : JSJitInfo::Getter,
4640 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4641 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
4642 : true, /* isInfallible. False in setters. */
4643 : false, /* isMovable. Not relevant for setters. */
4644 : false, /* isEliminatable. Not relevant for setters. */
4645 : false, /* isAlwaysInSlot. Only relevant for getters. */
4646 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4647 : false, /* isTypedMethod. Only relevant for methods. */
4648 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4649 : };
4650 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4651 : static_assert(0 < 1, "There is no slot for us");
4652 : static const JSJitInfo styleSheetChangeEventsEnabled_setterinfo = {
4653 : { (JSJitGetterOp)set_styleSheetChangeEventsEnabled },
4654 : { prototypes::id::Document },
4655 : { PrototypeTraits<prototypes::id::Document>::Depth },
4656 : JSJitInfo::Setter,
4657 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4658 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4659 : false, /* isInfallible. False in setters. */
4660 : false, /* isMovable. Not relevant for setters. */
4661 : false, /* isEliminatable. Not relevant for setters. */
4662 : false, /* isAlwaysInSlot. Only relevant for getters. */
4663 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4664 : false, /* isTypedMethod. Only relevant for methods. */
4665 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4666 : };
4667 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4668 : static_assert(0 < 1, "There is no slot for us");
4669 :
4670 : static bool
4671 0 : obsoleteSheet(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
4672 : {
4673 0 : unsigned argcount = std::min(args.length(), 1u);
4674 0 : switch (argcount) {
4675 : case 1: {
4676 0 : if (args[0].isObject()) {
4677 : do {
4678 : nsIURI* arg0;
4679 0 : RefPtr<nsIURI> arg0_holder;
4680 0 : JS::Rooted<JSObject*> source(cx, &args[0].toObject());
4681 0 : if (NS_FAILED(UnwrapArg<nsIURI>(cx, source, getter_AddRefs(arg0_holder)))) {
4682 0 : break;
4683 : }
4684 0 : MOZ_ASSERT(arg0_holder);
4685 0 : arg0 = arg0_holder;
4686 0 : binding_detail::FastErrorResult rv;
4687 0 : self->ObsoleteSheet(NonNullHelper(arg0), rv);
4688 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
4689 0 : return false;
4690 : }
4691 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4692 0 : args.rval().setUndefined();
4693 0 : return true;
4694 : } while (0);
4695 : }
4696 0 : binding_detail::FakeString arg0;
4697 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
4698 0 : return false;
4699 : }
4700 0 : binding_detail::FastErrorResult rv;
4701 0 : self->ObsoleteSheet(NonNullHelper(Constify(arg0)), rv);
4702 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
4703 0 : return false;
4704 : }
4705 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4706 0 : args.rval().setUndefined();
4707 0 : return true;
4708 : break;
4709 : }
4710 : default: {
4711 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.obsoleteSheet");
4712 : break;
4713 : }
4714 : }
4715 : MOZ_CRASH("We have an always-returning default case");
4716 : return false;
4717 : }
4718 :
4719 : static const JSJitInfo obsoleteSheet_methodinfo = {
4720 : { (JSJitGetterOp)obsoleteSheet },
4721 : { prototypes::id::Document },
4722 : { PrototypeTraits<prototypes::id::Document>::Depth },
4723 : JSJitInfo::Method,
4724 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4725 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
4726 : false, /* isInfallible. False in setters. */
4727 : false, /* isMovable. Not relevant for setters. */
4728 : false, /* isEliminatable. Not relevant for setters. */
4729 : false, /* isAlwaysInSlot. Only relevant for getters. */
4730 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4731 : false, /* isTypedMethod. Only relevant for methods. */
4732 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4733 : };
4734 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4735 : static_assert(0 < 1, "There is no slot for us");
4736 :
4737 : static bool
4738 0 : get_docShell(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
4739 : {
4740 0 : auto result(StrongOrRawPtr<nsIDocShell>(self->GetDocShell()));
4741 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4742 0 : if (!result) {
4743 0 : args.rval().setNull();
4744 0 : return true;
4745 : }
4746 0 : if (!WrapObject(cx, result, &NS_GET_IID(nsIDocShell), args.rval())) {
4747 0 : return false;
4748 : }
4749 0 : return true;
4750 : }
4751 :
4752 : static const JSJitInfo docShell_getterinfo = {
4753 : { (JSJitGetterOp)get_docShell },
4754 : { prototypes::id::Document },
4755 : { PrototypeTraits<prototypes::id::Document>::Depth },
4756 : JSJitInfo::Getter,
4757 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4758 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4759 : false, /* isInfallible. False in setters. */
4760 : false, /* isMovable. Not relevant for setters. */
4761 : false, /* isEliminatable. Not relevant for setters. */
4762 : false, /* isAlwaysInSlot. Only relevant for getters. */
4763 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4764 : false, /* isTypedMethod. Only relevant for methods. */
4765 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4766 : };
4767 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4768 : static_assert(0 < 1, "There is no slot for us");
4769 :
4770 : static bool
4771 0 : get_contentLanguage(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
4772 : {
4773 0 : DOMString result;
4774 0 : self->GetContentLanguage(result);
4775 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4776 0 : if (!xpc::NonVoidStringToJsval(cx, result, args.rval())) {
4777 0 : return false;
4778 : }
4779 0 : return true;
4780 : }
4781 :
4782 : static const JSJitInfo contentLanguage_getterinfo = {
4783 : { (JSJitGetterOp)get_contentLanguage },
4784 : { prototypes::id::Document },
4785 : { PrototypeTraits<prototypes::id::Document>::Depth },
4786 : JSJitInfo::Getter,
4787 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4788 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
4789 : false, /* isInfallible. False in setters. */
4790 : false, /* isMovable. Not relevant for setters. */
4791 : false, /* isEliminatable. Not relevant for setters. */
4792 : false, /* isAlwaysInSlot. Only relevant for getters. */
4793 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4794 : false, /* isTypedMethod. Only relevant for methods. */
4795 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4796 : };
4797 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4798 : static_assert(0 < 1, "There is no slot for us");
4799 :
4800 : static bool
4801 0 : get_documentLoadGroup(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
4802 : {
4803 0 : auto result(StrongOrRawPtr<nsILoadGroup>(self->GetDocumentLoadGroup()));
4804 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4805 0 : if (!result) {
4806 0 : args.rval().setNull();
4807 0 : return true;
4808 : }
4809 0 : if (!WrapObject(cx, result, &NS_GET_IID(nsILoadGroup), args.rval())) {
4810 0 : return false;
4811 : }
4812 0 : return true;
4813 : }
4814 :
4815 : static const JSJitInfo documentLoadGroup_getterinfo = {
4816 : { (JSJitGetterOp)get_documentLoadGroup },
4817 : { prototypes::id::Document },
4818 : { PrototypeTraits<prototypes::id::Document>::Depth },
4819 : JSJitInfo::Getter,
4820 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4821 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4822 : false, /* isInfallible. False in setters. */
4823 : false, /* isMovable. Not relevant for setters. */
4824 : false, /* isEliminatable. Not relevant for setters. */
4825 : false, /* isAlwaysInSlot. Only relevant for getters. */
4826 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4827 : false, /* isTypedMethod. Only relevant for methods. */
4828 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4829 : };
4830 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4831 : static_assert(0 < 1, "There is no slot for us");
4832 :
4833 : static bool
4834 0 : blockParsing(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
4835 : {
4836 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
4837 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.blockParsing");
4838 : }
4839 0 : OwningNonNull<Promise> arg0;
4840 : { // Scope for our GlobalObject, FastErrorResult, JSAutoCompartment,
4841 : // etc.
4842 :
4843 0 : JS::Rooted<JSObject*> globalObj(cx, JS::CurrentGlobalOrNull(cx));
4844 0 : JSAutoCompartment ac(cx, globalObj);
4845 0 : GlobalObject promiseGlobal(cx, globalObj);
4846 0 : if (promiseGlobal.Failed()) {
4847 0 : return false;
4848 : }
4849 :
4850 0 : JS::Rooted<JS::Value> valueToResolve(cx, args[0]);
4851 0 : if (!JS_WrapValue(cx, &valueToResolve)) {
4852 0 : return false;
4853 : }
4854 0 : binding_detail::FastErrorResult promiseRv;
4855 : nsCOMPtr<nsIGlobalObject> global =
4856 0 : do_QueryInterface(promiseGlobal.GetAsSupports());
4857 0 : if (!global) {
4858 0 : promiseRv.ThrowWithCustomCleanup(NS_ERROR_UNEXPECTED);
4859 0 : MOZ_ALWAYS_TRUE(promiseRv.MaybeSetPendingException(cx));
4860 0 : return false;
4861 : }
4862 0 : arg0 = Promise::Resolve(global, cx, valueToResolve,
4863 0 : promiseRv);
4864 0 : if (promiseRv.MaybeSetPendingException(cx)) {
4865 0 : return false;
4866 : }
4867 : }
4868 0 : binding_detail::FastErrorResult rv;
4869 0 : auto result(StrongOrRawPtr<Promise>(self->BlockParsing(NonNullHelper(arg0), rv)));
4870 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
4871 0 : return false;
4872 : }
4873 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4874 0 : if (!ToJSValue(cx, result, args.rval())) {
4875 0 : return false;
4876 : }
4877 0 : return true;
4878 : }
4879 :
4880 : static bool
4881 0 : blockParsing_promiseWrapper(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
4882 : {
4883 : // Make sure to save the callee before someone maybe messes
4884 : // with rval().
4885 0 : JS::Rooted<JSObject*> callee(cx, &args.callee());
4886 0 : bool ok = blockParsing(cx, obj, self, args);
4887 0 : if (ok) {
4888 0 : return true;
4889 : }
4890 0 : return ConvertExceptionToPromise(cx, xpc::XrayAwareCalleeGlobal(callee),
4891 0 : args.rval());
4892 : }
4893 :
4894 : static const JSJitInfo blockParsing_methodinfo = {
4895 : { (JSJitGetterOp)blockParsing_promiseWrapper },
4896 : { prototypes::id::Document },
4897 : { PrototypeTraits<prototypes::id::Document>::Depth },
4898 : JSJitInfo::Method,
4899 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4900 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
4901 : false, /* isInfallible. False in setters. */
4902 : false, /* isMovable. Not relevant for setters. */
4903 : false, /* isEliminatable. Not relevant for setters. */
4904 : false, /* isAlwaysInSlot. Only relevant for getters. */
4905 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4906 : false, /* isTypedMethod. Only relevant for methods. */
4907 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4908 : };
4909 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4910 : static_assert(0 < 1, "There is no slot for us");
4911 :
4912 : static bool
4913 0 : get_mozDocumentURIIfNotForErrorPages(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
4914 : {
4915 0 : auto result(StrongOrRawPtr<nsIURI>(self->GetMozDocumentURIIfNotForErrorPages()));
4916 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4917 0 : if (!result) {
4918 0 : args.rval().setNull();
4919 0 : return true;
4920 : }
4921 0 : if (!WrapObject(cx, result, &NS_GET_IID(nsIURI), args.rval())) {
4922 0 : return false;
4923 : }
4924 0 : return true;
4925 : }
4926 :
4927 : static const JSJitInfo mozDocumentURIIfNotForErrorPages_getterinfo = {
4928 : { (JSJitGetterOp)get_mozDocumentURIIfNotForErrorPages },
4929 : { prototypes::id::Document },
4930 : { PrototypeTraits<prototypes::id::Document>::Depth },
4931 : JSJitInfo::Getter,
4932 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4933 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4934 : false, /* isInfallible. False in setters. */
4935 : false, /* isMovable. Not relevant for setters. */
4936 : false, /* isEliminatable. Not relevant for setters. */
4937 : false, /* isAlwaysInSlot. Only relevant for getters. */
4938 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4939 : false, /* isTypedMethod. Only relevant for methods. */
4940 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4941 : };
4942 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4943 : static_assert(0 < 1, "There is no slot for us");
4944 :
4945 : static bool
4946 0 : get_isSrcdocDocument(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
4947 : {
4948 0 : bool result(self->IsSrcdocDocument());
4949 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4950 0 : args.rval().setBoolean(result);
4951 0 : return true;
4952 : }
4953 :
4954 : static const JSJitInfo isSrcdocDocument_getterinfo = {
4955 : { (JSJitGetterOp)get_isSrcdocDocument },
4956 : { prototypes::id::Document },
4957 : { PrototypeTraits<prototypes::id::Document>::Depth },
4958 : JSJitInfo::Getter,
4959 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4960 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
4961 : true, /* isInfallible. False in setters. */
4962 : false, /* isMovable. Not relevant for setters. */
4963 : false, /* isEliminatable. Not relevant for setters. */
4964 : false, /* isAlwaysInSlot. Only relevant for getters. */
4965 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4966 : false, /* isTypedMethod. Only relevant for methods. */
4967 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4968 : };
4969 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
4970 : static_assert(0 < 1, "There is no slot for us");
4971 :
4972 : static bool
4973 0 : get_sandboxFlagsAsString(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
4974 : {
4975 0 : DOMString result;
4976 0 : self->GetSandboxFlagsAsString(result);
4977 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
4978 0 : if (!xpc::StringToJsval(cx, result, args.rval())) {
4979 0 : return false;
4980 : }
4981 0 : return true;
4982 : }
4983 :
4984 : static const JSJitInfo sandboxFlagsAsString_getterinfo = {
4985 : { (JSJitGetterOp)get_sandboxFlagsAsString },
4986 : { prototypes::id::Document },
4987 : { PrototypeTraits<prototypes::id::Document>::Depth },
4988 : JSJitInfo::Getter,
4989 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
4990 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
4991 : false, /* isInfallible. False in setters. */
4992 : false, /* isMovable. Not relevant for setters. */
4993 : false, /* isEliminatable. Not relevant for setters. */
4994 : false, /* isAlwaysInSlot. Only relevant for getters. */
4995 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
4996 : false, /* isTypedMethod. Only relevant for methods. */
4997 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
4998 : };
4999 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5000 : static_assert(0 < 1, "There is no slot for us");
5001 :
5002 : static bool
5003 0 : insertAnonymousContent(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
5004 : {
5005 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
5006 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.insertAnonymousContent");
5007 : }
5008 0 : NonNull<mozilla::dom::Element> arg0;
5009 0 : if (args[0].isObject()) {
5010 : {
5011 0 : nsresult rv = UnwrapObject<prototypes::id::Element, mozilla::dom::Element>(args[0], arg0);
5012 0 : if (NS_FAILED(rv)) {
5013 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of Document.insertAnonymousContent", "Element");
5014 0 : return false;
5015 : }
5016 : }
5017 : } else {
5018 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of Document.insertAnonymousContent");
5019 0 : return false;
5020 : }
5021 0 : binding_detail::FastErrorResult rv;
5022 0 : auto result(StrongOrRawPtr<mozilla::dom::AnonymousContent>(self->InsertAnonymousContent(NonNullHelper(arg0), rv)));
5023 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
5024 0 : return false;
5025 : }
5026 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5027 : static_assert(!IsPointer<decltype(result)>::value,
5028 : "NewObject implies that we need to keep the object alive with a strong reference.");
5029 0 : if (!WrapNewBindingNonWrapperCachedObject(cx, obj, result, args.rval())) {
5030 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
5031 0 : return false;
5032 : }
5033 0 : return true;
5034 : }
5035 :
5036 : static const JSJitInfo insertAnonymousContent_methodinfo = {
5037 : { (JSJitGetterOp)insertAnonymousContent },
5038 : { prototypes::id::Document },
5039 : { PrototypeTraits<prototypes::id::Document>::Depth },
5040 : JSJitInfo::Method,
5041 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5042 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
5043 : false, /* isInfallible. False in setters. */
5044 : false, /* isMovable. Not relevant for setters. */
5045 : false, /* isEliminatable. Not relevant for setters. */
5046 : false, /* isAlwaysInSlot. Only relevant for getters. */
5047 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5048 : false, /* isTypedMethod. Only relevant for methods. */
5049 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5050 : };
5051 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5052 : static_assert(0 < 1, "There is no slot for us");
5053 :
5054 : static bool
5055 0 : removeAnonymousContent(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
5056 : {
5057 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
5058 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.removeAnonymousContent");
5059 : }
5060 0 : NonNull<mozilla::dom::AnonymousContent> arg0;
5061 0 : if (args[0].isObject()) {
5062 : {
5063 0 : nsresult rv = UnwrapObject<prototypes::id::AnonymousContent, mozilla::dom::AnonymousContent>(args[0], arg0);
5064 0 : if (NS_FAILED(rv)) {
5065 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of Document.removeAnonymousContent", "AnonymousContent");
5066 0 : return false;
5067 : }
5068 : }
5069 : } else {
5070 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of Document.removeAnonymousContent");
5071 0 : return false;
5072 : }
5073 0 : binding_detail::FastErrorResult rv;
5074 0 : self->RemoveAnonymousContent(NonNullHelper(arg0), rv);
5075 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
5076 0 : return false;
5077 : }
5078 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5079 0 : args.rval().setUndefined();
5080 0 : return true;
5081 : }
5082 :
5083 : static const JSJitInfo removeAnonymousContent_methodinfo = {
5084 : { (JSJitGetterOp)removeAnonymousContent },
5085 : { prototypes::id::Document },
5086 : { PrototypeTraits<prototypes::id::Document>::Depth },
5087 : JSJitInfo::Method,
5088 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5089 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5090 : false, /* isInfallible. False in setters. */
5091 : false, /* isMovable. Not relevant for setters. */
5092 : false, /* isEliminatable. Not relevant for setters. */
5093 : false, /* isAlwaysInSlot. Only relevant for getters. */
5094 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5095 : false, /* isTypedMethod. Only relevant for methods. */
5096 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5097 : };
5098 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5099 : static_assert(0 < 1, "There is no slot for us");
5100 :
5101 : static bool
5102 0 : get_userHasInteracted(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
5103 : {
5104 0 : bool result(self->UserHasInteracted());
5105 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5106 0 : args.rval().setBoolean(result);
5107 0 : return true;
5108 : }
5109 :
5110 : static const JSJitInfo userHasInteracted_getterinfo = {
5111 : { (JSJitGetterOp)get_userHasInteracted },
5112 : { prototypes::id::Document },
5113 : { PrototypeTraits<prototypes::id::Document>::Depth },
5114 : JSJitInfo::Getter,
5115 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5116 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
5117 : true, /* isInfallible. False in setters. */
5118 : false, /* isMovable. Not relevant for setters. */
5119 : false, /* isEliminatable. Not relevant for setters. */
5120 : false, /* isAlwaysInSlot. Only relevant for getters. */
5121 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5122 : false, /* isTypedMethod. Only relevant for methods. */
5123 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5124 : };
5125 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5126 : static_assert(0 < 1, "There is no slot for us");
5127 :
5128 : static bool
5129 0 : get_hasScriptsBlockedBySandbox(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
5130 : {
5131 0 : bool result(self->HasScriptsBlockedBySandbox());
5132 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5133 0 : args.rval().setBoolean(result);
5134 0 : return true;
5135 : }
5136 :
5137 : static const JSJitInfo hasScriptsBlockedBySandbox_getterinfo = {
5138 : { (JSJitGetterOp)get_hasScriptsBlockedBySandbox },
5139 : { prototypes::id::Document },
5140 : { PrototypeTraits<prototypes::id::Document>::Depth },
5141 : JSJitInfo::Getter,
5142 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5143 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
5144 : true, /* isInfallible. False in setters. */
5145 : false, /* isMovable. Not relevant for setters. */
5146 : false, /* isEliminatable. Not relevant for setters. */
5147 : false, /* isAlwaysInSlot. Only relevant for getters. */
5148 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5149 : false, /* isTypedMethod. Only relevant for methods. */
5150 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5151 : };
5152 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5153 : static_assert(0 < 1, "There is no slot for us");
5154 :
5155 : static bool
5156 0 : get_inlineScriptAllowedByCSP(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
5157 : {
5158 0 : bool result(self->InlineScriptAllowedByCSP());
5159 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5160 0 : args.rval().setBoolean(result);
5161 0 : return true;
5162 : }
5163 :
5164 : static const JSJitInfo inlineScriptAllowedByCSP_getterinfo = {
5165 : { (JSJitGetterOp)get_inlineScriptAllowedByCSP },
5166 : { prototypes::id::Document },
5167 : { PrototypeTraits<prototypes::id::Document>::Depth },
5168 : JSJitInfo::Getter,
5169 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5170 : JSVAL_TYPE_BOOLEAN, /* returnType. Not relevant for setters. */
5171 : true, /* isInfallible. False in setters. */
5172 : false, /* isMovable. Not relevant for setters. */
5173 : false, /* isEliminatable. Not relevant for setters. */
5174 : false, /* isAlwaysInSlot. Only relevant for getters. */
5175 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5176 : false, /* isTypedMethod. Only relevant for methods. */
5177 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5178 : };
5179 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5180 : static_assert(0 < 1, "There is no slot for us");
5181 :
5182 : static bool
5183 0 : get_documentFlashClassification(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
5184 : {
5185 0 : FlashClassification result(self->DocumentFlashClassification());
5186 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5187 0 : if (!ToJSValue(cx, result, args.rval())) {
5188 0 : return false;
5189 : }
5190 0 : return true;
5191 : }
5192 :
5193 : static const JSJitInfo documentFlashClassification_getterinfo = {
5194 : { (JSJitGetterOp)get_documentFlashClassification },
5195 : { prototypes::id::Document },
5196 : { PrototypeTraits<prototypes::id::Document>::Depth },
5197 : JSJitInfo::Getter,
5198 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5199 : JSVAL_TYPE_STRING, /* returnType. Not relevant for setters. */
5200 : false, /* isInfallible. False in setters. */
5201 : false, /* isMovable. Not relevant for setters. */
5202 : false, /* isEliminatable. Not relevant for setters. */
5203 : false, /* isAlwaysInSlot. Only relevant for getters. */
5204 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5205 : false, /* isTypedMethod. Only relevant for methods. */
5206 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5207 : };
5208 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5209 : static_assert(0 < 1, "There is no slot for us");
5210 :
5211 : static bool
5212 0 : get_oncopy(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
5213 : {
5214 0 : RefPtr<EventHandlerNonNull> result(self->GetOncopy());
5215 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5216 0 : if (result) {
5217 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5218 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5219 0 : return false;
5220 : }
5221 0 : return true;
5222 : } else {
5223 0 : args.rval().setNull();
5224 0 : return true;
5225 : }
5226 : }
5227 :
5228 : static bool
5229 0 : set_oncopy(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
5230 : {
5231 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5232 0 : if (args[0].isObject()) {
5233 : { // scope for tempRoot
5234 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5235 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5236 : }
5237 : } else {
5238 0 : arg0 = nullptr;
5239 : }
5240 0 : self->SetOncopy(Constify(arg0));
5241 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5242 :
5243 0 : return true;
5244 : }
5245 :
5246 : static const JSJitInfo oncopy_getterinfo = {
5247 : { (JSJitGetterOp)get_oncopy },
5248 : { prototypes::id::Document },
5249 : { PrototypeTraits<prototypes::id::Document>::Depth },
5250 : JSJitInfo::Getter,
5251 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5252 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5253 : false, /* isInfallible. False in setters. */
5254 : false, /* isMovable. Not relevant for setters. */
5255 : false, /* isEliminatable. Not relevant for setters. */
5256 : false, /* isAlwaysInSlot. Only relevant for getters. */
5257 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5258 : false, /* isTypedMethod. Only relevant for methods. */
5259 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5260 : };
5261 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5262 : static_assert(0 < 1, "There is no slot for us");
5263 : static const JSJitInfo oncopy_setterinfo = {
5264 : { (JSJitGetterOp)set_oncopy },
5265 : { prototypes::id::Document },
5266 : { PrototypeTraits<prototypes::id::Document>::Depth },
5267 : JSJitInfo::Setter,
5268 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5269 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5270 : false, /* isInfallible. False in setters. */
5271 : false, /* isMovable. Not relevant for setters. */
5272 : false, /* isEliminatable. Not relevant for setters. */
5273 : false, /* isAlwaysInSlot. Only relevant for getters. */
5274 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5275 : false, /* isTypedMethod. Only relevant for methods. */
5276 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5277 : };
5278 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5279 : static_assert(0 < 1, "There is no slot for us");
5280 :
5281 : static bool
5282 0 : get_oncut(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
5283 : {
5284 0 : RefPtr<EventHandlerNonNull> result(self->GetOncut());
5285 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5286 0 : if (result) {
5287 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5288 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5289 0 : return false;
5290 : }
5291 0 : return true;
5292 : } else {
5293 0 : args.rval().setNull();
5294 0 : return true;
5295 : }
5296 : }
5297 :
5298 : static bool
5299 0 : set_oncut(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
5300 : {
5301 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5302 0 : if (args[0].isObject()) {
5303 : { // scope for tempRoot
5304 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5305 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5306 : }
5307 : } else {
5308 0 : arg0 = nullptr;
5309 : }
5310 0 : self->SetOncut(Constify(arg0));
5311 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5312 :
5313 0 : return true;
5314 : }
5315 :
5316 : static const JSJitInfo oncut_getterinfo = {
5317 : { (JSJitGetterOp)get_oncut },
5318 : { prototypes::id::Document },
5319 : { PrototypeTraits<prototypes::id::Document>::Depth },
5320 : JSJitInfo::Getter,
5321 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5322 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5323 : false, /* isInfallible. False in setters. */
5324 : false, /* isMovable. Not relevant for setters. */
5325 : false, /* isEliminatable. Not relevant for setters. */
5326 : false, /* isAlwaysInSlot. Only relevant for getters. */
5327 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5328 : false, /* isTypedMethod. Only relevant for methods. */
5329 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5330 : };
5331 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5332 : static_assert(0 < 1, "There is no slot for us");
5333 : static const JSJitInfo oncut_setterinfo = {
5334 : { (JSJitGetterOp)set_oncut },
5335 : { prototypes::id::Document },
5336 : { PrototypeTraits<prototypes::id::Document>::Depth },
5337 : JSJitInfo::Setter,
5338 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5339 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5340 : false, /* isInfallible. False in setters. */
5341 : false, /* isMovable. Not relevant for setters. */
5342 : false, /* isEliminatable. Not relevant for setters. */
5343 : false, /* isAlwaysInSlot. Only relevant for getters. */
5344 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5345 : false, /* isTypedMethod. Only relevant for methods. */
5346 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5347 : };
5348 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5349 : static_assert(0 < 1, "There is no slot for us");
5350 :
5351 : static bool
5352 0 : get_onpaste(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
5353 : {
5354 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpaste());
5355 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5356 0 : if (result) {
5357 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5358 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5359 0 : return false;
5360 : }
5361 0 : return true;
5362 : } else {
5363 0 : args.rval().setNull();
5364 0 : return true;
5365 : }
5366 : }
5367 :
5368 : static bool
5369 0 : set_onpaste(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
5370 : {
5371 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5372 0 : if (args[0].isObject()) {
5373 : { // scope for tempRoot
5374 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5375 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5376 : }
5377 : } else {
5378 0 : arg0 = nullptr;
5379 : }
5380 0 : self->SetOnpaste(Constify(arg0));
5381 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5382 :
5383 0 : return true;
5384 : }
5385 :
5386 : static const JSJitInfo onpaste_getterinfo = {
5387 : { (JSJitGetterOp)get_onpaste },
5388 : { prototypes::id::Document },
5389 : { PrototypeTraits<prototypes::id::Document>::Depth },
5390 : JSJitInfo::Getter,
5391 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5392 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5393 : false, /* isInfallible. False in setters. */
5394 : false, /* isMovable. Not relevant for setters. */
5395 : false, /* isEliminatable. Not relevant for setters. */
5396 : false, /* isAlwaysInSlot. Only relevant for getters. */
5397 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5398 : false, /* isTypedMethod. Only relevant for methods. */
5399 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5400 : };
5401 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5402 : static_assert(0 < 1, "There is no slot for us");
5403 : static const JSJitInfo onpaste_setterinfo = {
5404 : { (JSJitGetterOp)set_onpaste },
5405 : { prototypes::id::Document },
5406 : { PrototypeTraits<prototypes::id::Document>::Depth },
5407 : JSJitInfo::Setter,
5408 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5409 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5410 : false, /* isInfallible. False in setters. */
5411 : false, /* isMovable. Not relevant for setters. */
5412 : false, /* isEliminatable. Not relevant for setters. */
5413 : false, /* isAlwaysInSlot. Only relevant for getters. */
5414 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5415 : false, /* isTypedMethod. Only relevant for methods. */
5416 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5417 : };
5418 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5419 : static_assert(0 < 1, "There is no slot for us");
5420 :
5421 : static bool
5422 0 : get_fonts(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
5423 : {
5424 0 : auto result(StrongOrRawPtr<mozilla::dom::FontFaceSet>(self->Fonts()));
5425 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5426 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
5427 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
5428 0 : return false;
5429 : }
5430 0 : return true;
5431 : }
5432 :
5433 : static const JSJitInfo fonts_getterinfo = {
5434 : { (JSJitGetterOp)get_fonts },
5435 : { prototypes::id::Document },
5436 : { PrototypeTraits<prototypes::id::Document>::Depth },
5437 : JSJitInfo::Getter,
5438 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5439 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
5440 : false, /* isInfallible. False in setters. */
5441 : false, /* isMovable. Not relevant for setters. */
5442 : false, /* isEliminatable. Not relevant for setters. */
5443 : false, /* isAlwaysInSlot. Only relevant for getters. */
5444 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5445 : false, /* isTypedMethod. Only relevant for methods. */
5446 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5447 : };
5448 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5449 : static_assert(0 < 1, "There is no slot for us");
5450 :
5451 : static bool
5452 0 : getBoxQuads(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
5453 : {
5454 0 : binding_detail::FastBoxQuadOptions arg0;
5455 0 : if (!arg0.Init(cx, (args.hasDefined(0)) ? args[0] : JS::NullHandleValue, "Argument 1 of Document.getBoxQuads", false)) {
5456 0 : return false;
5457 : }
5458 0 : binding_detail::FastErrorResult rv;
5459 0 : nsTArray<StrongPtrForMember<mozilla::dom::DOMQuad>::Type> result;
5460 0 : self->GetBoxQuads(Constify(arg0), result, nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem, rv);
5461 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
5462 0 : return false;
5463 : }
5464 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5465 :
5466 0 : uint32_t length = result.Length();
5467 0 : JS::Rooted<JSObject*> returnArray(cx, JS_NewArrayObject(cx, length));
5468 0 : if (!returnArray) {
5469 0 : return false;
5470 : }
5471 : // Scope for 'tmp'
5472 : {
5473 0 : JS::Rooted<JS::Value> tmp(cx);
5474 0 : for (uint32_t sequenceIdx0 = 0; sequenceIdx0 < length; ++sequenceIdx0) {
5475 : // Control block to let us common up the JS_DefineElement calls when there
5476 : // are different ways to succeed at wrapping the object.
5477 : do {
5478 0 : if (!GetOrCreateDOMReflector(cx, result[sequenceIdx0], &tmp)) {
5479 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
5480 0 : return false;
5481 : }
5482 0 : break;
5483 : } while (0);
5484 0 : if (!JS_DefineElement(cx, returnArray, sequenceIdx0, tmp,
5485 : JSPROP_ENUMERATE)) {
5486 0 : return false;
5487 : }
5488 : }
5489 : }
5490 0 : args.rval().setObject(*returnArray);
5491 0 : return true;
5492 : }
5493 :
5494 : static const JSJitInfo getBoxQuads_methodinfo = {
5495 : { (JSJitGetterOp)getBoxQuads },
5496 : { prototypes::id::Document },
5497 : { PrototypeTraits<prototypes::id::Document>::Depth },
5498 : JSJitInfo::Method,
5499 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5500 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
5501 : false, /* isInfallible. False in setters. */
5502 : false, /* isMovable. Not relevant for setters. */
5503 : false, /* isEliminatable. Not relevant for setters. */
5504 : false, /* isAlwaysInSlot. Only relevant for getters. */
5505 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5506 : false, /* isTypedMethod. Only relevant for methods. */
5507 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5508 : };
5509 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5510 : static_assert(0 < 1, "There is no slot for us");
5511 :
5512 : static bool
5513 0 : convertQuadFromNode(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
5514 : {
5515 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
5516 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.convertQuadFromNode");
5517 : }
5518 0 : NonNull<mozilla::dom::DOMQuad> arg0;
5519 0 : if (args[0].isObject()) {
5520 : {
5521 0 : nsresult rv = UnwrapObject<prototypes::id::DOMQuad, mozilla::dom::DOMQuad>(args[0], arg0);
5522 0 : if (NS_FAILED(rv)) {
5523 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of Document.convertQuadFromNode", "DOMQuad");
5524 0 : return false;
5525 : }
5526 : }
5527 : } else {
5528 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of Document.convertQuadFromNode");
5529 0 : return false;
5530 : }
5531 0 : TextOrElementOrDocument arg1;
5532 0 : TextOrElementOrDocumentArgument arg1_holder(arg1);
5533 : {
5534 0 : bool done = false, failed = false, tryNext;
5535 0 : if (args[1].isObject()) {
5536 0 : done = (failed = !arg1_holder.TrySetToText(cx, args[1], tryNext, false)) || !tryNext ||
5537 0 : (failed = !arg1_holder.TrySetToElement(cx, args[1], tryNext, false)) || !tryNext ||
5538 0 : (failed = !arg1_holder.TrySetToDocument(cx, args[1], tryNext, false)) || !tryNext;
5539 :
5540 : }
5541 0 : if (failed) {
5542 0 : return false;
5543 : }
5544 0 : if (!done) {
5545 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of Document.convertQuadFromNode", "Text, Element, Document");
5546 0 : return false;
5547 : }
5548 : }
5549 0 : binding_detail::FastConvertCoordinateOptions arg2;
5550 0 : if (!arg2.Init(cx, (args.hasDefined(2)) ? args[2] : JS::NullHandleValue, "Argument 3 of Document.convertQuadFromNode", false)) {
5551 0 : return false;
5552 : }
5553 0 : binding_detail::FastErrorResult rv;
5554 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMQuad>(self->ConvertQuadFromNode(NonNullHelper(arg0), Constify(arg1), Constify(arg2), nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem, rv)));
5555 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
5556 0 : return false;
5557 : }
5558 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5559 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
5560 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
5561 0 : return false;
5562 : }
5563 0 : return true;
5564 : }
5565 :
5566 : static const JSJitInfo convertQuadFromNode_methodinfo = {
5567 : { (JSJitGetterOp)convertQuadFromNode },
5568 : { prototypes::id::Document },
5569 : { PrototypeTraits<prototypes::id::Document>::Depth },
5570 : JSJitInfo::Method,
5571 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5572 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
5573 : false, /* isInfallible. False in setters. */
5574 : false, /* isMovable. Not relevant for setters. */
5575 : false, /* isEliminatable. Not relevant for setters. */
5576 : false, /* isAlwaysInSlot. Only relevant for getters. */
5577 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5578 : false, /* isTypedMethod. Only relevant for methods. */
5579 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5580 : };
5581 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5582 : static_assert(0 < 1, "There is no slot for us");
5583 :
5584 : static bool
5585 0 : convertRectFromNode(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
5586 : {
5587 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
5588 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.convertRectFromNode");
5589 : }
5590 0 : NonNull<mozilla::dom::DOMRectReadOnly> arg0;
5591 0 : if (args[0].isObject()) {
5592 : {
5593 0 : nsresult rv = UnwrapObject<prototypes::id::DOMRectReadOnly, mozilla::dom::DOMRectReadOnly>(args[0], arg0);
5594 0 : if (NS_FAILED(rv)) {
5595 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of Document.convertRectFromNode", "DOMRectReadOnly");
5596 0 : return false;
5597 : }
5598 : }
5599 : } else {
5600 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of Document.convertRectFromNode");
5601 0 : return false;
5602 : }
5603 0 : TextOrElementOrDocument arg1;
5604 0 : TextOrElementOrDocumentArgument arg1_holder(arg1);
5605 : {
5606 0 : bool done = false, failed = false, tryNext;
5607 0 : if (args[1].isObject()) {
5608 0 : done = (failed = !arg1_holder.TrySetToText(cx, args[1], tryNext, false)) || !tryNext ||
5609 0 : (failed = !arg1_holder.TrySetToElement(cx, args[1], tryNext, false)) || !tryNext ||
5610 0 : (failed = !arg1_holder.TrySetToDocument(cx, args[1], tryNext, false)) || !tryNext;
5611 :
5612 : }
5613 0 : if (failed) {
5614 0 : return false;
5615 : }
5616 0 : if (!done) {
5617 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of Document.convertRectFromNode", "Text, Element, Document");
5618 0 : return false;
5619 : }
5620 : }
5621 0 : binding_detail::FastConvertCoordinateOptions arg2;
5622 0 : if (!arg2.Init(cx, (args.hasDefined(2)) ? args[2] : JS::NullHandleValue, "Argument 3 of Document.convertRectFromNode", false)) {
5623 0 : return false;
5624 : }
5625 0 : binding_detail::FastErrorResult rv;
5626 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMQuad>(self->ConvertRectFromNode(NonNullHelper(arg0), Constify(arg1), Constify(arg2), nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem, rv)));
5627 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
5628 0 : return false;
5629 : }
5630 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5631 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
5632 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
5633 0 : return false;
5634 : }
5635 0 : return true;
5636 : }
5637 :
5638 : static const JSJitInfo convertRectFromNode_methodinfo = {
5639 : { (JSJitGetterOp)convertRectFromNode },
5640 : { prototypes::id::Document },
5641 : { PrototypeTraits<prototypes::id::Document>::Depth },
5642 : JSJitInfo::Method,
5643 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5644 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
5645 : false, /* isInfallible. False in setters. */
5646 : false, /* isMovable. Not relevant for setters. */
5647 : false, /* isEliminatable. Not relevant for setters. */
5648 : false, /* isAlwaysInSlot. Only relevant for getters. */
5649 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5650 : false, /* isTypedMethod. Only relevant for methods. */
5651 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5652 : };
5653 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5654 : static_assert(0 < 1, "There is no slot for us");
5655 :
5656 : static bool
5657 0 : convertPointFromNode(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
5658 : {
5659 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
5660 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.convertPointFromNode");
5661 : }
5662 0 : binding_detail::FastDOMPointInit arg0;
5663 0 : if (!arg0.Init(cx, args[0], "Argument 1 of Document.convertPointFromNode", false)) {
5664 0 : return false;
5665 : }
5666 0 : TextOrElementOrDocument arg1;
5667 0 : TextOrElementOrDocumentArgument arg1_holder(arg1);
5668 : {
5669 0 : bool done = false, failed = false, tryNext;
5670 0 : if (args[1].isObject()) {
5671 0 : done = (failed = !arg1_holder.TrySetToText(cx, args[1], tryNext, false)) || !tryNext ||
5672 0 : (failed = !arg1_holder.TrySetToElement(cx, args[1], tryNext, false)) || !tryNext ||
5673 0 : (failed = !arg1_holder.TrySetToDocument(cx, args[1], tryNext, false)) || !tryNext;
5674 :
5675 : }
5676 0 : if (failed) {
5677 0 : return false;
5678 : }
5679 0 : if (!done) {
5680 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 2 of Document.convertPointFromNode", "Text, Element, Document");
5681 0 : return false;
5682 : }
5683 : }
5684 0 : binding_detail::FastConvertCoordinateOptions arg2;
5685 0 : if (!arg2.Init(cx, (args.hasDefined(2)) ? args[2] : JS::NullHandleValue, "Argument 3 of Document.convertPointFromNode", false)) {
5686 0 : return false;
5687 : }
5688 0 : binding_detail::FastErrorResult rv;
5689 0 : auto result(StrongOrRawPtr<mozilla::dom::DOMPoint>(self->ConvertPointFromNode(Constify(arg0), Constify(arg1), Constify(arg2), nsContentUtils::IsSystemCaller(cx) ? CallerType::System : CallerType::NonSystem, rv)));
5690 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
5691 0 : return false;
5692 : }
5693 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5694 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
5695 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
5696 0 : return false;
5697 : }
5698 0 : return true;
5699 : }
5700 :
5701 : static const JSJitInfo convertPointFromNode_methodinfo = {
5702 : { (JSJitGetterOp)convertPointFromNode },
5703 : { prototypes::id::Document },
5704 : { PrototypeTraits<prototypes::id::Document>::Depth },
5705 : JSJitInfo::Method,
5706 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5707 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
5708 : false, /* isInfallible. False in setters. */
5709 : false, /* isMovable. Not relevant for setters. */
5710 : false, /* isEliminatable. Not relevant for setters. */
5711 : false, /* isAlwaysInSlot. Only relevant for getters. */
5712 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5713 : false, /* isTypedMethod. Only relevant for methods. */
5714 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5715 : };
5716 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5717 : static_assert(0 < 1, "There is no slot for us");
5718 :
5719 : static bool
5720 0 : get_onabort(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
5721 : {
5722 0 : RefPtr<EventHandlerNonNull> result(self->GetOnabort());
5723 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5724 0 : if (result) {
5725 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5726 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5727 0 : return false;
5728 : }
5729 0 : return true;
5730 : } else {
5731 0 : args.rval().setNull();
5732 0 : return true;
5733 : }
5734 : }
5735 :
5736 : static bool
5737 0 : set_onabort(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
5738 : {
5739 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5740 0 : if (args[0].isObject()) {
5741 : { // scope for tempRoot
5742 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5743 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5744 : }
5745 : } else {
5746 0 : arg0 = nullptr;
5747 : }
5748 0 : self->SetOnabort(Constify(arg0));
5749 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5750 :
5751 0 : return true;
5752 : }
5753 :
5754 : static const JSJitInfo onabort_getterinfo = {
5755 : { (JSJitGetterOp)get_onabort },
5756 : { prototypes::id::Document },
5757 : { PrototypeTraits<prototypes::id::Document>::Depth },
5758 : JSJitInfo::Getter,
5759 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5760 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5761 : false, /* isInfallible. False in setters. */
5762 : false, /* isMovable. Not relevant for setters. */
5763 : false, /* isEliminatable. Not relevant for setters. */
5764 : false, /* isAlwaysInSlot. Only relevant for getters. */
5765 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5766 : false, /* isTypedMethod. Only relevant for methods. */
5767 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5768 : };
5769 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5770 : static_assert(0 < 1, "There is no slot for us");
5771 : static const JSJitInfo onabort_setterinfo = {
5772 : { (JSJitGetterOp)set_onabort },
5773 : { prototypes::id::Document },
5774 : { PrototypeTraits<prototypes::id::Document>::Depth },
5775 : JSJitInfo::Setter,
5776 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5777 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5778 : false, /* isInfallible. False in setters. */
5779 : false, /* isMovable. Not relevant for setters. */
5780 : false, /* isEliminatable. Not relevant for setters. */
5781 : false, /* isAlwaysInSlot. Only relevant for getters. */
5782 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5783 : false, /* isTypedMethod. Only relevant for methods. */
5784 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5785 : };
5786 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5787 : static_assert(0 < 1, "There is no slot for us");
5788 :
5789 : static bool
5790 0 : get_onblur(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
5791 : {
5792 0 : RefPtr<EventHandlerNonNull> result(self->GetOnblur());
5793 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5794 0 : if (result) {
5795 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5796 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5797 0 : return false;
5798 : }
5799 0 : return true;
5800 : } else {
5801 0 : args.rval().setNull();
5802 0 : return true;
5803 : }
5804 : }
5805 :
5806 : static bool
5807 0 : set_onblur(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
5808 : {
5809 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5810 0 : if (args[0].isObject()) {
5811 : { // scope for tempRoot
5812 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5813 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5814 : }
5815 : } else {
5816 0 : arg0 = nullptr;
5817 : }
5818 0 : self->SetOnblur(Constify(arg0));
5819 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5820 :
5821 0 : return true;
5822 : }
5823 :
5824 : static const JSJitInfo onblur_getterinfo = {
5825 : { (JSJitGetterOp)get_onblur },
5826 : { prototypes::id::Document },
5827 : { PrototypeTraits<prototypes::id::Document>::Depth },
5828 : JSJitInfo::Getter,
5829 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5830 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5831 : false, /* isInfallible. False in setters. */
5832 : false, /* isMovable. Not relevant for setters. */
5833 : false, /* isEliminatable. Not relevant for setters. */
5834 : false, /* isAlwaysInSlot. Only relevant for getters. */
5835 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5836 : false, /* isTypedMethod. Only relevant for methods. */
5837 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5838 : };
5839 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5840 : static_assert(0 < 1, "There is no slot for us");
5841 : static const JSJitInfo onblur_setterinfo = {
5842 : { (JSJitGetterOp)set_onblur },
5843 : { prototypes::id::Document },
5844 : { PrototypeTraits<prototypes::id::Document>::Depth },
5845 : JSJitInfo::Setter,
5846 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5847 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5848 : false, /* isInfallible. False in setters. */
5849 : false, /* isMovable. Not relevant for setters. */
5850 : false, /* isEliminatable. Not relevant for setters. */
5851 : false, /* isAlwaysInSlot. Only relevant for getters. */
5852 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5853 : false, /* isTypedMethod. Only relevant for methods. */
5854 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5855 : };
5856 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5857 : static_assert(0 < 1, "There is no slot for us");
5858 :
5859 : static bool
5860 0 : get_onfocus(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
5861 : {
5862 0 : RefPtr<EventHandlerNonNull> result(self->GetOnfocus());
5863 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5864 0 : if (result) {
5865 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5866 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5867 0 : return false;
5868 : }
5869 0 : return true;
5870 : } else {
5871 0 : args.rval().setNull();
5872 0 : return true;
5873 : }
5874 : }
5875 :
5876 : static bool
5877 0 : set_onfocus(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
5878 : {
5879 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5880 0 : if (args[0].isObject()) {
5881 : { // scope for tempRoot
5882 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5883 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5884 : }
5885 : } else {
5886 0 : arg0 = nullptr;
5887 : }
5888 0 : self->SetOnfocus(Constify(arg0));
5889 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5890 :
5891 0 : return true;
5892 : }
5893 :
5894 : static const JSJitInfo onfocus_getterinfo = {
5895 : { (JSJitGetterOp)get_onfocus },
5896 : { prototypes::id::Document },
5897 : { PrototypeTraits<prototypes::id::Document>::Depth },
5898 : JSJitInfo::Getter,
5899 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5900 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5901 : false, /* isInfallible. False in setters. */
5902 : false, /* isMovable. Not relevant for setters. */
5903 : false, /* isEliminatable. Not relevant for setters. */
5904 : false, /* isAlwaysInSlot. Only relevant for getters. */
5905 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5906 : false, /* isTypedMethod. Only relevant for methods. */
5907 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5908 : };
5909 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5910 : static_assert(0 < 1, "There is no slot for us");
5911 : static const JSJitInfo onfocus_setterinfo = {
5912 : { (JSJitGetterOp)set_onfocus },
5913 : { prototypes::id::Document },
5914 : { PrototypeTraits<prototypes::id::Document>::Depth },
5915 : JSJitInfo::Setter,
5916 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5917 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5918 : false, /* isInfallible. False in setters. */
5919 : false, /* isMovable. Not relevant for setters. */
5920 : false, /* isEliminatable. Not relevant for setters. */
5921 : false, /* isAlwaysInSlot. Only relevant for getters. */
5922 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5923 : false, /* isTypedMethod. Only relevant for methods. */
5924 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5925 : };
5926 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5927 : static_assert(0 < 1, "There is no slot for us");
5928 :
5929 : static bool
5930 0 : get_onauxclick(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
5931 : {
5932 0 : RefPtr<EventHandlerNonNull> result(self->GetOnauxclick());
5933 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5934 0 : if (result) {
5935 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
5936 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
5937 0 : return false;
5938 : }
5939 0 : return true;
5940 : } else {
5941 0 : args.rval().setNull();
5942 0 : return true;
5943 : }
5944 : }
5945 :
5946 : static bool
5947 0 : set_onauxclick(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
5948 : {
5949 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
5950 0 : if (args[0].isObject()) {
5951 : { // scope for tempRoot
5952 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
5953 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
5954 : }
5955 : } else {
5956 0 : arg0 = nullptr;
5957 : }
5958 0 : self->SetOnauxclick(Constify(arg0));
5959 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
5960 :
5961 0 : return true;
5962 : }
5963 :
5964 : static const JSJitInfo onauxclick_getterinfo = {
5965 : { (JSJitGetterOp)get_onauxclick },
5966 : { prototypes::id::Document },
5967 : { PrototypeTraits<prototypes::id::Document>::Depth },
5968 : JSJitInfo::Getter,
5969 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5970 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
5971 : false, /* isInfallible. False in setters. */
5972 : false, /* isMovable. Not relevant for setters. */
5973 : false, /* isEliminatable. Not relevant for setters. */
5974 : false, /* isAlwaysInSlot. Only relevant for getters. */
5975 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5976 : false, /* isTypedMethod. Only relevant for methods. */
5977 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5978 : };
5979 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5980 : static_assert(0 < 1, "There is no slot for us");
5981 : static const JSJitInfo onauxclick_setterinfo = {
5982 : { (JSJitGetterOp)set_onauxclick },
5983 : { prototypes::id::Document },
5984 : { PrototypeTraits<prototypes::id::Document>::Depth },
5985 : JSJitInfo::Setter,
5986 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
5987 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
5988 : false, /* isInfallible. False in setters. */
5989 : false, /* isMovable. Not relevant for setters. */
5990 : false, /* isEliminatable. Not relevant for setters. */
5991 : false, /* isAlwaysInSlot. Only relevant for getters. */
5992 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
5993 : false, /* isTypedMethod. Only relevant for methods. */
5994 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
5995 : };
5996 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
5997 : static_assert(0 < 1, "There is no slot for us");
5998 :
5999 : static bool
6000 0 : get_oncanplay(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
6001 : {
6002 0 : RefPtr<EventHandlerNonNull> result(self->GetOncanplay());
6003 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6004 0 : if (result) {
6005 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6006 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6007 0 : return false;
6008 : }
6009 0 : return true;
6010 : } else {
6011 0 : args.rval().setNull();
6012 0 : return true;
6013 : }
6014 : }
6015 :
6016 : static bool
6017 0 : set_oncanplay(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
6018 : {
6019 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6020 0 : if (args[0].isObject()) {
6021 : { // scope for tempRoot
6022 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6023 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6024 : }
6025 : } else {
6026 0 : arg0 = nullptr;
6027 : }
6028 0 : self->SetOncanplay(Constify(arg0));
6029 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6030 :
6031 0 : return true;
6032 : }
6033 :
6034 : static const JSJitInfo oncanplay_getterinfo = {
6035 : { (JSJitGetterOp)get_oncanplay },
6036 : { prototypes::id::Document },
6037 : { PrototypeTraits<prototypes::id::Document>::Depth },
6038 : JSJitInfo::Getter,
6039 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6040 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6041 : false, /* isInfallible. False in setters. */
6042 : false, /* isMovable. Not relevant for setters. */
6043 : false, /* isEliminatable. Not relevant for setters. */
6044 : false, /* isAlwaysInSlot. Only relevant for getters. */
6045 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6046 : false, /* isTypedMethod. Only relevant for methods. */
6047 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6048 : };
6049 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6050 : static_assert(0 < 1, "There is no slot for us");
6051 : static const JSJitInfo oncanplay_setterinfo = {
6052 : { (JSJitGetterOp)set_oncanplay },
6053 : { prototypes::id::Document },
6054 : { PrototypeTraits<prototypes::id::Document>::Depth },
6055 : JSJitInfo::Setter,
6056 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6057 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6058 : false, /* isInfallible. False in setters. */
6059 : false, /* isMovable. Not relevant for setters. */
6060 : false, /* isEliminatable. Not relevant for setters. */
6061 : false, /* isAlwaysInSlot. Only relevant for getters. */
6062 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6063 : false, /* isTypedMethod. Only relevant for methods. */
6064 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6065 : };
6066 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6067 : static_assert(0 < 1, "There is no slot for us");
6068 :
6069 : static bool
6070 0 : get_oncanplaythrough(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
6071 : {
6072 0 : RefPtr<EventHandlerNonNull> result(self->GetOncanplaythrough());
6073 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6074 0 : if (result) {
6075 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6076 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6077 0 : return false;
6078 : }
6079 0 : return true;
6080 : } else {
6081 0 : args.rval().setNull();
6082 0 : return true;
6083 : }
6084 : }
6085 :
6086 : static bool
6087 0 : set_oncanplaythrough(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
6088 : {
6089 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6090 0 : if (args[0].isObject()) {
6091 : { // scope for tempRoot
6092 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6093 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6094 : }
6095 : } else {
6096 0 : arg0 = nullptr;
6097 : }
6098 0 : self->SetOncanplaythrough(Constify(arg0));
6099 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6100 :
6101 0 : return true;
6102 : }
6103 :
6104 : static const JSJitInfo oncanplaythrough_getterinfo = {
6105 : { (JSJitGetterOp)get_oncanplaythrough },
6106 : { prototypes::id::Document },
6107 : { PrototypeTraits<prototypes::id::Document>::Depth },
6108 : JSJitInfo::Getter,
6109 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6110 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6111 : false, /* isInfallible. False in setters. */
6112 : false, /* isMovable. Not relevant for setters. */
6113 : false, /* isEliminatable. Not relevant for setters. */
6114 : false, /* isAlwaysInSlot. Only relevant for getters. */
6115 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6116 : false, /* isTypedMethod. Only relevant for methods. */
6117 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6118 : };
6119 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6120 : static_assert(0 < 1, "There is no slot for us");
6121 : static const JSJitInfo oncanplaythrough_setterinfo = {
6122 : { (JSJitGetterOp)set_oncanplaythrough },
6123 : { prototypes::id::Document },
6124 : { PrototypeTraits<prototypes::id::Document>::Depth },
6125 : JSJitInfo::Setter,
6126 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6127 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6128 : false, /* isInfallible. False in setters. */
6129 : false, /* isMovable. Not relevant for setters. */
6130 : false, /* isEliminatable. Not relevant for setters. */
6131 : false, /* isAlwaysInSlot. Only relevant for getters. */
6132 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6133 : false, /* isTypedMethod. Only relevant for methods. */
6134 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6135 : };
6136 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6137 : static_assert(0 < 1, "There is no slot for us");
6138 :
6139 : static bool
6140 0 : get_onchange(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
6141 : {
6142 0 : RefPtr<EventHandlerNonNull> result(self->GetOnchange());
6143 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6144 0 : if (result) {
6145 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6146 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6147 0 : return false;
6148 : }
6149 0 : return true;
6150 : } else {
6151 0 : args.rval().setNull();
6152 0 : return true;
6153 : }
6154 : }
6155 :
6156 : static bool
6157 0 : set_onchange(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
6158 : {
6159 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6160 0 : if (args[0].isObject()) {
6161 : { // scope for tempRoot
6162 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6163 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6164 : }
6165 : } else {
6166 0 : arg0 = nullptr;
6167 : }
6168 0 : self->SetOnchange(Constify(arg0));
6169 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6170 :
6171 0 : return true;
6172 : }
6173 :
6174 : static const JSJitInfo onchange_getterinfo = {
6175 : { (JSJitGetterOp)get_onchange },
6176 : { prototypes::id::Document },
6177 : { PrototypeTraits<prototypes::id::Document>::Depth },
6178 : JSJitInfo::Getter,
6179 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6180 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6181 : false, /* isInfallible. False in setters. */
6182 : false, /* isMovable. Not relevant for setters. */
6183 : false, /* isEliminatable. Not relevant for setters. */
6184 : false, /* isAlwaysInSlot. Only relevant for getters. */
6185 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6186 : false, /* isTypedMethod. Only relevant for methods. */
6187 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6188 : };
6189 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6190 : static_assert(0 < 1, "There is no slot for us");
6191 : static const JSJitInfo onchange_setterinfo = {
6192 : { (JSJitGetterOp)set_onchange },
6193 : { prototypes::id::Document },
6194 : { PrototypeTraits<prototypes::id::Document>::Depth },
6195 : JSJitInfo::Setter,
6196 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6197 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6198 : false, /* isInfallible. False in setters. */
6199 : false, /* isMovable. Not relevant for setters. */
6200 : false, /* isEliminatable. Not relevant for setters. */
6201 : false, /* isAlwaysInSlot. Only relevant for getters. */
6202 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6203 : false, /* isTypedMethod. Only relevant for methods. */
6204 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6205 : };
6206 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6207 : static_assert(0 < 1, "There is no slot for us");
6208 :
6209 : static bool
6210 0 : get_onclick(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
6211 : {
6212 0 : RefPtr<EventHandlerNonNull> result(self->GetOnclick());
6213 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6214 0 : if (result) {
6215 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6216 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6217 0 : return false;
6218 : }
6219 0 : return true;
6220 : } else {
6221 0 : args.rval().setNull();
6222 0 : return true;
6223 : }
6224 : }
6225 :
6226 : static bool
6227 0 : set_onclick(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
6228 : {
6229 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6230 0 : if (args[0].isObject()) {
6231 : { // scope for tempRoot
6232 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6233 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6234 : }
6235 : } else {
6236 0 : arg0 = nullptr;
6237 : }
6238 0 : self->SetOnclick(Constify(arg0));
6239 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6240 :
6241 0 : return true;
6242 : }
6243 :
6244 : static const JSJitInfo onclick_getterinfo = {
6245 : { (JSJitGetterOp)get_onclick },
6246 : { prototypes::id::Document },
6247 : { PrototypeTraits<prototypes::id::Document>::Depth },
6248 : JSJitInfo::Getter,
6249 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6250 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6251 : false, /* isInfallible. False in setters. */
6252 : false, /* isMovable. Not relevant for setters. */
6253 : false, /* isEliminatable. Not relevant for setters. */
6254 : false, /* isAlwaysInSlot. Only relevant for getters. */
6255 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6256 : false, /* isTypedMethod. Only relevant for methods. */
6257 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6258 : };
6259 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6260 : static_assert(0 < 1, "There is no slot for us");
6261 : static const JSJitInfo onclick_setterinfo = {
6262 : { (JSJitGetterOp)set_onclick },
6263 : { prototypes::id::Document },
6264 : { PrototypeTraits<prototypes::id::Document>::Depth },
6265 : JSJitInfo::Setter,
6266 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6267 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6268 : false, /* isInfallible. False in setters. */
6269 : false, /* isMovable. Not relevant for setters. */
6270 : false, /* isEliminatable. Not relevant for setters. */
6271 : false, /* isAlwaysInSlot. Only relevant for getters. */
6272 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6273 : false, /* isTypedMethod. Only relevant for methods. */
6274 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6275 : };
6276 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6277 : static_assert(0 < 1, "There is no slot for us");
6278 :
6279 : static bool
6280 0 : get_onclose(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
6281 : {
6282 0 : RefPtr<EventHandlerNonNull> result(self->GetOnclose());
6283 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6284 0 : if (result) {
6285 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6286 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6287 0 : return false;
6288 : }
6289 0 : return true;
6290 : } else {
6291 0 : args.rval().setNull();
6292 0 : return true;
6293 : }
6294 : }
6295 :
6296 : static bool
6297 0 : set_onclose(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
6298 : {
6299 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6300 0 : if (args[0].isObject()) {
6301 : { // scope for tempRoot
6302 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6303 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6304 : }
6305 : } else {
6306 0 : arg0 = nullptr;
6307 : }
6308 0 : self->SetOnclose(Constify(arg0));
6309 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6310 :
6311 0 : return true;
6312 : }
6313 :
6314 : static const JSJitInfo onclose_getterinfo = {
6315 : { (JSJitGetterOp)get_onclose },
6316 : { prototypes::id::Document },
6317 : { PrototypeTraits<prototypes::id::Document>::Depth },
6318 : JSJitInfo::Getter,
6319 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6320 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6321 : false, /* isInfallible. False in setters. */
6322 : false, /* isMovable. Not relevant for setters. */
6323 : false, /* isEliminatable. Not relevant for setters. */
6324 : false, /* isAlwaysInSlot. Only relevant for getters. */
6325 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6326 : false, /* isTypedMethod. Only relevant for methods. */
6327 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6328 : };
6329 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6330 : static_assert(0 < 1, "There is no slot for us");
6331 : static const JSJitInfo onclose_setterinfo = {
6332 : { (JSJitGetterOp)set_onclose },
6333 : { prototypes::id::Document },
6334 : { PrototypeTraits<prototypes::id::Document>::Depth },
6335 : JSJitInfo::Setter,
6336 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6337 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6338 : false, /* isInfallible. False in setters. */
6339 : false, /* isMovable. Not relevant for setters. */
6340 : false, /* isEliminatable. Not relevant for setters. */
6341 : false, /* isAlwaysInSlot. Only relevant for getters. */
6342 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6343 : false, /* isTypedMethod. Only relevant for methods. */
6344 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6345 : };
6346 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6347 : static_assert(0 < 1, "There is no slot for us");
6348 :
6349 : static bool
6350 0 : get_oncontextmenu(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
6351 : {
6352 0 : RefPtr<EventHandlerNonNull> result(self->GetOncontextmenu());
6353 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6354 0 : if (result) {
6355 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6356 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6357 0 : return false;
6358 : }
6359 0 : return true;
6360 : } else {
6361 0 : args.rval().setNull();
6362 0 : return true;
6363 : }
6364 : }
6365 :
6366 : static bool
6367 0 : set_oncontextmenu(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
6368 : {
6369 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6370 0 : if (args[0].isObject()) {
6371 : { // scope for tempRoot
6372 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6373 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6374 : }
6375 : } else {
6376 0 : arg0 = nullptr;
6377 : }
6378 0 : self->SetOncontextmenu(Constify(arg0));
6379 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6380 :
6381 0 : return true;
6382 : }
6383 :
6384 : static const JSJitInfo oncontextmenu_getterinfo = {
6385 : { (JSJitGetterOp)get_oncontextmenu },
6386 : { prototypes::id::Document },
6387 : { PrototypeTraits<prototypes::id::Document>::Depth },
6388 : JSJitInfo::Getter,
6389 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6390 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6391 : false, /* isInfallible. False in setters. */
6392 : false, /* isMovable. Not relevant for setters. */
6393 : false, /* isEliminatable. Not relevant for setters. */
6394 : false, /* isAlwaysInSlot. Only relevant for getters. */
6395 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6396 : false, /* isTypedMethod. Only relevant for methods. */
6397 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6398 : };
6399 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6400 : static_assert(0 < 1, "There is no slot for us");
6401 : static const JSJitInfo oncontextmenu_setterinfo = {
6402 : { (JSJitGetterOp)set_oncontextmenu },
6403 : { prototypes::id::Document },
6404 : { PrototypeTraits<prototypes::id::Document>::Depth },
6405 : JSJitInfo::Setter,
6406 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6407 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6408 : false, /* isInfallible. False in setters. */
6409 : false, /* isMovable. Not relevant for setters. */
6410 : false, /* isEliminatable. Not relevant for setters. */
6411 : false, /* isAlwaysInSlot. Only relevant for getters. */
6412 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6413 : false, /* isTypedMethod. Only relevant for methods. */
6414 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6415 : };
6416 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6417 : static_assert(0 < 1, "There is no slot for us");
6418 :
6419 : static bool
6420 0 : get_ondblclick(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
6421 : {
6422 0 : RefPtr<EventHandlerNonNull> result(self->GetOndblclick());
6423 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6424 0 : if (result) {
6425 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6426 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6427 0 : return false;
6428 : }
6429 0 : return true;
6430 : } else {
6431 0 : args.rval().setNull();
6432 0 : return true;
6433 : }
6434 : }
6435 :
6436 : static bool
6437 0 : set_ondblclick(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
6438 : {
6439 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6440 0 : if (args[0].isObject()) {
6441 : { // scope for tempRoot
6442 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6443 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6444 : }
6445 : } else {
6446 0 : arg0 = nullptr;
6447 : }
6448 0 : self->SetOndblclick(Constify(arg0));
6449 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6450 :
6451 0 : return true;
6452 : }
6453 :
6454 : static const JSJitInfo ondblclick_getterinfo = {
6455 : { (JSJitGetterOp)get_ondblclick },
6456 : { prototypes::id::Document },
6457 : { PrototypeTraits<prototypes::id::Document>::Depth },
6458 : JSJitInfo::Getter,
6459 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6460 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6461 : false, /* isInfallible. False in setters. */
6462 : false, /* isMovable. Not relevant for setters. */
6463 : false, /* isEliminatable. Not relevant for setters. */
6464 : false, /* isAlwaysInSlot. Only relevant for getters. */
6465 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6466 : false, /* isTypedMethod. Only relevant for methods. */
6467 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6468 : };
6469 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6470 : static_assert(0 < 1, "There is no slot for us");
6471 : static const JSJitInfo ondblclick_setterinfo = {
6472 : { (JSJitGetterOp)set_ondblclick },
6473 : { prototypes::id::Document },
6474 : { PrototypeTraits<prototypes::id::Document>::Depth },
6475 : JSJitInfo::Setter,
6476 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6477 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6478 : false, /* isInfallible. False in setters. */
6479 : false, /* isMovable. Not relevant for setters. */
6480 : false, /* isEliminatable. Not relevant for setters. */
6481 : false, /* isAlwaysInSlot. Only relevant for getters. */
6482 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6483 : false, /* isTypedMethod. Only relevant for methods. */
6484 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6485 : };
6486 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6487 : static_assert(0 < 1, "There is no slot for us");
6488 :
6489 : static bool
6490 0 : get_ondrag(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
6491 : {
6492 0 : RefPtr<EventHandlerNonNull> result(self->GetOndrag());
6493 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6494 0 : if (result) {
6495 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6496 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6497 0 : return false;
6498 : }
6499 0 : return true;
6500 : } else {
6501 0 : args.rval().setNull();
6502 0 : return true;
6503 : }
6504 : }
6505 :
6506 : static bool
6507 0 : set_ondrag(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
6508 : {
6509 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6510 0 : if (args[0].isObject()) {
6511 : { // scope for tempRoot
6512 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6513 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6514 : }
6515 : } else {
6516 0 : arg0 = nullptr;
6517 : }
6518 0 : self->SetOndrag(Constify(arg0));
6519 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6520 :
6521 0 : return true;
6522 : }
6523 :
6524 : static const JSJitInfo ondrag_getterinfo = {
6525 : { (JSJitGetterOp)get_ondrag },
6526 : { prototypes::id::Document },
6527 : { PrototypeTraits<prototypes::id::Document>::Depth },
6528 : JSJitInfo::Getter,
6529 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6530 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6531 : false, /* isInfallible. False in setters. */
6532 : false, /* isMovable. Not relevant for setters. */
6533 : false, /* isEliminatable. Not relevant for setters. */
6534 : false, /* isAlwaysInSlot. Only relevant for getters. */
6535 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6536 : false, /* isTypedMethod. Only relevant for methods. */
6537 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6538 : };
6539 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6540 : static_assert(0 < 1, "There is no slot for us");
6541 : static const JSJitInfo ondrag_setterinfo = {
6542 : { (JSJitGetterOp)set_ondrag },
6543 : { prototypes::id::Document },
6544 : { PrototypeTraits<prototypes::id::Document>::Depth },
6545 : JSJitInfo::Setter,
6546 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6547 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6548 : false, /* isInfallible. False in setters. */
6549 : false, /* isMovable. Not relevant for setters. */
6550 : false, /* isEliminatable. Not relevant for setters. */
6551 : false, /* isAlwaysInSlot. Only relevant for getters. */
6552 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6553 : false, /* isTypedMethod. Only relevant for methods. */
6554 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6555 : };
6556 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6557 : static_assert(0 < 1, "There is no slot for us");
6558 :
6559 : static bool
6560 0 : get_ondragend(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
6561 : {
6562 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragend());
6563 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6564 0 : if (result) {
6565 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6566 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6567 0 : return false;
6568 : }
6569 0 : return true;
6570 : } else {
6571 0 : args.rval().setNull();
6572 0 : return true;
6573 : }
6574 : }
6575 :
6576 : static bool
6577 0 : set_ondragend(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
6578 : {
6579 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6580 0 : if (args[0].isObject()) {
6581 : { // scope for tempRoot
6582 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6583 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6584 : }
6585 : } else {
6586 0 : arg0 = nullptr;
6587 : }
6588 0 : self->SetOndragend(Constify(arg0));
6589 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6590 :
6591 0 : return true;
6592 : }
6593 :
6594 : static const JSJitInfo ondragend_getterinfo = {
6595 : { (JSJitGetterOp)get_ondragend },
6596 : { prototypes::id::Document },
6597 : { PrototypeTraits<prototypes::id::Document>::Depth },
6598 : JSJitInfo::Getter,
6599 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6600 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6601 : false, /* isInfallible. False in setters. */
6602 : false, /* isMovable. Not relevant for setters. */
6603 : false, /* isEliminatable. Not relevant for setters. */
6604 : false, /* isAlwaysInSlot. Only relevant for getters. */
6605 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6606 : false, /* isTypedMethod. Only relevant for methods. */
6607 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6608 : };
6609 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6610 : static_assert(0 < 1, "There is no slot for us");
6611 : static const JSJitInfo ondragend_setterinfo = {
6612 : { (JSJitGetterOp)set_ondragend },
6613 : { prototypes::id::Document },
6614 : { PrototypeTraits<prototypes::id::Document>::Depth },
6615 : JSJitInfo::Setter,
6616 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6617 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6618 : false, /* isInfallible. False in setters. */
6619 : false, /* isMovable. Not relevant for setters. */
6620 : false, /* isEliminatable. Not relevant for setters. */
6621 : false, /* isAlwaysInSlot. Only relevant for getters. */
6622 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6623 : false, /* isTypedMethod. Only relevant for methods. */
6624 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6625 : };
6626 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6627 : static_assert(0 < 1, "There is no slot for us");
6628 :
6629 : static bool
6630 0 : get_ondragenter(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
6631 : {
6632 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragenter());
6633 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6634 0 : if (result) {
6635 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6636 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6637 0 : return false;
6638 : }
6639 0 : return true;
6640 : } else {
6641 0 : args.rval().setNull();
6642 0 : return true;
6643 : }
6644 : }
6645 :
6646 : static bool
6647 0 : set_ondragenter(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
6648 : {
6649 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6650 0 : if (args[0].isObject()) {
6651 : { // scope for tempRoot
6652 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6653 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6654 : }
6655 : } else {
6656 0 : arg0 = nullptr;
6657 : }
6658 0 : self->SetOndragenter(Constify(arg0));
6659 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6660 :
6661 0 : return true;
6662 : }
6663 :
6664 : static const JSJitInfo ondragenter_getterinfo = {
6665 : { (JSJitGetterOp)get_ondragenter },
6666 : { prototypes::id::Document },
6667 : { PrototypeTraits<prototypes::id::Document>::Depth },
6668 : JSJitInfo::Getter,
6669 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6670 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6671 : false, /* isInfallible. False in setters. */
6672 : false, /* isMovable. Not relevant for setters. */
6673 : false, /* isEliminatable. Not relevant for setters. */
6674 : false, /* isAlwaysInSlot. Only relevant for getters. */
6675 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6676 : false, /* isTypedMethod. Only relevant for methods. */
6677 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6678 : };
6679 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6680 : static_assert(0 < 1, "There is no slot for us");
6681 : static const JSJitInfo ondragenter_setterinfo = {
6682 : { (JSJitGetterOp)set_ondragenter },
6683 : { prototypes::id::Document },
6684 : { PrototypeTraits<prototypes::id::Document>::Depth },
6685 : JSJitInfo::Setter,
6686 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6687 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6688 : false, /* isInfallible. False in setters. */
6689 : false, /* isMovable. Not relevant for setters. */
6690 : false, /* isEliminatable. Not relevant for setters. */
6691 : false, /* isAlwaysInSlot. Only relevant for getters. */
6692 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6693 : false, /* isTypedMethod. Only relevant for methods. */
6694 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6695 : };
6696 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6697 : static_assert(0 < 1, "There is no slot for us");
6698 :
6699 : static bool
6700 0 : get_ondragexit(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
6701 : {
6702 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragexit());
6703 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6704 0 : if (result) {
6705 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6706 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6707 0 : return false;
6708 : }
6709 0 : return true;
6710 : } else {
6711 0 : args.rval().setNull();
6712 0 : return true;
6713 : }
6714 : }
6715 :
6716 : static bool
6717 0 : set_ondragexit(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
6718 : {
6719 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6720 0 : if (args[0].isObject()) {
6721 : { // scope for tempRoot
6722 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6723 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6724 : }
6725 : } else {
6726 0 : arg0 = nullptr;
6727 : }
6728 0 : self->SetOndragexit(Constify(arg0));
6729 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6730 :
6731 0 : return true;
6732 : }
6733 :
6734 : static const JSJitInfo ondragexit_getterinfo = {
6735 : { (JSJitGetterOp)get_ondragexit },
6736 : { prototypes::id::Document },
6737 : { PrototypeTraits<prototypes::id::Document>::Depth },
6738 : JSJitInfo::Getter,
6739 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6740 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6741 : false, /* isInfallible. False in setters. */
6742 : false, /* isMovable. Not relevant for setters. */
6743 : false, /* isEliminatable. Not relevant for setters. */
6744 : false, /* isAlwaysInSlot. Only relevant for getters. */
6745 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6746 : false, /* isTypedMethod. Only relevant for methods. */
6747 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6748 : };
6749 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6750 : static_assert(0 < 1, "There is no slot for us");
6751 : static const JSJitInfo ondragexit_setterinfo = {
6752 : { (JSJitGetterOp)set_ondragexit },
6753 : { prototypes::id::Document },
6754 : { PrototypeTraits<prototypes::id::Document>::Depth },
6755 : JSJitInfo::Setter,
6756 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6757 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6758 : false, /* isInfallible. False in setters. */
6759 : false, /* isMovable. Not relevant for setters. */
6760 : false, /* isEliminatable. Not relevant for setters. */
6761 : false, /* isAlwaysInSlot. Only relevant for getters. */
6762 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6763 : false, /* isTypedMethod. Only relevant for methods. */
6764 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6765 : };
6766 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6767 : static_assert(0 < 1, "There is no slot for us");
6768 :
6769 : static bool
6770 0 : get_ondragleave(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
6771 : {
6772 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragleave());
6773 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6774 0 : if (result) {
6775 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6776 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6777 0 : return false;
6778 : }
6779 0 : return true;
6780 : } else {
6781 0 : args.rval().setNull();
6782 0 : return true;
6783 : }
6784 : }
6785 :
6786 : static bool
6787 0 : set_ondragleave(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
6788 : {
6789 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6790 0 : if (args[0].isObject()) {
6791 : { // scope for tempRoot
6792 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6793 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6794 : }
6795 : } else {
6796 0 : arg0 = nullptr;
6797 : }
6798 0 : self->SetOndragleave(Constify(arg0));
6799 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6800 :
6801 0 : return true;
6802 : }
6803 :
6804 : static const JSJitInfo ondragleave_getterinfo = {
6805 : { (JSJitGetterOp)get_ondragleave },
6806 : { prototypes::id::Document },
6807 : { PrototypeTraits<prototypes::id::Document>::Depth },
6808 : JSJitInfo::Getter,
6809 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6810 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6811 : false, /* isInfallible. False in setters. */
6812 : false, /* isMovable. Not relevant for setters. */
6813 : false, /* isEliminatable. Not relevant for setters. */
6814 : false, /* isAlwaysInSlot. Only relevant for getters. */
6815 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6816 : false, /* isTypedMethod. Only relevant for methods. */
6817 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6818 : };
6819 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6820 : static_assert(0 < 1, "There is no slot for us");
6821 : static const JSJitInfo ondragleave_setterinfo = {
6822 : { (JSJitGetterOp)set_ondragleave },
6823 : { prototypes::id::Document },
6824 : { PrototypeTraits<prototypes::id::Document>::Depth },
6825 : JSJitInfo::Setter,
6826 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6827 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6828 : false, /* isInfallible. False in setters. */
6829 : false, /* isMovable. Not relevant for setters. */
6830 : false, /* isEliminatable. Not relevant for setters. */
6831 : false, /* isAlwaysInSlot. Only relevant for getters. */
6832 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6833 : false, /* isTypedMethod. Only relevant for methods. */
6834 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6835 : };
6836 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6837 : static_assert(0 < 1, "There is no slot for us");
6838 :
6839 : static bool
6840 0 : get_ondragover(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
6841 : {
6842 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragover());
6843 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6844 0 : if (result) {
6845 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6846 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6847 0 : return false;
6848 : }
6849 0 : return true;
6850 : } else {
6851 0 : args.rval().setNull();
6852 0 : return true;
6853 : }
6854 : }
6855 :
6856 : static bool
6857 0 : set_ondragover(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
6858 : {
6859 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6860 0 : if (args[0].isObject()) {
6861 : { // scope for tempRoot
6862 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6863 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6864 : }
6865 : } else {
6866 0 : arg0 = nullptr;
6867 : }
6868 0 : self->SetOndragover(Constify(arg0));
6869 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6870 :
6871 0 : return true;
6872 : }
6873 :
6874 : static const JSJitInfo ondragover_getterinfo = {
6875 : { (JSJitGetterOp)get_ondragover },
6876 : { prototypes::id::Document },
6877 : { PrototypeTraits<prototypes::id::Document>::Depth },
6878 : JSJitInfo::Getter,
6879 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6880 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6881 : false, /* isInfallible. False in setters. */
6882 : false, /* isMovable. Not relevant for setters. */
6883 : false, /* isEliminatable. Not relevant for setters. */
6884 : false, /* isAlwaysInSlot. Only relevant for getters. */
6885 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6886 : false, /* isTypedMethod. Only relevant for methods. */
6887 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6888 : };
6889 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6890 : static_assert(0 < 1, "There is no slot for us");
6891 : static const JSJitInfo ondragover_setterinfo = {
6892 : { (JSJitGetterOp)set_ondragover },
6893 : { prototypes::id::Document },
6894 : { PrototypeTraits<prototypes::id::Document>::Depth },
6895 : JSJitInfo::Setter,
6896 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6897 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6898 : false, /* isInfallible. False in setters. */
6899 : false, /* isMovable. Not relevant for setters. */
6900 : false, /* isEliminatable. Not relevant for setters. */
6901 : false, /* isAlwaysInSlot. Only relevant for getters. */
6902 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6903 : false, /* isTypedMethod. Only relevant for methods. */
6904 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6905 : };
6906 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6907 : static_assert(0 < 1, "There is no slot for us");
6908 :
6909 : static bool
6910 0 : get_ondragstart(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
6911 : {
6912 0 : RefPtr<EventHandlerNonNull> result(self->GetOndragstart());
6913 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6914 0 : if (result) {
6915 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6916 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6917 0 : return false;
6918 : }
6919 0 : return true;
6920 : } else {
6921 0 : args.rval().setNull();
6922 0 : return true;
6923 : }
6924 : }
6925 :
6926 : static bool
6927 0 : set_ondragstart(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
6928 : {
6929 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
6930 0 : if (args[0].isObject()) {
6931 : { // scope for tempRoot
6932 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
6933 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
6934 : }
6935 : } else {
6936 0 : arg0 = nullptr;
6937 : }
6938 0 : self->SetOndragstart(Constify(arg0));
6939 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6940 :
6941 0 : return true;
6942 : }
6943 :
6944 : static const JSJitInfo ondragstart_getterinfo = {
6945 : { (JSJitGetterOp)get_ondragstart },
6946 : { prototypes::id::Document },
6947 : { PrototypeTraits<prototypes::id::Document>::Depth },
6948 : JSJitInfo::Getter,
6949 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6950 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
6951 : false, /* isInfallible. False in setters. */
6952 : false, /* isMovable. Not relevant for setters. */
6953 : false, /* isEliminatable. Not relevant for setters. */
6954 : false, /* isAlwaysInSlot. Only relevant for getters. */
6955 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6956 : false, /* isTypedMethod. Only relevant for methods. */
6957 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6958 : };
6959 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6960 : static_assert(0 < 1, "There is no slot for us");
6961 : static const JSJitInfo ondragstart_setterinfo = {
6962 : { (JSJitGetterOp)set_ondragstart },
6963 : { prototypes::id::Document },
6964 : { PrototypeTraits<prototypes::id::Document>::Depth },
6965 : JSJitInfo::Setter,
6966 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
6967 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
6968 : false, /* isInfallible. False in setters. */
6969 : false, /* isMovable. Not relevant for setters. */
6970 : false, /* isEliminatable. Not relevant for setters. */
6971 : false, /* isAlwaysInSlot. Only relevant for getters. */
6972 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
6973 : false, /* isTypedMethod. Only relevant for methods. */
6974 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
6975 : };
6976 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
6977 : static_assert(0 < 1, "There is no slot for us");
6978 :
6979 : static bool
6980 0 : get_ondrop(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
6981 : {
6982 0 : RefPtr<EventHandlerNonNull> result(self->GetOndrop());
6983 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
6984 0 : if (result) {
6985 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
6986 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
6987 0 : return false;
6988 : }
6989 0 : return true;
6990 : } else {
6991 0 : args.rval().setNull();
6992 0 : return true;
6993 : }
6994 : }
6995 :
6996 : static bool
6997 0 : set_ondrop(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
6998 : {
6999 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7000 0 : if (args[0].isObject()) {
7001 : { // scope for tempRoot
7002 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7003 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7004 : }
7005 : } else {
7006 0 : arg0 = nullptr;
7007 : }
7008 0 : self->SetOndrop(Constify(arg0));
7009 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7010 :
7011 0 : return true;
7012 : }
7013 :
7014 : static const JSJitInfo ondrop_getterinfo = {
7015 : { (JSJitGetterOp)get_ondrop },
7016 : { prototypes::id::Document },
7017 : { PrototypeTraits<prototypes::id::Document>::Depth },
7018 : JSJitInfo::Getter,
7019 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7020 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7021 : false, /* isInfallible. False in setters. */
7022 : false, /* isMovable. Not relevant for setters. */
7023 : false, /* isEliminatable. Not relevant for setters. */
7024 : false, /* isAlwaysInSlot. Only relevant for getters. */
7025 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7026 : false, /* isTypedMethod. Only relevant for methods. */
7027 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7028 : };
7029 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7030 : static_assert(0 < 1, "There is no slot for us");
7031 : static const JSJitInfo ondrop_setterinfo = {
7032 : { (JSJitGetterOp)set_ondrop },
7033 : { prototypes::id::Document },
7034 : { PrototypeTraits<prototypes::id::Document>::Depth },
7035 : JSJitInfo::Setter,
7036 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7037 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7038 : false, /* isInfallible. False in setters. */
7039 : false, /* isMovable. Not relevant for setters. */
7040 : false, /* isEliminatable. Not relevant for setters. */
7041 : false, /* isAlwaysInSlot. Only relevant for getters. */
7042 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7043 : false, /* isTypedMethod. Only relevant for methods. */
7044 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7045 : };
7046 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7047 : static_assert(0 < 1, "There is no slot for us");
7048 :
7049 : static bool
7050 0 : get_ondurationchange(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
7051 : {
7052 0 : RefPtr<EventHandlerNonNull> result(self->GetOndurationchange());
7053 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7054 0 : if (result) {
7055 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7056 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7057 0 : return false;
7058 : }
7059 0 : return true;
7060 : } else {
7061 0 : args.rval().setNull();
7062 0 : return true;
7063 : }
7064 : }
7065 :
7066 : static bool
7067 0 : set_ondurationchange(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
7068 : {
7069 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7070 0 : if (args[0].isObject()) {
7071 : { // scope for tempRoot
7072 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7073 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7074 : }
7075 : } else {
7076 0 : arg0 = nullptr;
7077 : }
7078 0 : self->SetOndurationchange(Constify(arg0));
7079 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7080 :
7081 0 : return true;
7082 : }
7083 :
7084 : static const JSJitInfo ondurationchange_getterinfo = {
7085 : { (JSJitGetterOp)get_ondurationchange },
7086 : { prototypes::id::Document },
7087 : { PrototypeTraits<prototypes::id::Document>::Depth },
7088 : JSJitInfo::Getter,
7089 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7090 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7091 : false, /* isInfallible. False in setters. */
7092 : false, /* isMovable. Not relevant for setters. */
7093 : false, /* isEliminatable. Not relevant for setters. */
7094 : false, /* isAlwaysInSlot. Only relevant for getters. */
7095 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7096 : false, /* isTypedMethod. Only relevant for methods. */
7097 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7098 : };
7099 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7100 : static_assert(0 < 1, "There is no slot for us");
7101 : static const JSJitInfo ondurationchange_setterinfo = {
7102 : { (JSJitGetterOp)set_ondurationchange },
7103 : { prototypes::id::Document },
7104 : { PrototypeTraits<prototypes::id::Document>::Depth },
7105 : JSJitInfo::Setter,
7106 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7107 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7108 : false, /* isInfallible. False in setters. */
7109 : false, /* isMovable. Not relevant for setters. */
7110 : false, /* isEliminatable. Not relevant for setters. */
7111 : false, /* isAlwaysInSlot. Only relevant for getters. */
7112 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7113 : false, /* isTypedMethod. Only relevant for methods. */
7114 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7115 : };
7116 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7117 : static_assert(0 < 1, "There is no slot for us");
7118 :
7119 : static bool
7120 0 : get_onemptied(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
7121 : {
7122 0 : RefPtr<EventHandlerNonNull> result(self->GetOnemptied());
7123 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7124 0 : if (result) {
7125 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7126 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7127 0 : return false;
7128 : }
7129 0 : return true;
7130 : } else {
7131 0 : args.rval().setNull();
7132 0 : return true;
7133 : }
7134 : }
7135 :
7136 : static bool
7137 0 : set_onemptied(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
7138 : {
7139 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7140 0 : if (args[0].isObject()) {
7141 : { // scope for tempRoot
7142 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7143 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7144 : }
7145 : } else {
7146 0 : arg0 = nullptr;
7147 : }
7148 0 : self->SetOnemptied(Constify(arg0));
7149 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7150 :
7151 0 : return true;
7152 : }
7153 :
7154 : static const JSJitInfo onemptied_getterinfo = {
7155 : { (JSJitGetterOp)get_onemptied },
7156 : { prototypes::id::Document },
7157 : { PrototypeTraits<prototypes::id::Document>::Depth },
7158 : JSJitInfo::Getter,
7159 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7160 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7161 : false, /* isInfallible. False in setters. */
7162 : false, /* isMovable. Not relevant for setters. */
7163 : false, /* isEliminatable. Not relevant for setters. */
7164 : false, /* isAlwaysInSlot. Only relevant for getters. */
7165 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7166 : false, /* isTypedMethod. Only relevant for methods. */
7167 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7168 : };
7169 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7170 : static_assert(0 < 1, "There is no slot for us");
7171 : static const JSJitInfo onemptied_setterinfo = {
7172 : { (JSJitGetterOp)set_onemptied },
7173 : { prototypes::id::Document },
7174 : { PrototypeTraits<prototypes::id::Document>::Depth },
7175 : JSJitInfo::Setter,
7176 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7177 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7178 : false, /* isInfallible. False in setters. */
7179 : false, /* isMovable. Not relevant for setters. */
7180 : false, /* isEliminatable. Not relevant for setters. */
7181 : false, /* isAlwaysInSlot. Only relevant for getters. */
7182 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7183 : false, /* isTypedMethod. Only relevant for methods. */
7184 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7185 : };
7186 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7187 : static_assert(0 < 1, "There is no slot for us");
7188 :
7189 : static bool
7190 0 : get_onended(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
7191 : {
7192 0 : RefPtr<EventHandlerNonNull> result(self->GetOnended());
7193 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7194 0 : if (result) {
7195 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7196 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7197 0 : return false;
7198 : }
7199 0 : return true;
7200 : } else {
7201 0 : args.rval().setNull();
7202 0 : return true;
7203 : }
7204 : }
7205 :
7206 : static bool
7207 0 : set_onended(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
7208 : {
7209 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7210 0 : if (args[0].isObject()) {
7211 : { // scope for tempRoot
7212 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7213 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7214 : }
7215 : } else {
7216 0 : arg0 = nullptr;
7217 : }
7218 0 : self->SetOnended(Constify(arg0));
7219 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7220 :
7221 0 : return true;
7222 : }
7223 :
7224 : static const JSJitInfo onended_getterinfo = {
7225 : { (JSJitGetterOp)get_onended },
7226 : { prototypes::id::Document },
7227 : { PrototypeTraits<prototypes::id::Document>::Depth },
7228 : JSJitInfo::Getter,
7229 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7230 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7231 : false, /* isInfallible. False in setters. */
7232 : false, /* isMovable. Not relevant for setters. */
7233 : false, /* isEliminatable. Not relevant for setters. */
7234 : false, /* isAlwaysInSlot. Only relevant for getters. */
7235 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7236 : false, /* isTypedMethod. Only relevant for methods. */
7237 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7238 : };
7239 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7240 : static_assert(0 < 1, "There is no slot for us");
7241 : static const JSJitInfo onended_setterinfo = {
7242 : { (JSJitGetterOp)set_onended },
7243 : { prototypes::id::Document },
7244 : { PrototypeTraits<prototypes::id::Document>::Depth },
7245 : JSJitInfo::Setter,
7246 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7247 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7248 : false, /* isInfallible. False in setters. */
7249 : false, /* isMovable. Not relevant for setters. */
7250 : false, /* isEliminatable. Not relevant for setters. */
7251 : false, /* isAlwaysInSlot. Only relevant for getters. */
7252 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7253 : false, /* isTypedMethod. Only relevant for methods. */
7254 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7255 : };
7256 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7257 : static_assert(0 < 1, "There is no slot for us");
7258 :
7259 : static bool
7260 0 : get_oninput(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
7261 : {
7262 0 : RefPtr<EventHandlerNonNull> result(self->GetOninput());
7263 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7264 0 : if (result) {
7265 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7266 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7267 0 : return false;
7268 : }
7269 0 : return true;
7270 : } else {
7271 0 : args.rval().setNull();
7272 0 : return true;
7273 : }
7274 : }
7275 :
7276 : static bool
7277 0 : set_oninput(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
7278 : {
7279 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7280 0 : if (args[0].isObject()) {
7281 : { // scope for tempRoot
7282 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7283 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7284 : }
7285 : } else {
7286 0 : arg0 = nullptr;
7287 : }
7288 0 : self->SetOninput(Constify(arg0));
7289 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7290 :
7291 0 : return true;
7292 : }
7293 :
7294 : static const JSJitInfo oninput_getterinfo = {
7295 : { (JSJitGetterOp)get_oninput },
7296 : { prototypes::id::Document },
7297 : { PrototypeTraits<prototypes::id::Document>::Depth },
7298 : JSJitInfo::Getter,
7299 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7300 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7301 : false, /* isInfallible. False in setters. */
7302 : false, /* isMovable. Not relevant for setters. */
7303 : false, /* isEliminatable. Not relevant for setters. */
7304 : false, /* isAlwaysInSlot. Only relevant for getters. */
7305 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7306 : false, /* isTypedMethod. Only relevant for methods. */
7307 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7308 : };
7309 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7310 : static_assert(0 < 1, "There is no slot for us");
7311 : static const JSJitInfo oninput_setterinfo = {
7312 : { (JSJitGetterOp)set_oninput },
7313 : { prototypes::id::Document },
7314 : { PrototypeTraits<prototypes::id::Document>::Depth },
7315 : JSJitInfo::Setter,
7316 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7317 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7318 : false, /* isInfallible. False in setters. */
7319 : false, /* isMovable. Not relevant for setters. */
7320 : false, /* isEliminatable. Not relevant for setters. */
7321 : false, /* isAlwaysInSlot. Only relevant for getters. */
7322 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7323 : false, /* isTypedMethod. Only relevant for methods. */
7324 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7325 : };
7326 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7327 : static_assert(0 < 1, "There is no slot for us");
7328 :
7329 : static bool
7330 0 : get_oninvalid(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
7331 : {
7332 0 : RefPtr<EventHandlerNonNull> result(self->GetOninvalid());
7333 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7334 0 : if (result) {
7335 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7336 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7337 0 : return false;
7338 : }
7339 0 : return true;
7340 : } else {
7341 0 : args.rval().setNull();
7342 0 : return true;
7343 : }
7344 : }
7345 :
7346 : static bool
7347 0 : set_oninvalid(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
7348 : {
7349 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7350 0 : if (args[0].isObject()) {
7351 : { // scope for tempRoot
7352 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7353 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7354 : }
7355 : } else {
7356 0 : arg0 = nullptr;
7357 : }
7358 0 : self->SetOninvalid(Constify(arg0));
7359 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7360 :
7361 0 : return true;
7362 : }
7363 :
7364 : static const JSJitInfo oninvalid_getterinfo = {
7365 : { (JSJitGetterOp)get_oninvalid },
7366 : { prototypes::id::Document },
7367 : { PrototypeTraits<prototypes::id::Document>::Depth },
7368 : JSJitInfo::Getter,
7369 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7370 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7371 : false, /* isInfallible. False in setters. */
7372 : false, /* isMovable. Not relevant for setters. */
7373 : false, /* isEliminatable. Not relevant for setters. */
7374 : false, /* isAlwaysInSlot. Only relevant for getters. */
7375 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7376 : false, /* isTypedMethod. Only relevant for methods. */
7377 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7378 : };
7379 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7380 : static_assert(0 < 1, "There is no slot for us");
7381 : static const JSJitInfo oninvalid_setterinfo = {
7382 : { (JSJitGetterOp)set_oninvalid },
7383 : { prototypes::id::Document },
7384 : { PrototypeTraits<prototypes::id::Document>::Depth },
7385 : JSJitInfo::Setter,
7386 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7387 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7388 : false, /* isInfallible. False in setters. */
7389 : false, /* isMovable. Not relevant for setters. */
7390 : false, /* isEliminatable. Not relevant for setters. */
7391 : false, /* isAlwaysInSlot. Only relevant for getters. */
7392 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7393 : false, /* isTypedMethod. Only relevant for methods. */
7394 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7395 : };
7396 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7397 : static_assert(0 < 1, "There is no slot for us");
7398 :
7399 : static bool
7400 0 : get_onkeydown(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
7401 : {
7402 0 : RefPtr<EventHandlerNonNull> result(self->GetOnkeydown());
7403 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7404 0 : if (result) {
7405 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7406 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7407 0 : return false;
7408 : }
7409 0 : return true;
7410 : } else {
7411 0 : args.rval().setNull();
7412 0 : return true;
7413 : }
7414 : }
7415 :
7416 : static bool
7417 0 : set_onkeydown(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
7418 : {
7419 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7420 0 : if (args[0].isObject()) {
7421 : { // scope for tempRoot
7422 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7423 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7424 : }
7425 : } else {
7426 0 : arg0 = nullptr;
7427 : }
7428 0 : self->SetOnkeydown(Constify(arg0));
7429 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7430 :
7431 0 : return true;
7432 : }
7433 :
7434 : static const JSJitInfo onkeydown_getterinfo = {
7435 : { (JSJitGetterOp)get_onkeydown },
7436 : { prototypes::id::Document },
7437 : { PrototypeTraits<prototypes::id::Document>::Depth },
7438 : JSJitInfo::Getter,
7439 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7440 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7441 : false, /* isInfallible. False in setters. */
7442 : false, /* isMovable. Not relevant for setters. */
7443 : false, /* isEliminatable. Not relevant for setters. */
7444 : false, /* isAlwaysInSlot. Only relevant for getters. */
7445 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7446 : false, /* isTypedMethod. Only relevant for methods. */
7447 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7448 : };
7449 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7450 : static_assert(0 < 1, "There is no slot for us");
7451 : static const JSJitInfo onkeydown_setterinfo = {
7452 : { (JSJitGetterOp)set_onkeydown },
7453 : { prototypes::id::Document },
7454 : { PrototypeTraits<prototypes::id::Document>::Depth },
7455 : JSJitInfo::Setter,
7456 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7457 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7458 : false, /* isInfallible. False in setters. */
7459 : false, /* isMovable. Not relevant for setters. */
7460 : false, /* isEliminatable. Not relevant for setters. */
7461 : false, /* isAlwaysInSlot. Only relevant for getters. */
7462 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7463 : false, /* isTypedMethod. Only relevant for methods. */
7464 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7465 : };
7466 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7467 : static_assert(0 < 1, "There is no slot for us");
7468 :
7469 : static bool
7470 0 : get_onkeypress(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
7471 : {
7472 0 : RefPtr<EventHandlerNonNull> result(self->GetOnkeypress());
7473 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7474 0 : if (result) {
7475 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7476 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7477 0 : return false;
7478 : }
7479 0 : return true;
7480 : } else {
7481 0 : args.rval().setNull();
7482 0 : return true;
7483 : }
7484 : }
7485 :
7486 : static bool
7487 0 : set_onkeypress(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
7488 : {
7489 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7490 0 : if (args[0].isObject()) {
7491 : { // scope for tempRoot
7492 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7493 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7494 : }
7495 : } else {
7496 0 : arg0 = nullptr;
7497 : }
7498 0 : self->SetOnkeypress(Constify(arg0));
7499 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7500 :
7501 0 : return true;
7502 : }
7503 :
7504 : static const JSJitInfo onkeypress_getterinfo = {
7505 : { (JSJitGetterOp)get_onkeypress },
7506 : { prototypes::id::Document },
7507 : { PrototypeTraits<prototypes::id::Document>::Depth },
7508 : JSJitInfo::Getter,
7509 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7510 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7511 : false, /* isInfallible. False in setters. */
7512 : false, /* isMovable. Not relevant for setters. */
7513 : false, /* isEliminatable. Not relevant for setters. */
7514 : false, /* isAlwaysInSlot. Only relevant for getters. */
7515 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7516 : false, /* isTypedMethod. Only relevant for methods. */
7517 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7518 : };
7519 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7520 : static_assert(0 < 1, "There is no slot for us");
7521 : static const JSJitInfo onkeypress_setterinfo = {
7522 : { (JSJitGetterOp)set_onkeypress },
7523 : { prototypes::id::Document },
7524 : { PrototypeTraits<prototypes::id::Document>::Depth },
7525 : JSJitInfo::Setter,
7526 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7527 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7528 : false, /* isInfallible. False in setters. */
7529 : false, /* isMovable. Not relevant for setters. */
7530 : false, /* isEliminatable. Not relevant for setters. */
7531 : false, /* isAlwaysInSlot. Only relevant for getters. */
7532 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7533 : false, /* isTypedMethod. Only relevant for methods. */
7534 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7535 : };
7536 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7537 : static_assert(0 < 1, "There is no slot for us");
7538 :
7539 : static bool
7540 0 : get_onkeyup(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
7541 : {
7542 0 : RefPtr<EventHandlerNonNull> result(self->GetOnkeyup());
7543 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7544 0 : if (result) {
7545 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7546 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7547 0 : return false;
7548 : }
7549 0 : return true;
7550 : } else {
7551 0 : args.rval().setNull();
7552 0 : return true;
7553 : }
7554 : }
7555 :
7556 : static bool
7557 0 : set_onkeyup(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
7558 : {
7559 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7560 0 : if (args[0].isObject()) {
7561 : { // scope for tempRoot
7562 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7563 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7564 : }
7565 : } else {
7566 0 : arg0 = nullptr;
7567 : }
7568 0 : self->SetOnkeyup(Constify(arg0));
7569 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7570 :
7571 0 : return true;
7572 : }
7573 :
7574 : static const JSJitInfo onkeyup_getterinfo = {
7575 : { (JSJitGetterOp)get_onkeyup },
7576 : { prototypes::id::Document },
7577 : { PrototypeTraits<prototypes::id::Document>::Depth },
7578 : JSJitInfo::Getter,
7579 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7580 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7581 : false, /* isInfallible. False in setters. */
7582 : false, /* isMovable. Not relevant for setters. */
7583 : false, /* isEliminatable. Not relevant for setters. */
7584 : false, /* isAlwaysInSlot. Only relevant for getters. */
7585 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7586 : false, /* isTypedMethod. Only relevant for methods. */
7587 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7588 : };
7589 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7590 : static_assert(0 < 1, "There is no slot for us");
7591 : static const JSJitInfo onkeyup_setterinfo = {
7592 : { (JSJitGetterOp)set_onkeyup },
7593 : { prototypes::id::Document },
7594 : { PrototypeTraits<prototypes::id::Document>::Depth },
7595 : JSJitInfo::Setter,
7596 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7597 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7598 : false, /* isInfallible. False in setters. */
7599 : false, /* isMovable. Not relevant for setters. */
7600 : false, /* isEliminatable. Not relevant for setters. */
7601 : false, /* isAlwaysInSlot. Only relevant for getters. */
7602 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7603 : false, /* isTypedMethod. Only relevant for methods. */
7604 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7605 : };
7606 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7607 : static_assert(0 < 1, "There is no slot for us");
7608 :
7609 : static bool
7610 0 : get_onload(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
7611 : {
7612 0 : RefPtr<EventHandlerNonNull> result(self->GetOnload());
7613 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7614 0 : if (result) {
7615 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7616 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7617 0 : return false;
7618 : }
7619 0 : return true;
7620 : } else {
7621 0 : args.rval().setNull();
7622 0 : return true;
7623 : }
7624 : }
7625 :
7626 : static bool
7627 0 : set_onload(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
7628 : {
7629 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7630 0 : if (args[0].isObject()) {
7631 : { // scope for tempRoot
7632 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7633 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7634 : }
7635 : } else {
7636 0 : arg0 = nullptr;
7637 : }
7638 0 : self->SetOnload(Constify(arg0));
7639 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7640 :
7641 0 : return true;
7642 : }
7643 :
7644 : static const JSJitInfo onload_getterinfo = {
7645 : { (JSJitGetterOp)get_onload },
7646 : { prototypes::id::Document },
7647 : { PrototypeTraits<prototypes::id::Document>::Depth },
7648 : JSJitInfo::Getter,
7649 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7650 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7651 : false, /* isInfallible. False in setters. */
7652 : false, /* isMovable. Not relevant for setters. */
7653 : false, /* isEliminatable. Not relevant for setters. */
7654 : false, /* isAlwaysInSlot. Only relevant for getters. */
7655 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7656 : false, /* isTypedMethod. Only relevant for methods. */
7657 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7658 : };
7659 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7660 : static_assert(0 < 1, "There is no slot for us");
7661 : static const JSJitInfo onload_setterinfo = {
7662 : { (JSJitGetterOp)set_onload },
7663 : { prototypes::id::Document },
7664 : { PrototypeTraits<prototypes::id::Document>::Depth },
7665 : JSJitInfo::Setter,
7666 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7667 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7668 : false, /* isInfallible. False in setters. */
7669 : false, /* isMovable. Not relevant for setters. */
7670 : false, /* isEliminatable. Not relevant for setters. */
7671 : false, /* isAlwaysInSlot. Only relevant for getters. */
7672 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7673 : false, /* isTypedMethod. Only relevant for methods. */
7674 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7675 : };
7676 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7677 : static_assert(0 < 1, "There is no slot for us");
7678 :
7679 : static bool
7680 0 : get_onloadeddata(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
7681 : {
7682 0 : RefPtr<EventHandlerNonNull> result(self->GetOnloadeddata());
7683 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7684 0 : if (result) {
7685 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7686 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7687 0 : return false;
7688 : }
7689 0 : return true;
7690 : } else {
7691 0 : args.rval().setNull();
7692 0 : return true;
7693 : }
7694 : }
7695 :
7696 : static bool
7697 0 : set_onloadeddata(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
7698 : {
7699 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7700 0 : if (args[0].isObject()) {
7701 : { // scope for tempRoot
7702 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7703 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7704 : }
7705 : } else {
7706 0 : arg0 = nullptr;
7707 : }
7708 0 : self->SetOnloadeddata(Constify(arg0));
7709 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7710 :
7711 0 : return true;
7712 : }
7713 :
7714 : static const JSJitInfo onloadeddata_getterinfo = {
7715 : { (JSJitGetterOp)get_onloadeddata },
7716 : { prototypes::id::Document },
7717 : { PrototypeTraits<prototypes::id::Document>::Depth },
7718 : JSJitInfo::Getter,
7719 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7720 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7721 : false, /* isInfallible. False in setters. */
7722 : false, /* isMovable. Not relevant for setters. */
7723 : false, /* isEliminatable. Not relevant for setters. */
7724 : false, /* isAlwaysInSlot. Only relevant for getters. */
7725 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7726 : false, /* isTypedMethod. Only relevant for methods. */
7727 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7728 : };
7729 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7730 : static_assert(0 < 1, "There is no slot for us");
7731 : static const JSJitInfo onloadeddata_setterinfo = {
7732 : { (JSJitGetterOp)set_onloadeddata },
7733 : { prototypes::id::Document },
7734 : { PrototypeTraits<prototypes::id::Document>::Depth },
7735 : JSJitInfo::Setter,
7736 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7737 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7738 : false, /* isInfallible. False in setters. */
7739 : false, /* isMovable. Not relevant for setters. */
7740 : false, /* isEliminatable. Not relevant for setters. */
7741 : false, /* isAlwaysInSlot. Only relevant for getters. */
7742 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7743 : false, /* isTypedMethod. Only relevant for methods. */
7744 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7745 : };
7746 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7747 : static_assert(0 < 1, "There is no slot for us");
7748 :
7749 : static bool
7750 0 : get_onloadedmetadata(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
7751 : {
7752 0 : RefPtr<EventHandlerNonNull> result(self->GetOnloadedmetadata());
7753 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7754 0 : if (result) {
7755 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7756 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7757 0 : return false;
7758 : }
7759 0 : return true;
7760 : } else {
7761 0 : args.rval().setNull();
7762 0 : return true;
7763 : }
7764 : }
7765 :
7766 : static bool
7767 0 : set_onloadedmetadata(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
7768 : {
7769 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7770 0 : if (args[0].isObject()) {
7771 : { // scope for tempRoot
7772 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7773 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7774 : }
7775 : } else {
7776 0 : arg0 = nullptr;
7777 : }
7778 0 : self->SetOnloadedmetadata(Constify(arg0));
7779 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7780 :
7781 0 : return true;
7782 : }
7783 :
7784 : static const JSJitInfo onloadedmetadata_getterinfo = {
7785 : { (JSJitGetterOp)get_onloadedmetadata },
7786 : { prototypes::id::Document },
7787 : { PrototypeTraits<prototypes::id::Document>::Depth },
7788 : JSJitInfo::Getter,
7789 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7790 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7791 : false, /* isInfallible. False in setters. */
7792 : false, /* isMovable. Not relevant for setters. */
7793 : false, /* isEliminatable. Not relevant for setters. */
7794 : false, /* isAlwaysInSlot. Only relevant for getters. */
7795 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7796 : false, /* isTypedMethod. Only relevant for methods. */
7797 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7798 : };
7799 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7800 : static_assert(0 < 1, "There is no slot for us");
7801 : static const JSJitInfo onloadedmetadata_setterinfo = {
7802 : { (JSJitGetterOp)set_onloadedmetadata },
7803 : { prototypes::id::Document },
7804 : { PrototypeTraits<prototypes::id::Document>::Depth },
7805 : JSJitInfo::Setter,
7806 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7807 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7808 : false, /* isInfallible. False in setters. */
7809 : false, /* isMovable. Not relevant for setters. */
7810 : false, /* isEliminatable. Not relevant for setters. */
7811 : false, /* isAlwaysInSlot. Only relevant for getters. */
7812 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7813 : false, /* isTypedMethod. Only relevant for methods. */
7814 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7815 : };
7816 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7817 : static_assert(0 < 1, "There is no slot for us");
7818 :
7819 : static bool
7820 0 : get_onloadend(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
7821 : {
7822 0 : RefPtr<EventHandlerNonNull> result(self->GetOnloadend());
7823 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7824 0 : if (result) {
7825 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7826 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7827 0 : return false;
7828 : }
7829 0 : return true;
7830 : } else {
7831 0 : args.rval().setNull();
7832 0 : return true;
7833 : }
7834 : }
7835 :
7836 : static bool
7837 0 : set_onloadend(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
7838 : {
7839 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7840 0 : if (args[0].isObject()) {
7841 : { // scope for tempRoot
7842 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7843 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7844 : }
7845 : } else {
7846 0 : arg0 = nullptr;
7847 : }
7848 0 : self->SetOnloadend(Constify(arg0));
7849 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7850 :
7851 0 : return true;
7852 : }
7853 :
7854 : static const JSJitInfo onloadend_getterinfo = {
7855 : { (JSJitGetterOp)get_onloadend },
7856 : { prototypes::id::Document },
7857 : { PrototypeTraits<prototypes::id::Document>::Depth },
7858 : JSJitInfo::Getter,
7859 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7860 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7861 : false, /* isInfallible. False in setters. */
7862 : false, /* isMovable. Not relevant for setters. */
7863 : false, /* isEliminatable. Not relevant for setters. */
7864 : false, /* isAlwaysInSlot. Only relevant for getters. */
7865 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7866 : false, /* isTypedMethod. Only relevant for methods. */
7867 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7868 : };
7869 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7870 : static_assert(0 < 1, "There is no slot for us");
7871 : static const JSJitInfo onloadend_setterinfo = {
7872 : { (JSJitGetterOp)set_onloadend },
7873 : { prototypes::id::Document },
7874 : { PrototypeTraits<prototypes::id::Document>::Depth },
7875 : JSJitInfo::Setter,
7876 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7877 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7878 : false, /* isInfallible. False in setters. */
7879 : false, /* isMovable. Not relevant for setters. */
7880 : false, /* isEliminatable. Not relevant for setters. */
7881 : false, /* isAlwaysInSlot. Only relevant for getters. */
7882 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7883 : false, /* isTypedMethod. Only relevant for methods. */
7884 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7885 : };
7886 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7887 : static_assert(0 < 1, "There is no slot for us");
7888 :
7889 : static bool
7890 0 : get_onloadstart(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
7891 : {
7892 0 : RefPtr<EventHandlerNonNull> result(self->GetOnloadstart());
7893 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7894 0 : if (result) {
7895 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7896 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7897 0 : return false;
7898 : }
7899 0 : return true;
7900 : } else {
7901 0 : args.rval().setNull();
7902 0 : return true;
7903 : }
7904 : }
7905 :
7906 : static bool
7907 0 : set_onloadstart(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
7908 : {
7909 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7910 0 : if (args[0].isObject()) {
7911 : { // scope for tempRoot
7912 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7913 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7914 : }
7915 : } else {
7916 0 : arg0 = nullptr;
7917 : }
7918 0 : self->SetOnloadstart(Constify(arg0));
7919 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7920 :
7921 0 : return true;
7922 : }
7923 :
7924 : static const JSJitInfo onloadstart_getterinfo = {
7925 : { (JSJitGetterOp)get_onloadstart },
7926 : { prototypes::id::Document },
7927 : { PrototypeTraits<prototypes::id::Document>::Depth },
7928 : JSJitInfo::Getter,
7929 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7930 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
7931 : false, /* isInfallible. False in setters. */
7932 : false, /* isMovable. Not relevant for setters. */
7933 : false, /* isEliminatable. Not relevant for setters. */
7934 : false, /* isAlwaysInSlot. Only relevant for getters. */
7935 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7936 : false, /* isTypedMethod. Only relevant for methods. */
7937 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7938 : };
7939 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7940 : static_assert(0 < 1, "There is no slot for us");
7941 : static const JSJitInfo onloadstart_setterinfo = {
7942 : { (JSJitGetterOp)set_onloadstart },
7943 : { prototypes::id::Document },
7944 : { PrototypeTraits<prototypes::id::Document>::Depth },
7945 : JSJitInfo::Setter,
7946 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
7947 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
7948 : false, /* isInfallible. False in setters. */
7949 : false, /* isMovable. Not relevant for setters. */
7950 : false, /* isEliminatable. Not relevant for setters. */
7951 : false, /* isAlwaysInSlot. Only relevant for getters. */
7952 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
7953 : false, /* isTypedMethod. Only relevant for methods. */
7954 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
7955 : };
7956 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
7957 : static_assert(0 < 1, "There is no slot for us");
7958 :
7959 : static bool
7960 0 : get_onmousedown(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
7961 : {
7962 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmousedown());
7963 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7964 0 : if (result) {
7965 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
7966 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
7967 0 : return false;
7968 : }
7969 0 : return true;
7970 : } else {
7971 0 : args.rval().setNull();
7972 0 : return true;
7973 : }
7974 : }
7975 :
7976 : static bool
7977 0 : set_onmousedown(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
7978 : {
7979 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
7980 0 : if (args[0].isObject()) {
7981 : { // scope for tempRoot
7982 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
7983 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
7984 : }
7985 : } else {
7986 0 : arg0 = nullptr;
7987 : }
7988 0 : self->SetOnmousedown(Constify(arg0));
7989 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
7990 :
7991 0 : return true;
7992 : }
7993 :
7994 : static const JSJitInfo onmousedown_getterinfo = {
7995 : { (JSJitGetterOp)get_onmousedown },
7996 : { prototypes::id::Document },
7997 : { PrototypeTraits<prototypes::id::Document>::Depth },
7998 : JSJitInfo::Getter,
7999 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8000 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8001 : false, /* isInfallible. False in setters. */
8002 : false, /* isMovable. Not relevant for setters. */
8003 : false, /* isEliminatable. Not relevant for setters. */
8004 : false, /* isAlwaysInSlot. Only relevant for getters. */
8005 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8006 : false, /* isTypedMethod. Only relevant for methods. */
8007 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8008 : };
8009 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8010 : static_assert(0 < 1, "There is no slot for us");
8011 : static const JSJitInfo onmousedown_setterinfo = {
8012 : { (JSJitGetterOp)set_onmousedown },
8013 : { prototypes::id::Document },
8014 : { PrototypeTraits<prototypes::id::Document>::Depth },
8015 : JSJitInfo::Setter,
8016 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8017 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8018 : false, /* isInfallible. False in setters. */
8019 : false, /* isMovable. Not relevant for setters. */
8020 : false, /* isEliminatable. Not relevant for setters. */
8021 : false, /* isAlwaysInSlot. Only relevant for getters. */
8022 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8023 : false, /* isTypedMethod. Only relevant for methods. */
8024 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8025 : };
8026 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8027 : static_assert(0 < 1, "There is no slot for us");
8028 :
8029 : static bool
8030 0 : get_onmouseenter(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
8031 : {
8032 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmouseenter());
8033 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8034 0 : if (result) {
8035 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
8036 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
8037 0 : return false;
8038 : }
8039 0 : return true;
8040 : } else {
8041 0 : args.rval().setNull();
8042 0 : return true;
8043 : }
8044 : }
8045 :
8046 : static bool
8047 0 : set_onmouseenter(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
8048 : {
8049 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
8050 0 : if (args[0].isObject()) {
8051 : { // scope for tempRoot
8052 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
8053 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
8054 : }
8055 : } else {
8056 0 : arg0 = nullptr;
8057 : }
8058 0 : self->SetOnmouseenter(Constify(arg0));
8059 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8060 :
8061 0 : return true;
8062 : }
8063 :
8064 : static const JSJitInfo onmouseenter_getterinfo = {
8065 : { (JSJitGetterOp)get_onmouseenter },
8066 : { prototypes::id::Document },
8067 : { PrototypeTraits<prototypes::id::Document>::Depth },
8068 : JSJitInfo::Getter,
8069 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8070 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8071 : false, /* isInfallible. False in setters. */
8072 : false, /* isMovable. Not relevant for setters. */
8073 : false, /* isEliminatable. Not relevant for setters. */
8074 : false, /* isAlwaysInSlot. Only relevant for getters. */
8075 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8076 : false, /* isTypedMethod. Only relevant for methods. */
8077 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8078 : };
8079 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8080 : static_assert(0 < 1, "There is no slot for us");
8081 : static const JSJitInfo onmouseenter_setterinfo = {
8082 : { (JSJitGetterOp)set_onmouseenter },
8083 : { prototypes::id::Document },
8084 : { PrototypeTraits<prototypes::id::Document>::Depth },
8085 : JSJitInfo::Setter,
8086 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8087 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8088 : false, /* isInfallible. False in setters. */
8089 : false, /* isMovable. Not relevant for setters. */
8090 : false, /* isEliminatable. Not relevant for setters. */
8091 : false, /* isAlwaysInSlot. Only relevant for getters. */
8092 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8093 : false, /* isTypedMethod. Only relevant for methods. */
8094 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8095 : };
8096 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8097 : static_assert(0 < 1, "There is no slot for us");
8098 :
8099 : static bool
8100 0 : get_onmouseleave(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
8101 : {
8102 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmouseleave());
8103 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8104 0 : if (result) {
8105 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
8106 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
8107 0 : return false;
8108 : }
8109 0 : return true;
8110 : } else {
8111 0 : args.rval().setNull();
8112 0 : return true;
8113 : }
8114 : }
8115 :
8116 : static bool
8117 0 : set_onmouseleave(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
8118 : {
8119 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
8120 0 : if (args[0].isObject()) {
8121 : { // scope for tempRoot
8122 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
8123 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
8124 : }
8125 : } else {
8126 0 : arg0 = nullptr;
8127 : }
8128 0 : self->SetOnmouseleave(Constify(arg0));
8129 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8130 :
8131 0 : return true;
8132 : }
8133 :
8134 : static const JSJitInfo onmouseleave_getterinfo = {
8135 : { (JSJitGetterOp)get_onmouseleave },
8136 : { prototypes::id::Document },
8137 : { PrototypeTraits<prototypes::id::Document>::Depth },
8138 : JSJitInfo::Getter,
8139 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8140 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8141 : false, /* isInfallible. False in setters. */
8142 : false, /* isMovable. Not relevant for setters. */
8143 : false, /* isEliminatable. Not relevant for setters. */
8144 : false, /* isAlwaysInSlot. Only relevant for getters. */
8145 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8146 : false, /* isTypedMethod. Only relevant for methods. */
8147 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8148 : };
8149 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8150 : static_assert(0 < 1, "There is no slot for us");
8151 : static const JSJitInfo onmouseleave_setterinfo = {
8152 : { (JSJitGetterOp)set_onmouseleave },
8153 : { prototypes::id::Document },
8154 : { PrototypeTraits<prototypes::id::Document>::Depth },
8155 : JSJitInfo::Setter,
8156 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8157 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8158 : false, /* isInfallible. False in setters. */
8159 : false, /* isMovable. Not relevant for setters. */
8160 : false, /* isEliminatable. Not relevant for setters. */
8161 : false, /* isAlwaysInSlot. Only relevant for getters. */
8162 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8163 : false, /* isTypedMethod. Only relevant for methods. */
8164 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8165 : };
8166 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8167 : static_assert(0 < 1, "There is no slot for us");
8168 :
8169 : static bool
8170 0 : get_onmousemove(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
8171 : {
8172 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmousemove());
8173 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8174 0 : if (result) {
8175 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
8176 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
8177 0 : return false;
8178 : }
8179 0 : return true;
8180 : } else {
8181 0 : args.rval().setNull();
8182 0 : return true;
8183 : }
8184 : }
8185 :
8186 : static bool
8187 0 : set_onmousemove(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
8188 : {
8189 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
8190 0 : if (args[0].isObject()) {
8191 : { // scope for tempRoot
8192 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
8193 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
8194 : }
8195 : } else {
8196 0 : arg0 = nullptr;
8197 : }
8198 0 : self->SetOnmousemove(Constify(arg0));
8199 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8200 :
8201 0 : return true;
8202 : }
8203 :
8204 : static const JSJitInfo onmousemove_getterinfo = {
8205 : { (JSJitGetterOp)get_onmousemove },
8206 : { prototypes::id::Document },
8207 : { PrototypeTraits<prototypes::id::Document>::Depth },
8208 : JSJitInfo::Getter,
8209 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8210 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8211 : false, /* isInfallible. False in setters. */
8212 : false, /* isMovable. Not relevant for setters. */
8213 : false, /* isEliminatable. Not relevant for setters. */
8214 : false, /* isAlwaysInSlot. Only relevant for getters. */
8215 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8216 : false, /* isTypedMethod. Only relevant for methods. */
8217 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8218 : };
8219 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8220 : static_assert(0 < 1, "There is no slot for us");
8221 : static const JSJitInfo onmousemove_setterinfo = {
8222 : { (JSJitGetterOp)set_onmousemove },
8223 : { prototypes::id::Document },
8224 : { PrototypeTraits<prototypes::id::Document>::Depth },
8225 : JSJitInfo::Setter,
8226 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8227 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8228 : false, /* isInfallible. False in setters. */
8229 : false, /* isMovable. Not relevant for setters. */
8230 : false, /* isEliminatable. Not relevant for setters. */
8231 : false, /* isAlwaysInSlot. Only relevant for getters. */
8232 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8233 : false, /* isTypedMethod. Only relevant for methods. */
8234 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8235 : };
8236 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8237 : static_assert(0 < 1, "There is no slot for us");
8238 :
8239 : static bool
8240 0 : get_onmouseout(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
8241 : {
8242 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmouseout());
8243 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8244 0 : if (result) {
8245 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
8246 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
8247 0 : return false;
8248 : }
8249 0 : return true;
8250 : } else {
8251 0 : args.rval().setNull();
8252 0 : return true;
8253 : }
8254 : }
8255 :
8256 : static bool
8257 0 : set_onmouseout(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
8258 : {
8259 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
8260 0 : if (args[0].isObject()) {
8261 : { // scope for tempRoot
8262 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
8263 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
8264 : }
8265 : } else {
8266 0 : arg0 = nullptr;
8267 : }
8268 0 : self->SetOnmouseout(Constify(arg0));
8269 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8270 :
8271 0 : return true;
8272 : }
8273 :
8274 : static const JSJitInfo onmouseout_getterinfo = {
8275 : { (JSJitGetterOp)get_onmouseout },
8276 : { prototypes::id::Document },
8277 : { PrototypeTraits<prototypes::id::Document>::Depth },
8278 : JSJitInfo::Getter,
8279 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8280 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8281 : false, /* isInfallible. False in setters. */
8282 : false, /* isMovable. Not relevant for setters. */
8283 : false, /* isEliminatable. Not relevant for setters. */
8284 : false, /* isAlwaysInSlot. Only relevant for getters. */
8285 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8286 : false, /* isTypedMethod. Only relevant for methods. */
8287 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8288 : };
8289 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8290 : static_assert(0 < 1, "There is no slot for us");
8291 : static const JSJitInfo onmouseout_setterinfo = {
8292 : { (JSJitGetterOp)set_onmouseout },
8293 : { prototypes::id::Document },
8294 : { PrototypeTraits<prototypes::id::Document>::Depth },
8295 : JSJitInfo::Setter,
8296 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8297 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8298 : false, /* isInfallible. False in setters. */
8299 : false, /* isMovable. Not relevant for setters. */
8300 : false, /* isEliminatable. Not relevant for setters. */
8301 : false, /* isAlwaysInSlot. Only relevant for getters. */
8302 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8303 : false, /* isTypedMethod. Only relevant for methods. */
8304 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8305 : };
8306 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8307 : static_assert(0 < 1, "There is no slot for us");
8308 :
8309 : static bool
8310 0 : get_onmouseover(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
8311 : {
8312 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmouseover());
8313 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8314 0 : if (result) {
8315 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
8316 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
8317 0 : return false;
8318 : }
8319 0 : return true;
8320 : } else {
8321 0 : args.rval().setNull();
8322 0 : return true;
8323 : }
8324 : }
8325 :
8326 : static bool
8327 0 : set_onmouseover(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
8328 : {
8329 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
8330 0 : if (args[0].isObject()) {
8331 : { // scope for tempRoot
8332 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
8333 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
8334 : }
8335 : } else {
8336 0 : arg0 = nullptr;
8337 : }
8338 0 : self->SetOnmouseover(Constify(arg0));
8339 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8340 :
8341 0 : return true;
8342 : }
8343 :
8344 : static const JSJitInfo onmouseover_getterinfo = {
8345 : { (JSJitGetterOp)get_onmouseover },
8346 : { prototypes::id::Document },
8347 : { PrototypeTraits<prototypes::id::Document>::Depth },
8348 : JSJitInfo::Getter,
8349 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8350 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8351 : false, /* isInfallible. False in setters. */
8352 : false, /* isMovable. Not relevant for setters. */
8353 : false, /* isEliminatable. Not relevant for setters. */
8354 : false, /* isAlwaysInSlot. Only relevant for getters. */
8355 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8356 : false, /* isTypedMethod. Only relevant for methods. */
8357 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8358 : };
8359 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8360 : static_assert(0 < 1, "There is no slot for us");
8361 : static const JSJitInfo onmouseover_setterinfo = {
8362 : { (JSJitGetterOp)set_onmouseover },
8363 : { prototypes::id::Document },
8364 : { PrototypeTraits<prototypes::id::Document>::Depth },
8365 : JSJitInfo::Setter,
8366 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8367 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8368 : false, /* isInfallible. False in setters. */
8369 : false, /* isMovable. Not relevant for setters. */
8370 : false, /* isEliminatable. Not relevant for setters. */
8371 : false, /* isAlwaysInSlot. Only relevant for getters. */
8372 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8373 : false, /* isTypedMethod. Only relevant for methods. */
8374 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8375 : };
8376 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8377 : static_assert(0 < 1, "There is no slot for us");
8378 :
8379 : static bool
8380 0 : get_onmouseup(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
8381 : {
8382 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmouseup());
8383 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8384 0 : if (result) {
8385 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
8386 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
8387 0 : return false;
8388 : }
8389 0 : return true;
8390 : } else {
8391 0 : args.rval().setNull();
8392 0 : return true;
8393 : }
8394 : }
8395 :
8396 : static bool
8397 0 : set_onmouseup(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
8398 : {
8399 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
8400 0 : if (args[0].isObject()) {
8401 : { // scope for tempRoot
8402 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
8403 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
8404 : }
8405 : } else {
8406 0 : arg0 = nullptr;
8407 : }
8408 0 : self->SetOnmouseup(Constify(arg0));
8409 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8410 :
8411 0 : return true;
8412 : }
8413 :
8414 : static const JSJitInfo onmouseup_getterinfo = {
8415 : { (JSJitGetterOp)get_onmouseup },
8416 : { prototypes::id::Document },
8417 : { PrototypeTraits<prototypes::id::Document>::Depth },
8418 : JSJitInfo::Getter,
8419 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8420 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8421 : false, /* isInfallible. False in setters. */
8422 : false, /* isMovable. Not relevant for setters. */
8423 : false, /* isEliminatable. Not relevant for setters. */
8424 : false, /* isAlwaysInSlot. Only relevant for getters. */
8425 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8426 : false, /* isTypedMethod. Only relevant for methods. */
8427 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8428 : };
8429 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8430 : static_assert(0 < 1, "There is no slot for us");
8431 : static const JSJitInfo onmouseup_setterinfo = {
8432 : { (JSJitGetterOp)set_onmouseup },
8433 : { prototypes::id::Document },
8434 : { PrototypeTraits<prototypes::id::Document>::Depth },
8435 : JSJitInfo::Setter,
8436 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8437 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8438 : false, /* isInfallible. False in setters. */
8439 : false, /* isMovable. Not relevant for setters. */
8440 : false, /* isEliminatable. Not relevant for setters. */
8441 : false, /* isAlwaysInSlot. Only relevant for getters. */
8442 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8443 : false, /* isTypedMethod. Only relevant for methods. */
8444 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8445 : };
8446 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8447 : static_assert(0 < 1, "There is no slot for us");
8448 :
8449 : static bool
8450 0 : get_onwheel(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
8451 : {
8452 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwheel());
8453 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8454 0 : if (result) {
8455 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
8456 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
8457 0 : return false;
8458 : }
8459 0 : return true;
8460 : } else {
8461 0 : args.rval().setNull();
8462 0 : return true;
8463 : }
8464 : }
8465 :
8466 : static bool
8467 0 : set_onwheel(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
8468 : {
8469 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
8470 0 : if (args[0].isObject()) {
8471 : { // scope for tempRoot
8472 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
8473 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
8474 : }
8475 : } else {
8476 0 : arg0 = nullptr;
8477 : }
8478 0 : self->SetOnwheel(Constify(arg0));
8479 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8480 :
8481 0 : return true;
8482 : }
8483 :
8484 : static const JSJitInfo onwheel_getterinfo = {
8485 : { (JSJitGetterOp)get_onwheel },
8486 : { prototypes::id::Document },
8487 : { PrototypeTraits<prototypes::id::Document>::Depth },
8488 : JSJitInfo::Getter,
8489 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8490 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8491 : false, /* isInfallible. False in setters. */
8492 : false, /* isMovable. Not relevant for setters. */
8493 : false, /* isEliminatable. Not relevant for setters. */
8494 : false, /* isAlwaysInSlot. Only relevant for getters. */
8495 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8496 : false, /* isTypedMethod. Only relevant for methods. */
8497 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8498 : };
8499 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8500 : static_assert(0 < 1, "There is no slot for us");
8501 : static const JSJitInfo onwheel_setterinfo = {
8502 : { (JSJitGetterOp)set_onwheel },
8503 : { prototypes::id::Document },
8504 : { PrototypeTraits<prototypes::id::Document>::Depth },
8505 : JSJitInfo::Setter,
8506 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8507 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8508 : false, /* isInfallible. False in setters. */
8509 : false, /* isMovable. Not relevant for setters. */
8510 : false, /* isEliminatable. Not relevant for setters. */
8511 : false, /* isAlwaysInSlot. Only relevant for getters. */
8512 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8513 : false, /* isTypedMethod. Only relevant for methods. */
8514 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8515 : };
8516 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8517 : static_assert(0 < 1, "There is no slot for us");
8518 :
8519 : static bool
8520 0 : get_onpause(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
8521 : {
8522 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpause());
8523 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8524 0 : if (result) {
8525 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
8526 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
8527 0 : return false;
8528 : }
8529 0 : return true;
8530 : } else {
8531 0 : args.rval().setNull();
8532 0 : return true;
8533 : }
8534 : }
8535 :
8536 : static bool
8537 0 : set_onpause(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
8538 : {
8539 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
8540 0 : if (args[0].isObject()) {
8541 : { // scope for tempRoot
8542 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
8543 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
8544 : }
8545 : } else {
8546 0 : arg0 = nullptr;
8547 : }
8548 0 : self->SetOnpause(Constify(arg0));
8549 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8550 :
8551 0 : return true;
8552 : }
8553 :
8554 : static const JSJitInfo onpause_getterinfo = {
8555 : { (JSJitGetterOp)get_onpause },
8556 : { prototypes::id::Document },
8557 : { PrototypeTraits<prototypes::id::Document>::Depth },
8558 : JSJitInfo::Getter,
8559 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8560 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8561 : false, /* isInfallible. False in setters. */
8562 : false, /* isMovable. Not relevant for setters. */
8563 : false, /* isEliminatable. Not relevant for setters. */
8564 : false, /* isAlwaysInSlot. Only relevant for getters. */
8565 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8566 : false, /* isTypedMethod. Only relevant for methods. */
8567 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8568 : };
8569 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8570 : static_assert(0 < 1, "There is no slot for us");
8571 : static const JSJitInfo onpause_setterinfo = {
8572 : { (JSJitGetterOp)set_onpause },
8573 : { prototypes::id::Document },
8574 : { PrototypeTraits<prototypes::id::Document>::Depth },
8575 : JSJitInfo::Setter,
8576 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8577 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8578 : false, /* isInfallible. False in setters. */
8579 : false, /* isMovable. Not relevant for setters. */
8580 : false, /* isEliminatable. Not relevant for setters. */
8581 : false, /* isAlwaysInSlot. Only relevant for getters. */
8582 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8583 : false, /* isTypedMethod. Only relevant for methods. */
8584 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8585 : };
8586 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8587 : static_assert(0 < 1, "There is no slot for us");
8588 :
8589 : static bool
8590 0 : get_onplay(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
8591 : {
8592 0 : RefPtr<EventHandlerNonNull> result(self->GetOnplay());
8593 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8594 0 : if (result) {
8595 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
8596 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
8597 0 : return false;
8598 : }
8599 0 : return true;
8600 : } else {
8601 0 : args.rval().setNull();
8602 0 : return true;
8603 : }
8604 : }
8605 :
8606 : static bool
8607 0 : set_onplay(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
8608 : {
8609 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
8610 0 : if (args[0].isObject()) {
8611 : { // scope for tempRoot
8612 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
8613 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
8614 : }
8615 : } else {
8616 0 : arg0 = nullptr;
8617 : }
8618 0 : self->SetOnplay(Constify(arg0));
8619 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8620 :
8621 0 : return true;
8622 : }
8623 :
8624 : static const JSJitInfo onplay_getterinfo = {
8625 : { (JSJitGetterOp)get_onplay },
8626 : { prototypes::id::Document },
8627 : { PrototypeTraits<prototypes::id::Document>::Depth },
8628 : JSJitInfo::Getter,
8629 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8630 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8631 : false, /* isInfallible. False in setters. */
8632 : false, /* isMovable. Not relevant for setters. */
8633 : false, /* isEliminatable. Not relevant for setters. */
8634 : false, /* isAlwaysInSlot. Only relevant for getters. */
8635 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8636 : false, /* isTypedMethod. Only relevant for methods. */
8637 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8638 : };
8639 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8640 : static_assert(0 < 1, "There is no slot for us");
8641 : static const JSJitInfo onplay_setterinfo = {
8642 : { (JSJitGetterOp)set_onplay },
8643 : { prototypes::id::Document },
8644 : { PrototypeTraits<prototypes::id::Document>::Depth },
8645 : JSJitInfo::Setter,
8646 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8647 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8648 : false, /* isInfallible. False in setters. */
8649 : false, /* isMovable. Not relevant for setters. */
8650 : false, /* isEliminatable. Not relevant for setters. */
8651 : false, /* isAlwaysInSlot. Only relevant for getters. */
8652 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8653 : false, /* isTypedMethod. Only relevant for methods. */
8654 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8655 : };
8656 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8657 : static_assert(0 < 1, "There is no slot for us");
8658 :
8659 : static bool
8660 0 : get_onplaying(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
8661 : {
8662 0 : RefPtr<EventHandlerNonNull> result(self->GetOnplaying());
8663 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8664 0 : if (result) {
8665 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
8666 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
8667 0 : return false;
8668 : }
8669 0 : return true;
8670 : } else {
8671 0 : args.rval().setNull();
8672 0 : return true;
8673 : }
8674 : }
8675 :
8676 : static bool
8677 0 : set_onplaying(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
8678 : {
8679 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
8680 0 : if (args[0].isObject()) {
8681 : { // scope for tempRoot
8682 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
8683 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
8684 : }
8685 : } else {
8686 0 : arg0 = nullptr;
8687 : }
8688 0 : self->SetOnplaying(Constify(arg0));
8689 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8690 :
8691 0 : return true;
8692 : }
8693 :
8694 : static const JSJitInfo onplaying_getterinfo = {
8695 : { (JSJitGetterOp)get_onplaying },
8696 : { prototypes::id::Document },
8697 : { PrototypeTraits<prototypes::id::Document>::Depth },
8698 : JSJitInfo::Getter,
8699 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8700 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8701 : false, /* isInfallible. False in setters. */
8702 : false, /* isMovable. Not relevant for setters. */
8703 : false, /* isEliminatable. Not relevant for setters. */
8704 : false, /* isAlwaysInSlot. Only relevant for getters. */
8705 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8706 : false, /* isTypedMethod. Only relevant for methods. */
8707 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8708 : };
8709 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8710 : static_assert(0 < 1, "There is no slot for us");
8711 : static const JSJitInfo onplaying_setterinfo = {
8712 : { (JSJitGetterOp)set_onplaying },
8713 : { prototypes::id::Document },
8714 : { PrototypeTraits<prototypes::id::Document>::Depth },
8715 : JSJitInfo::Setter,
8716 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8717 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8718 : false, /* isInfallible. False in setters. */
8719 : false, /* isMovable. Not relevant for setters. */
8720 : false, /* isEliminatable. Not relevant for setters. */
8721 : false, /* isAlwaysInSlot. Only relevant for getters. */
8722 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8723 : false, /* isTypedMethod. Only relevant for methods. */
8724 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8725 : };
8726 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8727 : static_assert(0 < 1, "There is no slot for us");
8728 :
8729 : static bool
8730 0 : get_onprogress(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
8731 : {
8732 0 : RefPtr<EventHandlerNonNull> result(self->GetOnprogress());
8733 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8734 0 : if (result) {
8735 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
8736 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
8737 0 : return false;
8738 : }
8739 0 : return true;
8740 : } else {
8741 0 : args.rval().setNull();
8742 0 : return true;
8743 : }
8744 : }
8745 :
8746 : static bool
8747 0 : set_onprogress(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
8748 : {
8749 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
8750 0 : if (args[0].isObject()) {
8751 : { // scope for tempRoot
8752 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
8753 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
8754 : }
8755 : } else {
8756 0 : arg0 = nullptr;
8757 : }
8758 0 : self->SetOnprogress(Constify(arg0));
8759 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8760 :
8761 0 : return true;
8762 : }
8763 :
8764 : static const JSJitInfo onprogress_getterinfo = {
8765 : { (JSJitGetterOp)get_onprogress },
8766 : { prototypes::id::Document },
8767 : { PrototypeTraits<prototypes::id::Document>::Depth },
8768 : JSJitInfo::Getter,
8769 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8770 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8771 : false, /* isInfallible. False in setters. */
8772 : false, /* isMovable. Not relevant for setters. */
8773 : false, /* isEliminatable. Not relevant for setters. */
8774 : false, /* isAlwaysInSlot. Only relevant for getters. */
8775 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8776 : false, /* isTypedMethod. Only relevant for methods. */
8777 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8778 : };
8779 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8780 : static_assert(0 < 1, "There is no slot for us");
8781 : static const JSJitInfo onprogress_setterinfo = {
8782 : { (JSJitGetterOp)set_onprogress },
8783 : { prototypes::id::Document },
8784 : { PrototypeTraits<prototypes::id::Document>::Depth },
8785 : JSJitInfo::Setter,
8786 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8787 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8788 : false, /* isInfallible. False in setters. */
8789 : false, /* isMovable. Not relevant for setters. */
8790 : false, /* isEliminatable. Not relevant for setters. */
8791 : false, /* isAlwaysInSlot. Only relevant for getters. */
8792 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8793 : false, /* isTypedMethod. Only relevant for methods. */
8794 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8795 : };
8796 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8797 : static_assert(0 < 1, "There is no slot for us");
8798 :
8799 : static bool
8800 0 : get_onratechange(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
8801 : {
8802 0 : RefPtr<EventHandlerNonNull> result(self->GetOnratechange());
8803 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8804 0 : if (result) {
8805 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
8806 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
8807 0 : return false;
8808 : }
8809 0 : return true;
8810 : } else {
8811 0 : args.rval().setNull();
8812 0 : return true;
8813 : }
8814 : }
8815 :
8816 : static bool
8817 0 : set_onratechange(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
8818 : {
8819 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
8820 0 : if (args[0].isObject()) {
8821 : { // scope for tempRoot
8822 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
8823 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
8824 : }
8825 : } else {
8826 0 : arg0 = nullptr;
8827 : }
8828 0 : self->SetOnratechange(Constify(arg0));
8829 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8830 :
8831 0 : return true;
8832 : }
8833 :
8834 : static const JSJitInfo onratechange_getterinfo = {
8835 : { (JSJitGetterOp)get_onratechange },
8836 : { prototypes::id::Document },
8837 : { PrototypeTraits<prototypes::id::Document>::Depth },
8838 : JSJitInfo::Getter,
8839 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8840 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8841 : false, /* isInfallible. False in setters. */
8842 : false, /* isMovable. Not relevant for setters. */
8843 : false, /* isEliminatable. Not relevant for setters. */
8844 : false, /* isAlwaysInSlot. Only relevant for getters. */
8845 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8846 : false, /* isTypedMethod. Only relevant for methods. */
8847 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8848 : };
8849 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8850 : static_assert(0 < 1, "There is no slot for us");
8851 : static const JSJitInfo onratechange_setterinfo = {
8852 : { (JSJitGetterOp)set_onratechange },
8853 : { prototypes::id::Document },
8854 : { PrototypeTraits<prototypes::id::Document>::Depth },
8855 : JSJitInfo::Setter,
8856 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8857 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8858 : false, /* isInfallible. False in setters. */
8859 : false, /* isMovable. Not relevant for setters. */
8860 : false, /* isEliminatable. Not relevant for setters. */
8861 : false, /* isAlwaysInSlot. Only relevant for getters. */
8862 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8863 : false, /* isTypedMethod. Only relevant for methods. */
8864 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8865 : };
8866 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8867 : static_assert(0 < 1, "There is no slot for us");
8868 :
8869 : static bool
8870 0 : get_onreset(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
8871 : {
8872 0 : RefPtr<EventHandlerNonNull> result(self->GetOnreset());
8873 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8874 0 : if (result) {
8875 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
8876 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
8877 0 : return false;
8878 : }
8879 0 : return true;
8880 : } else {
8881 0 : args.rval().setNull();
8882 0 : return true;
8883 : }
8884 : }
8885 :
8886 : static bool
8887 0 : set_onreset(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
8888 : {
8889 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
8890 0 : if (args[0].isObject()) {
8891 : { // scope for tempRoot
8892 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
8893 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
8894 : }
8895 : } else {
8896 0 : arg0 = nullptr;
8897 : }
8898 0 : self->SetOnreset(Constify(arg0));
8899 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8900 :
8901 0 : return true;
8902 : }
8903 :
8904 : static const JSJitInfo onreset_getterinfo = {
8905 : { (JSJitGetterOp)get_onreset },
8906 : { prototypes::id::Document },
8907 : { PrototypeTraits<prototypes::id::Document>::Depth },
8908 : JSJitInfo::Getter,
8909 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8910 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8911 : false, /* isInfallible. False in setters. */
8912 : false, /* isMovable. Not relevant for setters. */
8913 : false, /* isEliminatable. Not relevant for setters. */
8914 : false, /* isAlwaysInSlot. Only relevant for getters. */
8915 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8916 : false, /* isTypedMethod. Only relevant for methods. */
8917 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8918 : };
8919 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8920 : static_assert(0 < 1, "There is no slot for us");
8921 : static const JSJitInfo onreset_setterinfo = {
8922 : { (JSJitGetterOp)set_onreset },
8923 : { prototypes::id::Document },
8924 : { PrototypeTraits<prototypes::id::Document>::Depth },
8925 : JSJitInfo::Setter,
8926 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8927 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8928 : false, /* isInfallible. False in setters. */
8929 : false, /* isMovable. Not relevant for setters. */
8930 : false, /* isEliminatable. Not relevant for setters. */
8931 : false, /* isAlwaysInSlot. Only relevant for getters. */
8932 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8933 : false, /* isTypedMethod. Only relevant for methods. */
8934 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8935 : };
8936 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8937 : static_assert(0 < 1, "There is no slot for us");
8938 :
8939 : static bool
8940 0 : get_onresize(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
8941 : {
8942 0 : RefPtr<EventHandlerNonNull> result(self->GetOnresize());
8943 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8944 0 : if (result) {
8945 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
8946 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
8947 0 : return false;
8948 : }
8949 0 : return true;
8950 : } else {
8951 0 : args.rval().setNull();
8952 0 : return true;
8953 : }
8954 : }
8955 :
8956 : static bool
8957 0 : set_onresize(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
8958 : {
8959 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
8960 0 : if (args[0].isObject()) {
8961 : { // scope for tempRoot
8962 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
8963 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
8964 : }
8965 : } else {
8966 0 : arg0 = nullptr;
8967 : }
8968 0 : self->SetOnresize(Constify(arg0));
8969 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
8970 :
8971 0 : return true;
8972 : }
8973 :
8974 : static const JSJitInfo onresize_getterinfo = {
8975 : { (JSJitGetterOp)get_onresize },
8976 : { prototypes::id::Document },
8977 : { PrototypeTraits<prototypes::id::Document>::Depth },
8978 : JSJitInfo::Getter,
8979 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8980 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
8981 : false, /* isInfallible. False in setters. */
8982 : false, /* isMovable. Not relevant for setters. */
8983 : false, /* isEliminatable. Not relevant for setters. */
8984 : false, /* isAlwaysInSlot. Only relevant for getters. */
8985 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
8986 : false, /* isTypedMethod. Only relevant for methods. */
8987 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
8988 : };
8989 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
8990 : static_assert(0 < 1, "There is no slot for us");
8991 : static const JSJitInfo onresize_setterinfo = {
8992 : { (JSJitGetterOp)set_onresize },
8993 : { prototypes::id::Document },
8994 : { PrototypeTraits<prototypes::id::Document>::Depth },
8995 : JSJitInfo::Setter,
8996 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
8997 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
8998 : false, /* isInfallible. False in setters. */
8999 : false, /* isMovable. Not relevant for setters. */
9000 : false, /* isEliminatable. Not relevant for setters. */
9001 : false, /* isAlwaysInSlot. Only relevant for getters. */
9002 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9003 : false, /* isTypedMethod. Only relevant for methods. */
9004 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9005 : };
9006 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9007 : static_assert(0 < 1, "There is no slot for us");
9008 :
9009 : static bool
9010 0 : get_onscroll(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
9011 : {
9012 0 : RefPtr<EventHandlerNonNull> result(self->GetOnscroll());
9013 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9014 0 : if (result) {
9015 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
9016 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
9017 0 : return false;
9018 : }
9019 0 : return true;
9020 : } else {
9021 0 : args.rval().setNull();
9022 0 : return true;
9023 : }
9024 : }
9025 :
9026 : static bool
9027 0 : set_onscroll(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
9028 : {
9029 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
9030 0 : if (args[0].isObject()) {
9031 : { // scope for tempRoot
9032 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
9033 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
9034 : }
9035 : } else {
9036 0 : arg0 = nullptr;
9037 : }
9038 0 : self->SetOnscroll(Constify(arg0));
9039 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9040 :
9041 0 : return true;
9042 : }
9043 :
9044 : static const JSJitInfo onscroll_getterinfo = {
9045 : { (JSJitGetterOp)get_onscroll },
9046 : { prototypes::id::Document },
9047 : { PrototypeTraits<prototypes::id::Document>::Depth },
9048 : JSJitInfo::Getter,
9049 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9050 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9051 : false, /* isInfallible. False in setters. */
9052 : false, /* isMovable. Not relevant for setters. */
9053 : false, /* isEliminatable. Not relevant for setters. */
9054 : false, /* isAlwaysInSlot. Only relevant for getters. */
9055 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9056 : false, /* isTypedMethod. Only relevant for methods. */
9057 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9058 : };
9059 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9060 : static_assert(0 < 1, "There is no slot for us");
9061 : static const JSJitInfo onscroll_setterinfo = {
9062 : { (JSJitGetterOp)set_onscroll },
9063 : { prototypes::id::Document },
9064 : { PrototypeTraits<prototypes::id::Document>::Depth },
9065 : JSJitInfo::Setter,
9066 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9067 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9068 : false, /* isInfallible. False in setters. */
9069 : false, /* isMovable. Not relevant for setters. */
9070 : false, /* isEliminatable. Not relevant for setters. */
9071 : false, /* isAlwaysInSlot. Only relevant for getters. */
9072 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9073 : false, /* isTypedMethod. Only relevant for methods. */
9074 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9075 : };
9076 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9077 : static_assert(0 < 1, "There is no slot for us");
9078 :
9079 : static bool
9080 0 : get_onseeked(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
9081 : {
9082 0 : RefPtr<EventHandlerNonNull> result(self->GetOnseeked());
9083 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9084 0 : if (result) {
9085 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
9086 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
9087 0 : return false;
9088 : }
9089 0 : return true;
9090 : } else {
9091 0 : args.rval().setNull();
9092 0 : return true;
9093 : }
9094 : }
9095 :
9096 : static bool
9097 0 : set_onseeked(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
9098 : {
9099 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
9100 0 : if (args[0].isObject()) {
9101 : { // scope for tempRoot
9102 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
9103 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
9104 : }
9105 : } else {
9106 0 : arg0 = nullptr;
9107 : }
9108 0 : self->SetOnseeked(Constify(arg0));
9109 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9110 :
9111 0 : return true;
9112 : }
9113 :
9114 : static const JSJitInfo onseeked_getterinfo = {
9115 : { (JSJitGetterOp)get_onseeked },
9116 : { prototypes::id::Document },
9117 : { PrototypeTraits<prototypes::id::Document>::Depth },
9118 : JSJitInfo::Getter,
9119 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9120 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9121 : false, /* isInfallible. False in setters. */
9122 : false, /* isMovable. Not relevant for setters. */
9123 : false, /* isEliminatable. Not relevant for setters. */
9124 : false, /* isAlwaysInSlot. Only relevant for getters. */
9125 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9126 : false, /* isTypedMethod. Only relevant for methods. */
9127 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9128 : };
9129 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9130 : static_assert(0 < 1, "There is no slot for us");
9131 : static const JSJitInfo onseeked_setterinfo = {
9132 : { (JSJitGetterOp)set_onseeked },
9133 : { prototypes::id::Document },
9134 : { PrototypeTraits<prototypes::id::Document>::Depth },
9135 : JSJitInfo::Setter,
9136 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9137 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9138 : false, /* isInfallible. False in setters. */
9139 : false, /* isMovable. Not relevant for setters. */
9140 : false, /* isEliminatable. Not relevant for setters. */
9141 : false, /* isAlwaysInSlot. Only relevant for getters. */
9142 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9143 : false, /* isTypedMethod. Only relevant for methods. */
9144 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9145 : };
9146 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9147 : static_assert(0 < 1, "There is no slot for us");
9148 :
9149 : static bool
9150 0 : get_onseeking(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
9151 : {
9152 0 : RefPtr<EventHandlerNonNull> result(self->GetOnseeking());
9153 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9154 0 : if (result) {
9155 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
9156 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
9157 0 : return false;
9158 : }
9159 0 : return true;
9160 : } else {
9161 0 : args.rval().setNull();
9162 0 : return true;
9163 : }
9164 : }
9165 :
9166 : static bool
9167 0 : set_onseeking(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
9168 : {
9169 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
9170 0 : if (args[0].isObject()) {
9171 : { // scope for tempRoot
9172 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
9173 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
9174 : }
9175 : } else {
9176 0 : arg0 = nullptr;
9177 : }
9178 0 : self->SetOnseeking(Constify(arg0));
9179 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9180 :
9181 0 : return true;
9182 : }
9183 :
9184 : static const JSJitInfo onseeking_getterinfo = {
9185 : { (JSJitGetterOp)get_onseeking },
9186 : { prototypes::id::Document },
9187 : { PrototypeTraits<prototypes::id::Document>::Depth },
9188 : JSJitInfo::Getter,
9189 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9190 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9191 : false, /* isInfallible. False in setters. */
9192 : false, /* isMovable. Not relevant for setters. */
9193 : false, /* isEliminatable. Not relevant for setters. */
9194 : false, /* isAlwaysInSlot. Only relevant for getters. */
9195 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9196 : false, /* isTypedMethod. Only relevant for methods. */
9197 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9198 : };
9199 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9200 : static_assert(0 < 1, "There is no slot for us");
9201 : static const JSJitInfo onseeking_setterinfo = {
9202 : { (JSJitGetterOp)set_onseeking },
9203 : { prototypes::id::Document },
9204 : { PrototypeTraits<prototypes::id::Document>::Depth },
9205 : JSJitInfo::Setter,
9206 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9207 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9208 : false, /* isInfallible. False in setters. */
9209 : false, /* isMovable. Not relevant for setters. */
9210 : false, /* isEliminatable. Not relevant for setters. */
9211 : false, /* isAlwaysInSlot. Only relevant for getters. */
9212 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9213 : false, /* isTypedMethod. Only relevant for methods. */
9214 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9215 : };
9216 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9217 : static_assert(0 < 1, "There is no slot for us");
9218 :
9219 : static bool
9220 0 : get_onselect(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
9221 : {
9222 0 : RefPtr<EventHandlerNonNull> result(self->GetOnselect());
9223 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9224 0 : if (result) {
9225 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
9226 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
9227 0 : return false;
9228 : }
9229 0 : return true;
9230 : } else {
9231 0 : args.rval().setNull();
9232 0 : return true;
9233 : }
9234 : }
9235 :
9236 : static bool
9237 0 : set_onselect(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
9238 : {
9239 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
9240 0 : if (args[0].isObject()) {
9241 : { // scope for tempRoot
9242 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
9243 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
9244 : }
9245 : } else {
9246 0 : arg0 = nullptr;
9247 : }
9248 0 : self->SetOnselect(Constify(arg0));
9249 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9250 :
9251 0 : return true;
9252 : }
9253 :
9254 : static const JSJitInfo onselect_getterinfo = {
9255 : { (JSJitGetterOp)get_onselect },
9256 : { prototypes::id::Document },
9257 : { PrototypeTraits<prototypes::id::Document>::Depth },
9258 : JSJitInfo::Getter,
9259 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9260 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9261 : false, /* isInfallible. False in setters. */
9262 : false, /* isMovable. Not relevant for setters. */
9263 : false, /* isEliminatable. Not relevant for setters. */
9264 : false, /* isAlwaysInSlot. Only relevant for getters. */
9265 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9266 : false, /* isTypedMethod. Only relevant for methods. */
9267 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9268 : };
9269 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9270 : static_assert(0 < 1, "There is no slot for us");
9271 : static const JSJitInfo onselect_setterinfo = {
9272 : { (JSJitGetterOp)set_onselect },
9273 : { prototypes::id::Document },
9274 : { PrototypeTraits<prototypes::id::Document>::Depth },
9275 : JSJitInfo::Setter,
9276 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9277 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9278 : false, /* isInfallible. False in setters. */
9279 : false, /* isMovable. Not relevant for setters. */
9280 : false, /* isEliminatable. Not relevant for setters. */
9281 : false, /* isAlwaysInSlot. Only relevant for getters. */
9282 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9283 : false, /* isTypedMethod. Only relevant for methods. */
9284 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9285 : };
9286 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9287 : static_assert(0 < 1, "There is no slot for us");
9288 :
9289 : static bool
9290 0 : get_onshow(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
9291 : {
9292 0 : RefPtr<EventHandlerNonNull> result(self->GetOnshow());
9293 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9294 0 : if (result) {
9295 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
9296 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
9297 0 : return false;
9298 : }
9299 0 : return true;
9300 : } else {
9301 0 : args.rval().setNull();
9302 0 : return true;
9303 : }
9304 : }
9305 :
9306 : static bool
9307 0 : set_onshow(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
9308 : {
9309 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
9310 0 : if (args[0].isObject()) {
9311 : { // scope for tempRoot
9312 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
9313 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
9314 : }
9315 : } else {
9316 0 : arg0 = nullptr;
9317 : }
9318 0 : self->SetOnshow(Constify(arg0));
9319 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9320 :
9321 0 : return true;
9322 : }
9323 :
9324 : static const JSJitInfo onshow_getterinfo = {
9325 : { (JSJitGetterOp)get_onshow },
9326 : { prototypes::id::Document },
9327 : { PrototypeTraits<prototypes::id::Document>::Depth },
9328 : JSJitInfo::Getter,
9329 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9330 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9331 : false, /* isInfallible. False in setters. */
9332 : false, /* isMovable. Not relevant for setters. */
9333 : false, /* isEliminatable. Not relevant for setters. */
9334 : false, /* isAlwaysInSlot. Only relevant for getters. */
9335 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9336 : false, /* isTypedMethod. Only relevant for methods. */
9337 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9338 : };
9339 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9340 : static_assert(0 < 1, "There is no slot for us");
9341 : static const JSJitInfo onshow_setterinfo = {
9342 : { (JSJitGetterOp)set_onshow },
9343 : { prototypes::id::Document },
9344 : { PrototypeTraits<prototypes::id::Document>::Depth },
9345 : JSJitInfo::Setter,
9346 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9347 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9348 : false, /* isInfallible. False in setters. */
9349 : false, /* isMovable. Not relevant for setters. */
9350 : false, /* isEliminatable. Not relevant for setters. */
9351 : false, /* isAlwaysInSlot. Only relevant for getters. */
9352 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9353 : false, /* isTypedMethod. Only relevant for methods. */
9354 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9355 : };
9356 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9357 : static_assert(0 < 1, "There is no slot for us");
9358 :
9359 : static bool
9360 0 : get_onstalled(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
9361 : {
9362 0 : RefPtr<EventHandlerNonNull> result(self->GetOnstalled());
9363 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9364 0 : if (result) {
9365 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
9366 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
9367 0 : return false;
9368 : }
9369 0 : return true;
9370 : } else {
9371 0 : args.rval().setNull();
9372 0 : return true;
9373 : }
9374 : }
9375 :
9376 : static bool
9377 0 : set_onstalled(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
9378 : {
9379 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
9380 0 : if (args[0].isObject()) {
9381 : { // scope for tempRoot
9382 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
9383 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
9384 : }
9385 : } else {
9386 0 : arg0 = nullptr;
9387 : }
9388 0 : self->SetOnstalled(Constify(arg0));
9389 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9390 :
9391 0 : return true;
9392 : }
9393 :
9394 : static const JSJitInfo onstalled_getterinfo = {
9395 : { (JSJitGetterOp)get_onstalled },
9396 : { prototypes::id::Document },
9397 : { PrototypeTraits<prototypes::id::Document>::Depth },
9398 : JSJitInfo::Getter,
9399 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9400 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9401 : false, /* isInfallible. False in setters. */
9402 : false, /* isMovable. Not relevant for setters. */
9403 : false, /* isEliminatable. Not relevant for setters. */
9404 : false, /* isAlwaysInSlot. Only relevant for getters. */
9405 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9406 : false, /* isTypedMethod. Only relevant for methods. */
9407 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9408 : };
9409 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9410 : static_assert(0 < 1, "There is no slot for us");
9411 : static const JSJitInfo onstalled_setterinfo = {
9412 : { (JSJitGetterOp)set_onstalled },
9413 : { prototypes::id::Document },
9414 : { PrototypeTraits<prototypes::id::Document>::Depth },
9415 : JSJitInfo::Setter,
9416 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9417 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9418 : false, /* isInfallible. False in setters. */
9419 : false, /* isMovable. Not relevant for setters. */
9420 : false, /* isEliminatable. Not relevant for setters. */
9421 : false, /* isAlwaysInSlot. Only relevant for getters. */
9422 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9423 : false, /* isTypedMethod. Only relevant for methods. */
9424 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9425 : };
9426 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9427 : static_assert(0 < 1, "There is no slot for us");
9428 :
9429 : static bool
9430 0 : get_onsubmit(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
9431 : {
9432 0 : RefPtr<EventHandlerNonNull> result(self->GetOnsubmit());
9433 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9434 0 : if (result) {
9435 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
9436 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
9437 0 : return false;
9438 : }
9439 0 : return true;
9440 : } else {
9441 0 : args.rval().setNull();
9442 0 : return true;
9443 : }
9444 : }
9445 :
9446 : static bool
9447 0 : set_onsubmit(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
9448 : {
9449 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
9450 0 : if (args[0].isObject()) {
9451 : { // scope for tempRoot
9452 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
9453 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
9454 : }
9455 : } else {
9456 0 : arg0 = nullptr;
9457 : }
9458 0 : self->SetOnsubmit(Constify(arg0));
9459 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9460 :
9461 0 : return true;
9462 : }
9463 :
9464 : static const JSJitInfo onsubmit_getterinfo = {
9465 : { (JSJitGetterOp)get_onsubmit },
9466 : { prototypes::id::Document },
9467 : { PrototypeTraits<prototypes::id::Document>::Depth },
9468 : JSJitInfo::Getter,
9469 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9470 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9471 : false, /* isInfallible. False in setters. */
9472 : false, /* isMovable. Not relevant for setters. */
9473 : false, /* isEliminatable. Not relevant for setters. */
9474 : false, /* isAlwaysInSlot. Only relevant for getters. */
9475 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9476 : false, /* isTypedMethod. Only relevant for methods. */
9477 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9478 : };
9479 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9480 : static_assert(0 < 1, "There is no slot for us");
9481 : static const JSJitInfo onsubmit_setterinfo = {
9482 : { (JSJitGetterOp)set_onsubmit },
9483 : { prototypes::id::Document },
9484 : { PrototypeTraits<prototypes::id::Document>::Depth },
9485 : JSJitInfo::Setter,
9486 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9487 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9488 : false, /* isInfallible. False in setters. */
9489 : false, /* isMovable. Not relevant for setters. */
9490 : false, /* isEliminatable. Not relevant for setters. */
9491 : false, /* isAlwaysInSlot. Only relevant for getters. */
9492 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9493 : false, /* isTypedMethod. Only relevant for methods. */
9494 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9495 : };
9496 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9497 : static_assert(0 < 1, "There is no slot for us");
9498 :
9499 : static bool
9500 0 : get_onsuspend(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
9501 : {
9502 0 : RefPtr<EventHandlerNonNull> result(self->GetOnsuspend());
9503 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9504 0 : if (result) {
9505 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
9506 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
9507 0 : return false;
9508 : }
9509 0 : return true;
9510 : } else {
9511 0 : args.rval().setNull();
9512 0 : return true;
9513 : }
9514 : }
9515 :
9516 : static bool
9517 0 : set_onsuspend(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
9518 : {
9519 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
9520 0 : if (args[0].isObject()) {
9521 : { // scope for tempRoot
9522 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
9523 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
9524 : }
9525 : } else {
9526 0 : arg0 = nullptr;
9527 : }
9528 0 : self->SetOnsuspend(Constify(arg0));
9529 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9530 :
9531 0 : return true;
9532 : }
9533 :
9534 : static const JSJitInfo onsuspend_getterinfo = {
9535 : { (JSJitGetterOp)get_onsuspend },
9536 : { prototypes::id::Document },
9537 : { PrototypeTraits<prototypes::id::Document>::Depth },
9538 : JSJitInfo::Getter,
9539 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9540 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9541 : false, /* isInfallible. False in setters. */
9542 : false, /* isMovable. Not relevant for setters. */
9543 : false, /* isEliminatable. Not relevant for setters. */
9544 : false, /* isAlwaysInSlot. Only relevant for getters. */
9545 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9546 : false, /* isTypedMethod. Only relevant for methods. */
9547 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9548 : };
9549 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9550 : static_assert(0 < 1, "There is no slot for us");
9551 : static const JSJitInfo onsuspend_setterinfo = {
9552 : { (JSJitGetterOp)set_onsuspend },
9553 : { prototypes::id::Document },
9554 : { PrototypeTraits<prototypes::id::Document>::Depth },
9555 : JSJitInfo::Setter,
9556 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9557 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9558 : false, /* isInfallible. False in setters. */
9559 : false, /* isMovable. Not relevant for setters. */
9560 : false, /* isEliminatable. Not relevant for setters. */
9561 : false, /* isAlwaysInSlot. Only relevant for getters. */
9562 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9563 : false, /* isTypedMethod. Only relevant for methods. */
9564 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9565 : };
9566 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9567 : static_assert(0 < 1, "There is no slot for us");
9568 :
9569 : static bool
9570 0 : get_ontimeupdate(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
9571 : {
9572 0 : RefPtr<EventHandlerNonNull> result(self->GetOntimeupdate());
9573 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9574 0 : if (result) {
9575 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
9576 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
9577 0 : return false;
9578 : }
9579 0 : return true;
9580 : } else {
9581 0 : args.rval().setNull();
9582 0 : return true;
9583 : }
9584 : }
9585 :
9586 : static bool
9587 0 : set_ontimeupdate(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
9588 : {
9589 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
9590 0 : if (args[0].isObject()) {
9591 : { // scope for tempRoot
9592 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
9593 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
9594 : }
9595 : } else {
9596 0 : arg0 = nullptr;
9597 : }
9598 0 : self->SetOntimeupdate(Constify(arg0));
9599 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9600 :
9601 0 : return true;
9602 : }
9603 :
9604 : static const JSJitInfo ontimeupdate_getterinfo = {
9605 : { (JSJitGetterOp)get_ontimeupdate },
9606 : { prototypes::id::Document },
9607 : { PrototypeTraits<prototypes::id::Document>::Depth },
9608 : JSJitInfo::Getter,
9609 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9610 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9611 : false, /* isInfallible. False in setters. */
9612 : false, /* isMovable. Not relevant for setters. */
9613 : false, /* isEliminatable. Not relevant for setters. */
9614 : false, /* isAlwaysInSlot. Only relevant for getters. */
9615 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9616 : false, /* isTypedMethod. Only relevant for methods. */
9617 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9618 : };
9619 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9620 : static_assert(0 < 1, "There is no slot for us");
9621 : static const JSJitInfo ontimeupdate_setterinfo = {
9622 : { (JSJitGetterOp)set_ontimeupdate },
9623 : { prototypes::id::Document },
9624 : { PrototypeTraits<prototypes::id::Document>::Depth },
9625 : JSJitInfo::Setter,
9626 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9627 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9628 : false, /* isInfallible. False in setters. */
9629 : false, /* isMovable. Not relevant for setters. */
9630 : false, /* isEliminatable. Not relevant for setters. */
9631 : false, /* isAlwaysInSlot. Only relevant for getters. */
9632 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9633 : false, /* isTypedMethod. Only relevant for methods. */
9634 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9635 : };
9636 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9637 : static_assert(0 < 1, "There is no slot for us");
9638 :
9639 : static bool
9640 0 : get_onvolumechange(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
9641 : {
9642 0 : RefPtr<EventHandlerNonNull> result(self->GetOnvolumechange());
9643 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9644 0 : if (result) {
9645 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
9646 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
9647 0 : return false;
9648 : }
9649 0 : return true;
9650 : } else {
9651 0 : args.rval().setNull();
9652 0 : return true;
9653 : }
9654 : }
9655 :
9656 : static bool
9657 0 : set_onvolumechange(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
9658 : {
9659 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
9660 0 : if (args[0].isObject()) {
9661 : { // scope for tempRoot
9662 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
9663 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
9664 : }
9665 : } else {
9666 0 : arg0 = nullptr;
9667 : }
9668 0 : self->SetOnvolumechange(Constify(arg0));
9669 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9670 :
9671 0 : return true;
9672 : }
9673 :
9674 : static const JSJitInfo onvolumechange_getterinfo = {
9675 : { (JSJitGetterOp)get_onvolumechange },
9676 : { prototypes::id::Document },
9677 : { PrototypeTraits<prototypes::id::Document>::Depth },
9678 : JSJitInfo::Getter,
9679 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9680 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9681 : false, /* isInfallible. False in setters. */
9682 : false, /* isMovable. Not relevant for setters. */
9683 : false, /* isEliminatable. Not relevant for setters. */
9684 : false, /* isAlwaysInSlot. Only relevant for getters. */
9685 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9686 : false, /* isTypedMethod. Only relevant for methods. */
9687 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9688 : };
9689 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9690 : static_assert(0 < 1, "There is no slot for us");
9691 : static const JSJitInfo onvolumechange_setterinfo = {
9692 : { (JSJitGetterOp)set_onvolumechange },
9693 : { prototypes::id::Document },
9694 : { PrototypeTraits<prototypes::id::Document>::Depth },
9695 : JSJitInfo::Setter,
9696 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9697 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9698 : false, /* isInfallible. False in setters. */
9699 : false, /* isMovable. Not relevant for setters. */
9700 : false, /* isEliminatable. Not relevant for setters. */
9701 : false, /* isAlwaysInSlot. Only relevant for getters. */
9702 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9703 : false, /* isTypedMethod. Only relevant for methods. */
9704 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9705 : };
9706 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9707 : static_assert(0 < 1, "There is no slot for us");
9708 :
9709 : static bool
9710 0 : get_onwaiting(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
9711 : {
9712 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwaiting());
9713 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9714 0 : if (result) {
9715 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
9716 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
9717 0 : return false;
9718 : }
9719 0 : return true;
9720 : } else {
9721 0 : args.rval().setNull();
9722 0 : return true;
9723 : }
9724 : }
9725 :
9726 : static bool
9727 0 : set_onwaiting(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
9728 : {
9729 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
9730 0 : if (args[0].isObject()) {
9731 : { // scope for tempRoot
9732 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
9733 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
9734 : }
9735 : } else {
9736 0 : arg0 = nullptr;
9737 : }
9738 0 : self->SetOnwaiting(Constify(arg0));
9739 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9740 :
9741 0 : return true;
9742 : }
9743 :
9744 : static const JSJitInfo onwaiting_getterinfo = {
9745 : { (JSJitGetterOp)get_onwaiting },
9746 : { prototypes::id::Document },
9747 : { PrototypeTraits<prototypes::id::Document>::Depth },
9748 : JSJitInfo::Getter,
9749 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9750 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9751 : false, /* isInfallible. False in setters. */
9752 : false, /* isMovable. Not relevant for setters. */
9753 : false, /* isEliminatable. Not relevant for setters. */
9754 : false, /* isAlwaysInSlot. Only relevant for getters. */
9755 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9756 : false, /* isTypedMethod. Only relevant for methods. */
9757 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9758 : };
9759 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9760 : static_assert(0 < 1, "There is no slot for us");
9761 : static const JSJitInfo onwaiting_setterinfo = {
9762 : { (JSJitGetterOp)set_onwaiting },
9763 : { prototypes::id::Document },
9764 : { PrototypeTraits<prototypes::id::Document>::Depth },
9765 : JSJitInfo::Setter,
9766 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9767 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9768 : false, /* isInfallible. False in setters. */
9769 : false, /* isMovable. Not relevant for setters. */
9770 : false, /* isEliminatable. Not relevant for setters. */
9771 : false, /* isAlwaysInSlot. Only relevant for getters. */
9772 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9773 : false, /* isTypedMethod. Only relevant for methods. */
9774 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9775 : };
9776 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9777 : static_assert(0 < 1, "There is no slot for us");
9778 :
9779 : static bool
9780 0 : get_onselectstart(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
9781 : {
9782 0 : RefPtr<EventHandlerNonNull> result(self->GetOnselectstart());
9783 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9784 0 : if (result) {
9785 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
9786 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
9787 0 : return false;
9788 : }
9789 0 : return true;
9790 : } else {
9791 0 : args.rval().setNull();
9792 0 : return true;
9793 : }
9794 : }
9795 :
9796 : static bool
9797 0 : set_onselectstart(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
9798 : {
9799 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
9800 0 : if (args[0].isObject()) {
9801 : { // scope for tempRoot
9802 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
9803 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
9804 : }
9805 : } else {
9806 0 : arg0 = nullptr;
9807 : }
9808 0 : self->SetOnselectstart(Constify(arg0));
9809 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9810 :
9811 0 : return true;
9812 : }
9813 :
9814 : static const JSJitInfo onselectstart_getterinfo = {
9815 : { (JSJitGetterOp)get_onselectstart },
9816 : { prototypes::id::Document },
9817 : { PrototypeTraits<prototypes::id::Document>::Depth },
9818 : JSJitInfo::Getter,
9819 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9820 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9821 : false, /* isInfallible. False in setters. */
9822 : false, /* isMovable. Not relevant for setters. */
9823 : false, /* isEliminatable. Not relevant for setters. */
9824 : false, /* isAlwaysInSlot. Only relevant for getters. */
9825 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9826 : false, /* isTypedMethod. Only relevant for methods. */
9827 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9828 : };
9829 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9830 : static_assert(0 < 1, "There is no slot for us");
9831 : static const JSJitInfo onselectstart_setterinfo = {
9832 : { (JSJitGetterOp)set_onselectstart },
9833 : { prototypes::id::Document },
9834 : { PrototypeTraits<prototypes::id::Document>::Depth },
9835 : JSJitInfo::Setter,
9836 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9837 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9838 : false, /* isInfallible. False in setters. */
9839 : false, /* isMovable. Not relevant for setters. */
9840 : false, /* isEliminatable. Not relevant for setters. */
9841 : false, /* isAlwaysInSlot. Only relevant for getters. */
9842 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9843 : false, /* isTypedMethod. Only relevant for methods. */
9844 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9845 : };
9846 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9847 : static_assert(0 < 1, "There is no slot for us");
9848 :
9849 : static bool
9850 0 : get_ontoggle(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
9851 : {
9852 0 : RefPtr<EventHandlerNonNull> result(self->GetOntoggle());
9853 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9854 0 : if (result) {
9855 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
9856 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
9857 0 : return false;
9858 : }
9859 0 : return true;
9860 : } else {
9861 0 : args.rval().setNull();
9862 0 : return true;
9863 : }
9864 : }
9865 :
9866 : static bool
9867 0 : set_ontoggle(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
9868 : {
9869 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
9870 0 : if (args[0].isObject()) {
9871 : { // scope for tempRoot
9872 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
9873 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
9874 : }
9875 : } else {
9876 0 : arg0 = nullptr;
9877 : }
9878 0 : self->SetOntoggle(Constify(arg0));
9879 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9880 :
9881 0 : return true;
9882 : }
9883 :
9884 : static const JSJitInfo ontoggle_getterinfo = {
9885 : { (JSJitGetterOp)get_ontoggle },
9886 : { prototypes::id::Document },
9887 : { PrototypeTraits<prototypes::id::Document>::Depth },
9888 : JSJitInfo::Getter,
9889 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9890 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9891 : false, /* isInfallible. False in setters. */
9892 : false, /* isMovable. Not relevant for setters. */
9893 : false, /* isEliminatable. Not relevant for setters. */
9894 : false, /* isAlwaysInSlot. Only relevant for getters. */
9895 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9896 : false, /* isTypedMethod. Only relevant for methods. */
9897 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9898 : };
9899 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9900 : static_assert(0 < 1, "There is no slot for us");
9901 : static const JSJitInfo ontoggle_setterinfo = {
9902 : { (JSJitGetterOp)set_ontoggle },
9903 : { prototypes::id::Document },
9904 : { PrototypeTraits<prototypes::id::Document>::Depth },
9905 : JSJitInfo::Setter,
9906 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9907 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9908 : false, /* isInfallible. False in setters. */
9909 : false, /* isMovable. Not relevant for setters. */
9910 : false, /* isEliminatable. Not relevant for setters. */
9911 : false, /* isAlwaysInSlot. Only relevant for getters. */
9912 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9913 : false, /* isTypedMethod. Only relevant for methods. */
9914 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9915 : };
9916 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9917 : static_assert(0 < 1, "There is no slot for us");
9918 :
9919 : static bool
9920 0 : get_onpointercancel(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
9921 : {
9922 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointercancel());
9923 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9924 0 : if (result) {
9925 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
9926 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
9927 0 : return false;
9928 : }
9929 0 : return true;
9930 : } else {
9931 0 : args.rval().setNull();
9932 0 : return true;
9933 : }
9934 : }
9935 :
9936 : static bool
9937 0 : set_onpointercancel(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
9938 : {
9939 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
9940 0 : if (args[0].isObject()) {
9941 : { // scope for tempRoot
9942 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
9943 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
9944 : }
9945 : } else {
9946 0 : arg0 = nullptr;
9947 : }
9948 0 : self->SetOnpointercancel(Constify(arg0));
9949 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9950 :
9951 0 : return true;
9952 : }
9953 :
9954 : static const JSJitInfo onpointercancel_getterinfo = {
9955 : { (JSJitGetterOp)get_onpointercancel },
9956 : { prototypes::id::Document },
9957 : { PrototypeTraits<prototypes::id::Document>::Depth },
9958 : JSJitInfo::Getter,
9959 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9960 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
9961 : false, /* isInfallible. False in setters. */
9962 : false, /* isMovable. Not relevant for setters. */
9963 : false, /* isEliminatable. Not relevant for setters. */
9964 : false, /* isAlwaysInSlot. Only relevant for getters. */
9965 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9966 : false, /* isTypedMethod. Only relevant for methods. */
9967 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9968 : };
9969 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9970 : static_assert(0 < 1, "There is no slot for us");
9971 : static const JSJitInfo onpointercancel_setterinfo = {
9972 : { (JSJitGetterOp)set_onpointercancel },
9973 : { prototypes::id::Document },
9974 : { PrototypeTraits<prototypes::id::Document>::Depth },
9975 : JSJitInfo::Setter,
9976 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
9977 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
9978 : false, /* isInfallible. False in setters. */
9979 : false, /* isMovable. Not relevant for setters. */
9980 : false, /* isEliminatable. Not relevant for setters. */
9981 : false, /* isAlwaysInSlot. Only relevant for getters. */
9982 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
9983 : false, /* isTypedMethod. Only relevant for methods. */
9984 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
9985 : };
9986 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
9987 : static_assert(0 < 1, "There is no slot for us");
9988 :
9989 : static bool
9990 0 : get_onpointerdown(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
9991 : {
9992 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerdown());
9993 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
9994 0 : if (result) {
9995 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
9996 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
9997 0 : return false;
9998 : }
9999 0 : return true;
10000 : } else {
10001 0 : args.rval().setNull();
10002 0 : return true;
10003 : }
10004 : }
10005 :
10006 : static bool
10007 0 : set_onpointerdown(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
10008 : {
10009 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
10010 0 : if (args[0].isObject()) {
10011 : { // scope for tempRoot
10012 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
10013 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
10014 : }
10015 : } else {
10016 0 : arg0 = nullptr;
10017 : }
10018 0 : self->SetOnpointerdown(Constify(arg0));
10019 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10020 :
10021 0 : return true;
10022 : }
10023 :
10024 : static const JSJitInfo onpointerdown_getterinfo = {
10025 : { (JSJitGetterOp)get_onpointerdown },
10026 : { prototypes::id::Document },
10027 : { PrototypeTraits<prototypes::id::Document>::Depth },
10028 : JSJitInfo::Getter,
10029 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10030 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
10031 : false, /* isInfallible. False in setters. */
10032 : false, /* isMovable. Not relevant for setters. */
10033 : false, /* isEliminatable. Not relevant for setters. */
10034 : false, /* isAlwaysInSlot. Only relevant for getters. */
10035 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10036 : false, /* isTypedMethod. Only relevant for methods. */
10037 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10038 : };
10039 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10040 : static_assert(0 < 1, "There is no slot for us");
10041 : static const JSJitInfo onpointerdown_setterinfo = {
10042 : { (JSJitGetterOp)set_onpointerdown },
10043 : { prototypes::id::Document },
10044 : { PrototypeTraits<prototypes::id::Document>::Depth },
10045 : JSJitInfo::Setter,
10046 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10047 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10048 : false, /* isInfallible. False in setters. */
10049 : false, /* isMovable. Not relevant for setters. */
10050 : false, /* isEliminatable. Not relevant for setters. */
10051 : false, /* isAlwaysInSlot. Only relevant for getters. */
10052 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10053 : false, /* isTypedMethod. Only relevant for methods. */
10054 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10055 : };
10056 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10057 : static_assert(0 < 1, "There is no slot for us");
10058 :
10059 : static bool
10060 0 : get_onpointerup(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
10061 : {
10062 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerup());
10063 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10064 0 : if (result) {
10065 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
10066 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
10067 0 : return false;
10068 : }
10069 0 : return true;
10070 : } else {
10071 0 : args.rval().setNull();
10072 0 : return true;
10073 : }
10074 : }
10075 :
10076 : static bool
10077 0 : set_onpointerup(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
10078 : {
10079 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
10080 0 : if (args[0].isObject()) {
10081 : { // scope for tempRoot
10082 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
10083 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
10084 : }
10085 : } else {
10086 0 : arg0 = nullptr;
10087 : }
10088 0 : self->SetOnpointerup(Constify(arg0));
10089 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10090 :
10091 0 : return true;
10092 : }
10093 :
10094 : static const JSJitInfo onpointerup_getterinfo = {
10095 : { (JSJitGetterOp)get_onpointerup },
10096 : { prototypes::id::Document },
10097 : { PrototypeTraits<prototypes::id::Document>::Depth },
10098 : JSJitInfo::Getter,
10099 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10100 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
10101 : false, /* isInfallible. False in setters. */
10102 : false, /* isMovable. Not relevant for setters. */
10103 : false, /* isEliminatable. Not relevant for setters. */
10104 : false, /* isAlwaysInSlot. Only relevant for getters. */
10105 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10106 : false, /* isTypedMethod. Only relevant for methods. */
10107 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10108 : };
10109 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10110 : static_assert(0 < 1, "There is no slot for us");
10111 : static const JSJitInfo onpointerup_setterinfo = {
10112 : { (JSJitGetterOp)set_onpointerup },
10113 : { prototypes::id::Document },
10114 : { PrototypeTraits<prototypes::id::Document>::Depth },
10115 : JSJitInfo::Setter,
10116 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10117 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10118 : false, /* isInfallible. False in setters. */
10119 : false, /* isMovable. Not relevant for setters. */
10120 : false, /* isEliminatable. Not relevant for setters. */
10121 : false, /* isAlwaysInSlot. Only relevant for getters. */
10122 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10123 : false, /* isTypedMethod. Only relevant for methods. */
10124 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10125 : };
10126 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10127 : static_assert(0 < 1, "There is no slot for us");
10128 :
10129 : static bool
10130 0 : get_onpointermove(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
10131 : {
10132 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointermove());
10133 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10134 0 : if (result) {
10135 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
10136 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
10137 0 : return false;
10138 : }
10139 0 : return true;
10140 : } else {
10141 0 : args.rval().setNull();
10142 0 : return true;
10143 : }
10144 : }
10145 :
10146 : static bool
10147 0 : set_onpointermove(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
10148 : {
10149 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
10150 0 : if (args[0].isObject()) {
10151 : { // scope for tempRoot
10152 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
10153 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
10154 : }
10155 : } else {
10156 0 : arg0 = nullptr;
10157 : }
10158 0 : self->SetOnpointermove(Constify(arg0));
10159 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10160 :
10161 0 : return true;
10162 : }
10163 :
10164 : static const JSJitInfo onpointermove_getterinfo = {
10165 : { (JSJitGetterOp)get_onpointermove },
10166 : { prototypes::id::Document },
10167 : { PrototypeTraits<prototypes::id::Document>::Depth },
10168 : JSJitInfo::Getter,
10169 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10170 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
10171 : false, /* isInfallible. False in setters. */
10172 : false, /* isMovable. Not relevant for setters. */
10173 : false, /* isEliminatable. Not relevant for setters. */
10174 : false, /* isAlwaysInSlot. Only relevant for getters. */
10175 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10176 : false, /* isTypedMethod. Only relevant for methods. */
10177 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10178 : };
10179 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10180 : static_assert(0 < 1, "There is no slot for us");
10181 : static const JSJitInfo onpointermove_setterinfo = {
10182 : { (JSJitGetterOp)set_onpointermove },
10183 : { prototypes::id::Document },
10184 : { PrototypeTraits<prototypes::id::Document>::Depth },
10185 : JSJitInfo::Setter,
10186 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10187 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10188 : false, /* isInfallible. False in setters. */
10189 : false, /* isMovable. Not relevant for setters. */
10190 : false, /* isEliminatable. Not relevant for setters. */
10191 : false, /* isAlwaysInSlot. Only relevant for getters. */
10192 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10193 : false, /* isTypedMethod. Only relevant for methods. */
10194 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10195 : };
10196 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10197 : static_assert(0 < 1, "There is no slot for us");
10198 :
10199 : static bool
10200 0 : get_onpointerout(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
10201 : {
10202 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerout());
10203 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10204 0 : if (result) {
10205 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
10206 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
10207 0 : return false;
10208 : }
10209 0 : return true;
10210 : } else {
10211 0 : args.rval().setNull();
10212 0 : return true;
10213 : }
10214 : }
10215 :
10216 : static bool
10217 0 : set_onpointerout(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
10218 : {
10219 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
10220 0 : if (args[0].isObject()) {
10221 : { // scope for tempRoot
10222 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
10223 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
10224 : }
10225 : } else {
10226 0 : arg0 = nullptr;
10227 : }
10228 0 : self->SetOnpointerout(Constify(arg0));
10229 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10230 :
10231 0 : return true;
10232 : }
10233 :
10234 : static const JSJitInfo onpointerout_getterinfo = {
10235 : { (JSJitGetterOp)get_onpointerout },
10236 : { prototypes::id::Document },
10237 : { PrototypeTraits<prototypes::id::Document>::Depth },
10238 : JSJitInfo::Getter,
10239 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10240 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
10241 : false, /* isInfallible. False in setters. */
10242 : false, /* isMovable. Not relevant for setters. */
10243 : false, /* isEliminatable. Not relevant for setters. */
10244 : false, /* isAlwaysInSlot. Only relevant for getters. */
10245 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10246 : false, /* isTypedMethod. Only relevant for methods. */
10247 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10248 : };
10249 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10250 : static_assert(0 < 1, "There is no slot for us");
10251 : static const JSJitInfo onpointerout_setterinfo = {
10252 : { (JSJitGetterOp)set_onpointerout },
10253 : { prototypes::id::Document },
10254 : { PrototypeTraits<prototypes::id::Document>::Depth },
10255 : JSJitInfo::Setter,
10256 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10257 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10258 : false, /* isInfallible. False in setters. */
10259 : false, /* isMovable. Not relevant for setters. */
10260 : false, /* isEliminatable. Not relevant for setters. */
10261 : false, /* isAlwaysInSlot. Only relevant for getters. */
10262 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10263 : false, /* isTypedMethod. Only relevant for methods. */
10264 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10265 : };
10266 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10267 : static_assert(0 < 1, "There is no slot for us");
10268 :
10269 : static bool
10270 0 : get_onpointerover(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
10271 : {
10272 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerover());
10273 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10274 0 : if (result) {
10275 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
10276 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
10277 0 : return false;
10278 : }
10279 0 : return true;
10280 : } else {
10281 0 : args.rval().setNull();
10282 0 : return true;
10283 : }
10284 : }
10285 :
10286 : static bool
10287 0 : set_onpointerover(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
10288 : {
10289 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
10290 0 : if (args[0].isObject()) {
10291 : { // scope for tempRoot
10292 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
10293 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
10294 : }
10295 : } else {
10296 0 : arg0 = nullptr;
10297 : }
10298 0 : self->SetOnpointerover(Constify(arg0));
10299 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10300 :
10301 0 : return true;
10302 : }
10303 :
10304 : static const JSJitInfo onpointerover_getterinfo = {
10305 : { (JSJitGetterOp)get_onpointerover },
10306 : { prototypes::id::Document },
10307 : { PrototypeTraits<prototypes::id::Document>::Depth },
10308 : JSJitInfo::Getter,
10309 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10310 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
10311 : false, /* isInfallible. False in setters. */
10312 : false, /* isMovable. Not relevant for setters. */
10313 : false, /* isEliminatable. Not relevant for setters. */
10314 : false, /* isAlwaysInSlot. Only relevant for getters. */
10315 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10316 : false, /* isTypedMethod. Only relevant for methods. */
10317 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10318 : };
10319 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10320 : static_assert(0 < 1, "There is no slot for us");
10321 : static const JSJitInfo onpointerover_setterinfo = {
10322 : { (JSJitGetterOp)set_onpointerover },
10323 : { prototypes::id::Document },
10324 : { PrototypeTraits<prototypes::id::Document>::Depth },
10325 : JSJitInfo::Setter,
10326 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10327 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10328 : false, /* isInfallible. False in setters. */
10329 : false, /* isMovable. Not relevant for setters. */
10330 : false, /* isEliminatable. Not relevant for setters. */
10331 : false, /* isAlwaysInSlot. Only relevant for getters. */
10332 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10333 : false, /* isTypedMethod. Only relevant for methods. */
10334 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10335 : };
10336 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10337 : static_assert(0 < 1, "There is no slot for us");
10338 :
10339 : static bool
10340 0 : get_onpointerenter(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
10341 : {
10342 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerenter());
10343 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10344 0 : if (result) {
10345 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
10346 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
10347 0 : return false;
10348 : }
10349 0 : return true;
10350 : } else {
10351 0 : args.rval().setNull();
10352 0 : return true;
10353 : }
10354 : }
10355 :
10356 : static bool
10357 0 : set_onpointerenter(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
10358 : {
10359 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
10360 0 : if (args[0].isObject()) {
10361 : { // scope for tempRoot
10362 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
10363 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
10364 : }
10365 : } else {
10366 0 : arg0 = nullptr;
10367 : }
10368 0 : self->SetOnpointerenter(Constify(arg0));
10369 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10370 :
10371 0 : return true;
10372 : }
10373 :
10374 : static const JSJitInfo onpointerenter_getterinfo = {
10375 : { (JSJitGetterOp)get_onpointerenter },
10376 : { prototypes::id::Document },
10377 : { PrototypeTraits<prototypes::id::Document>::Depth },
10378 : JSJitInfo::Getter,
10379 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10380 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
10381 : false, /* isInfallible. False in setters. */
10382 : false, /* isMovable. Not relevant for setters. */
10383 : false, /* isEliminatable. Not relevant for setters. */
10384 : false, /* isAlwaysInSlot. Only relevant for getters. */
10385 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10386 : false, /* isTypedMethod. Only relevant for methods. */
10387 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10388 : };
10389 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10390 : static_assert(0 < 1, "There is no slot for us");
10391 : static const JSJitInfo onpointerenter_setterinfo = {
10392 : { (JSJitGetterOp)set_onpointerenter },
10393 : { prototypes::id::Document },
10394 : { PrototypeTraits<prototypes::id::Document>::Depth },
10395 : JSJitInfo::Setter,
10396 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10397 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10398 : false, /* isInfallible. False in setters. */
10399 : false, /* isMovable. Not relevant for setters. */
10400 : false, /* isEliminatable. Not relevant for setters. */
10401 : false, /* isAlwaysInSlot. Only relevant for getters. */
10402 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10403 : false, /* isTypedMethod. Only relevant for methods. */
10404 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10405 : };
10406 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10407 : static_assert(0 < 1, "There is no slot for us");
10408 :
10409 : static bool
10410 0 : get_onpointerleave(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
10411 : {
10412 0 : RefPtr<EventHandlerNonNull> result(self->GetOnpointerleave());
10413 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10414 0 : if (result) {
10415 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
10416 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
10417 0 : return false;
10418 : }
10419 0 : return true;
10420 : } else {
10421 0 : args.rval().setNull();
10422 0 : return true;
10423 : }
10424 : }
10425 :
10426 : static bool
10427 0 : set_onpointerleave(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
10428 : {
10429 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
10430 0 : if (args[0].isObject()) {
10431 : { // scope for tempRoot
10432 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
10433 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
10434 : }
10435 : } else {
10436 0 : arg0 = nullptr;
10437 : }
10438 0 : self->SetOnpointerleave(Constify(arg0));
10439 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10440 :
10441 0 : return true;
10442 : }
10443 :
10444 : static const JSJitInfo onpointerleave_getterinfo = {
10445 : { (JSJitGetterOp)get_onpointerleave },
10446 : { prototypes::id::Document },
10447 : { PrototypeTraits<prototypes::id::Document>::Depth },
10448 : JSJitInfo::Getter,
10449 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10450 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
10451 : false, /* isInfallible. False in setters. */
10452 : false, /* isMovable. Not relevant for setters. */
10453 : false, /* isEliminatable. Not relevant for setters. */
10454 : false, /* isAlwaysInSlot. Only relevant for getters. */
10455 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10456 : false, /* isTypedMethod. Only relevant for methods. */
10457 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10458 : };
10459 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10460 : static_assert(0 < 1, "There is no slot for us");
10461 : static const JSJitInfo onpointerleave_setterinfo = {
10462 : { (JSJitGetterOp)set_onpointerleave },
10463 : { prototypes::id::Document },
10464 : { PrototypeTraits<prototypes::id::Document>::Depth },
10465 : JSJitInfo::Setter,
10466 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10467 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10468 : false, /* isInfallible. False in setters. */
10469 : false, /* isMovable. Not relevant for setters. */
10470 : false, /* isEliminatable. Not relevant for setters. */
10471 : false, /* isAlwaysInSlot. Only relevant for getters. */
10472 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10473 : false, /* isTypedMethod. Only relevant for methods. */
10474 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10475 : };
10476 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10477 : static_assert(0 < 1, "There is no slot for us");
10478 :
10479 : static bool
10480 0 : get_ongotpointercapture(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
10481 : {
10482 0 : RefPtr<EventHandlerNonNull> result(self->GetOngotpointercapture());
10483 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10484 0 : if (result) {
10485 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
10486 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
10487 0 : return false;
10488 : }
10489 0 : return true;
10490 : } else {
10491 0 : args.rval().setNull();
10492 0 : return true;
10493 : }
10494 : }
10495 :
10496 : static bool
10497 0 : set_ongotpointercapture(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
10498 : {
10499 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
10500 0 : if (args[0].isObject()) {
10501 : { // scope for tempRoot
10502 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
10503 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
10504 : }
10505 : } else {
10506 0 : arg0 = nullptr;
10507 : }
10508 0 : self->SetOngotpointercapture(Constify(arg0));
10509 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10510 :
10511 0 : return true;
10512 : }
10513 :
10514 : static const JSJitInfo ongotpointercapture_getterinfo = {
10515 : { (JSJitGetterOp)get_ongotpointercapture },
10516 : { prototypes::id::Document },
10517 : { PrototypeTraits<prototypes::id::Document>::Depth },
10518 : JSJitInfo::Getter,
10519 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10520 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
10521 : false, /* isInfallible. False in setters. */
10522 : false, /* isMovable. Not relevant for setters. */
10523 : false, /* isEliminatable. Not relevant for setters. */
10524 : false, /* isAlwaysInSlot. Only relevant for getters. */
10525 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10526 : false, /* isTypedMethod. Only relevant for methods. */
10527 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10528 : };
10529 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10530 : static_assert(0 < 1, "There is no slot for us");
10531 : static const JSJitInfo ongotpointercapture_setterinfo = {
10532 : { (JSJitGetterOp)set_ongotpointercapture },
10533 : { prototypes::id::Document },
10534 : { PrototypeTraits<prototypes::id::Document>::Depth },
10535 : JSJitInfo::Setter,
10536 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10537 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10538 : false, /* isInfallible. False in setters. */
10539 : false, /* isMovable. Not relevant for setters. */
10540 : false, /* isEliminatable. Not relevant for setters. */
10541 : false, /* isAlwaysInSlot. Only relevant for getters. */
10542 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10543 : false, /* isTypedMethod. Only relevant for methods. */
10544 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10545 : };
10546 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10547 : static_assert(0 < 1, "There is no slot for us");
10548 :
10549 : static bool
10550 0 : get_onlostpointercapture(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
10551 : {
10552 0 : RefPtr<EventHandlerNonNull> result(self->GetOnlostpointercapture());
10553 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10554 0 : if (result) {
10555 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
10556 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
10557 0 : return false;
10558 : }
10559 0 : return true;
10560 : } else {
10561 0 : args.rval().setNull();
10562 0 : return true;
10563 : }
10564 : }
10565 :
10566 : static bool
10567 0 : set_onlostpointercapture(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
10568 : {
10569 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
10570 0 : if (args[0].isObject()) {
10571 : { // scope for tempRoot
10572 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
10573 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
10574 : }
10575 : } else {
10576 0 : arg0 = nullptr;
10577 : }
10578 0 : self->SetOnlostpointercapture(Constify(arg0));
10579 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10580 :
10581 0 : return true;
10582 : }
10583 :
10584 : static const JSJitInfo onlostpointercapture_getterinfo = {
10585 : { (JSJitGetterOp)get_onlostpointercapture },
10586 : { prototypes::id::Document },
10587 : { PrototypeTraits<prototypes::id::Document>::Depth },
10588 : JSJitInfo::Getter,
10589 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10590 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
10591 : false, /* isInfallible. False in setters. */
10592 : false, /* isMovable. Not relevant for setters. */
10593 : false, /* isEliminatable. Not relevant for setters. */
10594 : false, /* isAlwaysInSlot. Only relevant for getters. */
10595 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10596 : false, /* isTypedMethod. Only relevant for methods. */
10597 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10598 : };
10599 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10600 : static_assert(0 < 1, "There is no slot for us");
10601 : static const JSJitInfo onlostpointercapture_setterinfo = {
10602 : { (JSJitGetterOp)set_onlostpointercapture },
10603 : { prototypes::id::Document },
10604 : { PrototypeTraits<prototypes::id::Document>::Depth },
10605 : JSJitInfo::Setter,
10606 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10607 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10608 : false, /* isInfallible. False in setters. */
10609 : false, /* isMovable. Not relevant for setters. */
10610 : false, /* isEliminatable. Not relevant for setters. */
10611 : false, /* isAlwaysInSlot. Only relevant for getters. */
10612 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10613 : false, /* isTypedMethod. Only relevant for methods. */
10614 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10615 : };
10616 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10617 : static_assert(0 < 1, "There is no slot for us");
10618 :
10619 : static bool
10620 0 : get_onmozfullscreenchange(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
10621 : {
10622 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmozfullscreenchange());
10623 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10624 0 : if (result) {
10625 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
10626 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
10627 0 : return false;
10628 : }
10629 0 : return true;
10630 : } else {
10631 0 : args.rval().setNull();
10632 0 : return true;
10633 : }
10634 : }
10635 :
10636 : static bool
10637 0 : set_onmozfullscreenchange(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
10638 : {
10639 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
10640 0 : if (args[0].isObject()) {
10641 : { // scope for tempRoot
10642 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
10643 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
10644 : }
10645 : } else {
10646 0 : arg0 = nullptr;
10647 : }
10648 0 : self->SetOnmozfullscreenchange(Constify(arg0));
10649 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10650 :
10651 0 : return true;
10652 : }
10653 :
10654 : static const JSJitInfo onmozfullscreenchange_getterinfo = {
10655 : { (JSJitGetterOp)get_onmozfullscreenchange },
10656 : { prototypes::id::Document },
10657 : { PrototypeTraits<prototypes::id::Document>::Depth },
10658 : JSJitInfo::Getter,
10659 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10660 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
10661 : false, /* isInfallible. False in setters. */
10662 : false, /* isMovable. Not relevant for setters. */
10663 : false, /* isEliminatable. Not relevant for setters. */
10664 : false, /* isAlwaysInSlot. Only relevant for getters. */
10665 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10666 : false, /* isTypedMethod. Only relevant for methods. */
10667 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10668 : };
10669 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10670 : static_assert(0 < 1, "There is no slot for us");
10671 : static const JSJitInfo onmozfullscreenchange_setterinfo = {
10672 : { (JSJitGetterOp)set_onmozfullscreenchange },
10673 : { prototypes::id::Document },
10674 : { PrototypeTraits<prototypes::id::Document>::Depth },
10675 : JSJitInfo::Setter,
10676 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10677 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10678 : false, /* isInfallible. False in setters. */
10679 : false, /* isMovable. Not relevant for setters. */
10680 : false, /* isEliminatable. Not relevant for setters. */
10681 : false, /* isAlwaysInSlot. Only relevant for getters. */
10682 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10683 : false, /* isTypedMethod. Only relevant for methods. */
10684 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10685 : };
10686 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10687 : static_assert(0 < 1, "There is no slot for us");
10688 :
10689 : static bool
10690 0 : get_onmozfullscreenerror(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
10691 : {
10692 0 : RefPtr<EventHandlerNonNull> result(self->GetOnmozfullscreenerror());
10693 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10694 0 : if (result) {
10695 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
10696 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
10697 0 : return false;
10698 : }
10699 0 : return true;
10700 : } else {
10701 0 : args.rval().setNull();
10702 0 : return true;
10703 : }
10704 : }
10705 :
10706 : static bool
10707 0 : set_onmozfullscreenerror(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
10708 : {
10709 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
10710 0 : if (args[0].isObject()) {
10711 : { // scope for tempRoot
10712 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
10713 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
10714 : }
10715 : } else {
10716 0 : arg0 = nullptr;
10717 : }
10718 0 : self->SetOnmozfullscreenerror(Constify(arg0));
10719 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10720 :
10721 0 : return true;
10722 : }
10723 :
10724 : static const JSJitInfo onmozfullscreenerror_getterinfo = {
10725 : { (JSJitGetterOp)get_onmozfullscreenerror },
10726 : { prototypes::id::Document },
10727 : { PrototypeTraits<prototypes::id::Document>::Depth },
10728 : JSJitInfo::Getter,
10729 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10730 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
10731 : false, /* isInfallible. False in setters. */
10732 : false, /* isMovable. Not relevant for setters. */
10733 : false, /* isEliminatable. Not relevant for setters. */
10734 : false, /* isAlwaysInSlot. Only relevant for getters. */
10735 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10736 : false, /* isTypedMethod. Only relevant for methods. */
10737 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10738 : };
10739 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10740 : static_assert(0 < 1, "There is no slot for us");
10741 : static const JSJitInfo onmozfullscreenerror_setterinfo = {
10742 : { (JSJitGetterOp)set_onmozfullscreenerror },
10743 : { prototypes::id::Document },
10744 : { PrototypeTraits<prototypes::id::Document>::Depth },
10745 : JSJitInfo::Setter,
10746 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10747 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10748 : false, /* isInfallible. False in setters. */
10749 : false, /* isMovable. Not relevant for setters. */
10750 : false, /* isEliminatable. Not relevant for setters. */
10751 : false, /* isAlwaysInSlot. Only relevant for getters. */
10752 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10753 : false, /* isTypedMethod. Only relevant for methods. */
10754 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10755 : };
10756 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10757 : static_assert(0 < 1, "There is no slot for us");
10758 :
10759 : static bool
10760 0 : get_onanimationcancel(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
10761 : {
10762 0 : RefPtr<EventHandlerNonNull> result(self->GetOnanimationcancel());
10763 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10764 0 : if (result) {
10765 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
10766 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
10767 0 : return false;
10768 : }
10769 0 : return true;
10770 : } else {
10771 0 : args.rval().setNull();
10772 0 : return true;
10773 : }
10774 : }
10775 :
10776 : static bool
10777 0 : set_onanimationcancel(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
10778 : {
10779 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
10780 0 : if (args[0].isObject()) {
10781 : { // scope for tempRoot
10782 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
10783 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
10784 : }
10785 : } else {
10786 0 : arg0 = nullptr;
10787 : }
10788 0 : self->SetOnanimationcancel(Constify(arg0));
10789 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10790 :
10791 0 : return true;
10792 : }
10793 :
10794 : static const JSJitInfo onanimationcancel_getterinfo = {
10795 : { (JSJitGetterOp)get_onanimationcancel },
10796 : { prototypes::id::Document },
10797 : { PrototypeTraits<prototypes::id::Document>::Depth },
10798 : JSJitInfo::Getter,
10799 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10800 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
10801 : false, /* isInfallible. False in setters. */
10802 : false, /* isMovable. Not relevant for setters. */
10803 : false, /* isEliminatable. Not relevant for setters. */
10804 : false, /* isAlwaysInSlot. Only relevant for getters. */
10805 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10806 : false, /* isTypedMethod. Only relevant for methods. */
10807 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10808 : };
10809 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10810 : static_assert(0 < 1, "There is no slot for us");
10811 : static const JSJitInfo onanimationcancel_setterinfo = {
10812 : { (JSJitGetterOp)set_onanimationcancel },
10813 : { prototypes::id::Document },
10814 : { PrototypeTraits<prototypes::id::Document>::Depth },
10815 : JSJitInfo::Setter,
10816 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10817 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10818 : false, /* isInfallible. False in setters. */
10819 : false, /* isMovable. Not relevant for setters. */
10820 : false, /* isEliminatable. Not relevant for setters. */
10821 : false, /* isAlwaysInSlot. Only relevant for getters. */
10822 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10823 : false, /* isTypedMethod. Only relevant for methods. */
10824 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10825 : };
10826 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10827 : static_assert(0 < 1, "There is no slot for us");
10828 :
10829 : static bool
10830 0 : get_onanimationend(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
10831 : {
10832 0 : RefPtr<EventHandlerNonNull> result(self->GetOnanimationend());
10833 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10834 0 : if (result) {
10835 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
10836 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
10837 0 : return false;
10838 : }
10839 0 : return true;
10840 : } else {
10841 0 : args.rval().setNull();
10842 0 : return true;
10843 : }
10844 : }
10845 :
10846 : static bool
10847 0 : set_onanimationend(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
10848 : {
10849 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
10850 0 : if (args[0].isObject()) {
10851 : { // scope for tempRoot
10852 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
10853 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
10854 : }
10855 : } else {
10856 0 : arg0 = nullptr;
10857 : }
10858 0 : self->SetOnanimationend(Constify(arg0));
10859 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10860 :
10861 0 : return true;
10862 : }
10863 :
10864 : static const JSJitInfo onanimationend_getterinfo = {
10865 : { (JSJitGetterOp)get_onanimationend },
10866 : { prototypes::id::Document },
10867 : { PrototypeTraits<prototypes::id::Document>::Depth },
10868 : JSJitInfo::Getter,
10869 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10870 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
10871 : false, /* isInfallible. False in setters. */
10872 : false, /* isMovable. Not relevant for setters. */
10873 : false, /* isEliminatable. Not relevant for setters. */
10874 : false, /* isAlwaysInSlot. Only relevant for getters. */
10875 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10876 : false, /* isTypedMethod. Only relevant for methods. */
10877 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10878 : };
10879 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10880 : static_assert(0 < 1, "There is no slot for us");
10881 : static const JSJitInfo onanimationend_setterinfo = {
10882 : { (JSJitGetterOp)set_onanimationend },
10883 : { prototypes::id::Document },
10884 : { PrototypeTraits<prototypes::id::Document>::Depth },
10885 : JSJitInfo::Setter,
10886 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10887 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10888 : false, /* isInfallible. False in setters. */
10889 : false, /* isMovable. Not relevant for setters. */
10890 : false, /* isEliminatable. Not relevant for setters. */
10891 : false, /* isAlwaysInSlot. Only relevant for getters. */
10892 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10893 : false, /* isTypedMethod. Only relevant for methods. */
10894 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10895 : };
10896 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10897 : static_assert(0 < 1, "There is no slot for us");
10898 :
10899 : static bool
10900 0 : get_onanimationiteration(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
10901 : {
10902 0 : RefPtr<EventHandlerNonNull> result(self->GetOnanimationiteration());
10903 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10904 0 : if (result) {
10905 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
10906 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
10907 0 : return false;
10908 : }
10909 0 : return true;
10910 : } else {
10911 0 : args.rval().setNull();
10912 0 : return true;
10913 : }
10914 : }
10915 :
10916 : static bool
10917 0 : set_onanimationiteration(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
10918 : {
10919 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
10920 0 : if (args[0].isObject()) {
10921 : { // scope for tempRoot
10922 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
10923 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
10924 : }
10925 : } else {
10926 0 : arg0 = nullptr;
10927 : }
10928 0 : self->SetOnanimationiteration(Constify(arg0));
10929 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10930 :
10931 0 : return true;
10932 : }
10933 :
10934 : static const JSJitInfo onanimationiteration_getterinfo = {
10935 : { (JSJitGetterOp)get_onanimationiteration },
10936 : { prototypes::id::Document },
10937 : { PrototypeTraits<prototypes::id::Document>::Depth },
10938 : JSJitInfo::Getter,
10939 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10940 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
10941 : false, /* isInfallible. False in setters. */
10942 : false, /* isMovable. Not relevant for setters. */
10943 : false, /* isEliminatable. Not relevant for setters. */
10944 : false, /* isAlwaysInSlot. Only relevant for getters. */
10945 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10946 : false, /* isTypedMethod. Only relevant for methods. */
10947 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10948 : };
10949 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10950 : static_assert(0 < 1, "There is no slot for us");
10951 : static const JSJitInfo onanimationiteration_setterinfo = {
10952 : { (JSJitGetterOp)set_onanimationiteration },
10953 : { prototypes::id::Document },
10954 : { PrototypeTraits<prototypes::id::Document>::Depth },
10955 : JSJitInfo::Setter,
10956 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
10957 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
10958 : false, /* isInfallible. False in setters. */
10959 : false, /* isMovable. Not relevant for setters. */
10960 : false, /* isEliminatable. Not relevant for setters. */
10961 : false, /* isAlwaysInSlot. Only relevant for getters. */
10962 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
10963 : false, /* isTypedMethod. Only relevant for methods. */
10964 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
10965 : };
10966 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
10967 : static_assert(0 < 1, "There is no slot for us");
10968 :
10969 : static bool
10970 0 : get_onanimationstart(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
10971 : {
10972 0 : RefPtr<EventHandlerNonNull> result(self->GetOnanimationstart());
10973 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
10974 0 : if (result) {
10975 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
10976 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
10977 0 : return false;
10978 : }
10979 0 : return true;
10980 : } else {
10981 0 : args.rval().setNull();
10982 0 : return true;
10983 : }
10984 : }
10985 :
10986 : static bool
10987 0 : set_onanimationstart(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
10988 : {
10989 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
10990 0 : if (args[0].isObject()) {
10991 : { // scope for tempRoot
10992 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
10993 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
10994 : }
10995 : } else {
10996 0 : arg0 = nullptr;
10997 : }
10998 0 : self->SetOnanimationstart(Constify(arg0));
10999 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11000 :
11001 0 : return true;
11002 : }
11003 :
11004 : static const JSJitInfo onanimationstart_getterinfo = {
11005 : { (JSJitGetterOp)get_onanimationstart },
11006 : { prototypes::id::Document },
11007 : { PrototypeTraits<prototypes::id::Document>::Depth },
11008 : JSJitInfo::Getter,
11009 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11010 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11011 : false, /* isInfallible. False in setters. */
11012 : false, /* isMovable. Not relevant for setters. */
11013 : false, /* isEliminatable. Not relevant for setters. */
11014 : false, /* isAlwaysInSlot. Only relevant for getters. */
11015 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11016 : false, /* isTypedMethod. Only relevant for methods. */
11017 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11018 : };
11019 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11020 : static_assert(0 < 1, "There is no slot for us");
11021 : static const JSJitInfo onanimationstart_setterinfo = {
11022 : { (JSJitGetterOp)set_onanimationstart },
11023 : { prototypes::id::Document },
11024 : { PrototypeTraits<prototypes::id::Document>::Depth },
11025 : JSJitInfo::Setter,
11026 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11027 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11028 : false, /* isInfallible. False in setters. */
11029 : false, /* isMovable. Not relevant for setters. */
11030 : false, /* isEliminatable. Not relevant for setters. */
11031 : false, /* isAlwaysInSlot. Only relevant for getters. */
11032 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11033 : false, /* isTypedMethod. Only relevant for methods. */
11034 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11035 : };
11036 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11037 : static_assert(0 < 1, "There is no slot for us");
11038 :
11039 : static bool
11040 0 : get_ontransitioncancel(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
11041 : {
11042 0 : RefPtr<EventHandlerNonNull> result(self->GetOntransitioncancel());
11043 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11044 0 : if (result) {
11045 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
11046 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
11047 0 : return false;
11048 : }
11049 0 : return true;
11050 : } else {
11051 0 : args.rval().setNull();
11052 0 : return true;
11053 : }
11054 : }
11055 :
11056 : static bool
11057 0 : set_ontransitioncancel(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
11058 : {
11059 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
11060 0 : if (args[0].isObject()) {
11061 : { // scope for tempRoot
11062 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
11063 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
11064 : }
11065 : } else {
11066 0 : arg0 = nullptr;
11067 : }
11068 0 : self->SetOntransitioncancel(Constify(arg0));
11069 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11070 :
11071 0 : return true;
11072 : }
11073 :
11074 : static const JSJitInfo ontransitioncancel_getterinfo = {
11075 : { (JSJitGetterOp)get_ontransitioncancel },
11076 : { prototypes::id::Document },
11077 : { PrototypeTraits<prototypes::id::Document>::Depth },
11078 : JSJitInfo::Getter,
11079 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11080 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11081 : false, /* isInfallible. False in setters. */
11082 : false, /* isMovable. Not relevant for setters. */
11083 : false, /* isEliminatable. Not relevant for setters. */
11084 : false, /* isAlwaysInSlot. Only relevant for getters. */
11085 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11086 : false, /* isTypedMethod. Only relevant for methods. */
11087 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11088 : };
11089 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11090 : static_assert(0 < 1, "There is no slot for us");
11091 : static const JSJitInfo ontransitioncancel_setterinfo = {
11092 : { (JSJitGetterOp)set_ontransitioncancel },
11093 : { prototypes::id::Document },
11094 : { PrototypeTraits<prototypes::id::Document>::Depth },
11095 : JSJitInfo::Setter,
11096 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11097 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11098 : false, /* isInfallible. False in setters. */
11099 : false, /* isMovable. Not relevant for setters. */
11100 : false, /* isEliminatable. Not relevant for setters. */
11101 : false, /* isAlwaysInSlot. Only relevant for getters. */
11102 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11103 : false, /* isTypedMethod. Only relevant for methods. */
11104 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11105 : };
11106 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11107 : static_assert(0 < 1, "There is no slot for us");
11108 :
11109 : static bool
11110 0 : get_ontransitionend(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
11111 : {
11112 0 : RefPtr<EventHandlerNonNull> result(self->GetOntransitionend());
11113 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11114 0 : if (result) {
11115 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
11116 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
11117 0 : return false;
11118 : }
11119 0 : return true;
11120 : } else {
11121 0 : args.rval().setNull();
11122 0 : return true;
11123 : }
11124 : }
11125 :
11126 : static bool
11127 0 : set_ontransitionend(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
11128 : {
11129 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
11130 0 : if (args[0].isObject()) {
11131 : { // scope for tempRoot
11132 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
11133 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
11134 : }
11135 : } else {
11136 0 : arg0 = nullptr;
11137 : }
11138 0 : self->SetOntransitionend(Constify(arg0));
11139 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11140 :
11141 0 : return true;
11142 : }
11143 :
11144 : static const JSJitInfo ontransitionend_getterinfo = {
11145 : { (JSJitGetterOp)get_ontransitionend },
11146 : { prototypes::id::Document },
11147 : { PrototypeTraits<prototypes::id::Document>::Depth },
11148 : JSJitInfo::Getter,
11149 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11150 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11151 : false, /* isInfallible. False in setters. */
11152 : false, /* isMovable. Not relevant for setters. */
11153 : false, /* isEliminatable. Not relevant for setters. */
11154 : false, /* isAlwaysInSlot. Only relevant for getters. */
11155 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11156 : false, /* isTypedMethod. Only relevant for methods. */
11157 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11158 : };
11159 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11160 : static_assert(0 < 1, "There is no slot for us");
11161 : static const JSJitInfo ontransitionend_setterinfo = {
11162 : { (JSJitGetterOp)set_ontransitionend },
11163 : { prototypes::id::Document },
11164 : { PrototypeTraits<prototypes::id::Document>::Depth },
11165 : JSJitInfo::Setter,
11166 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11167 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11168 : false, /* isInfallible. False in setters. */
11169 : false, /* isMovable. Not relevant for setters. */
11170 : false, /* isEliminatable. Not relevant for setters. */
11171 : false, /* isAlwaysInSlot. Only relevant for getters. */
11172 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11173 : false, /* isTypedMethod. Only relevant for methods. */
11174 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11175 : };
11176 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11177 : static_assert(0 < 1, "There is no slot for us");
11178 :
11179 : static bool
11180 0 : get_ontransitionrun(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
11181 : {
11182 0 : RefPtr<EventHandlerNonNull> result(self->GetOntransitionrun());
11183 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11184 0 : if (result) {
11185 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
11186 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
11187 0 : return false;
11188 : }
11189 0 : return true;
11190 : } else {
11191 0 : args.rval().setNull();
11192 0 : return true;
11193 : }
11194 : }
11195 :
11196 : static bool
11197 0 : set_ontransitionrun(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
11198 : {
11199 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
11200 0 : if (args[0].isObject()) {
11201 : { // scope for tempRoot
11202 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
11203 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
11204 : }
11205 : } else {
11206 0 : arg0 = nullptr;
11207 : }
11208 0 : self->SetOntransitionrun(Constify(arg0));
11209 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11210 :
11211 0 : return true;
11212 : }
11213 :
11214 : static const JSJitInfo ontransitionrun_getterinfo = {
11215 : { (JSJitGetterOp)get_ontransitionrun },
11216 : { prototypes::id::Document },
11217 : { PrototypeTraits<prototypes::id::Document>::Depth },
11218 : JSJitInfo::Getter,
11219 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11220 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11221 : false, /* isInfallible. False in setters. */
11222 : false, /* isMovable. Not relevant for setters. */
11223 : false, /* isEliminatable. Not relevant for setters. */
11224 : false, /* isAlwaysInSlot. Only relevant for getters. */
11225 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11226 : false, /* isTypedMethod. Only relevant for methods. */
11227 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11228 : };
11229 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11230 : static_assert(0 < 1, "There is no slot for us");
11231 : static const JSJitInfo ontransitionrun_setterinfo = {
11232 : { (JSJitGetterOp)set_ontransitionrun },
11233 : { prototypes::id::Document },
11234 : { PrototypeTraits<prototypes::id::Document>::Depth },
11235 : JSJitInfo::Setter,
11236 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11237 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11238 : false, /* isInfallible. False in setters. */
11239 : false, /* isMovable. Not relevant for setters. */
11240 : false, /* isEliminatable. Not relevant for setters. */
11241 : false, /* isAlwaysInSlot. Only relevant for getters. */
11242 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11243 : false, /* isTypedMethod. Only relevant for methods. */
11244 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11245 : };
11246 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11247 : static_assert(0 < 1, "There is no slot for us");
11248 :
11249 : static bool
11250 0 : get_ontransitionstart(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
11251 : {
11252 0 : RefPtr<EventHandlerNonNull> result(self->GetOntransitionstart());
11253 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11254 0 : if (result) {
11255 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
11256 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
11257 0 : return false;
11258 : }
11259 0 : return true;
11260 : } else {
11261 0 : args.rval().setNull();
11262 0 : return true;
11263 : }
11264 : }
11265 :
11266 : static bool
11267 0 : set_ontransitionstart(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
11268 : {
11269 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
11270 0 : if (args[0].isObject()) {
11271 : { // scope for tempRoot
11272 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
11273 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
11274 : }
11275 : } else {
11276 0 : arg0 = nullptr;
11277 : }
11278 0 : self->SetOntransitionstart(Constify(arg0));
11279 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11280 :
11281 0 : return true;
11282 : }
11283 :
11284 : static const JSJitInfo ontransitionstart_getterinfo = {
11285 : { (JSJitGetterOp)get_ontransitionstart },
11286 : { prototypes::id::Document },
11287 : { PrototypeTraits<prototypes::id::Document>::Depth },
11288 : JSJitInfo::Getter,
11289 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11290 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11291 : false, /* isInfallible. False in setters. */
11292 : false, /* isMovable. Not relevant for setters. */
11293 : false, /* isEliminatable. Not relevant for setters. */
11294 : false, /* isAlwaysInSlot. Only relevant for getters. */
11295 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11296 : false, /* isTypedMethod. Only relevant for methods. */
11297 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11298 : };
11299 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11300 : static_assert(0 < 1, "There is no slot for us");
11301 : static const JSJitInfo ontransitionstart_setterinfo = {
11302 : { (JSJitGetterOp)set_ontransitionstart },
11303 : { prototypes::id::Document },
11304 : { PrototypeTraits<prototypes::id::Document>::Depth },
11305 : JSJitInfo::Setter,
11306 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11307 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11308 : false, /* isInfallible. False in setters. */
11309 : false, /* isMovable. Not relevant for setters. */
11310 : false, /* isEliminatable. Not relevant for setters. */
11311 : false, /* isAlwaysInSlot. Only relevant for getters. */
11312 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11313 : false, /* isTypedMethod. Only relevant for methods. */
11314 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11315 : };
11316 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11317 : static_assert(0 < 1, "There is no slot for us");
11318 :
11319 : static bool
11320 0 : get_onwebkitanimationend(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
11321 : {
11322 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwebkitanimationend());
11323 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11324 0 : if (result) {
11325 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
11326 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
11327 0 : return false;
11328 : }
11329 0 : return true;
11330 : } else {
11331 0 : args.rval().setNull();
11332 0 : return true;
11333 : }
11334 : }
11335 :
11336 : static bool
11337 0 : set_onwebkitanimationend(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
11338 : {
11339 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
11340 0 : if (args[0].isObject()) {
11341 : { // scope for tempRoot
11342 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
11343 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
11344 : }
11345 : } else {
11346 0 : arg0 = nullptr;
11347 : }
11348 0 : self->SetOnwebkitanimationend(Constify(arg0));
11349 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11350 :
11351 0 : return true;
11352 : }
11353 :
11354 : static const JSJitInfo onwebkitanimationend_getterinfo = {
11355 : { (JSJitGetterOp)get_onwebkitanimationend },
11356 : { prototypes::id::Document },
11357 : { PrototypeTraits<prototypes::id::Document>::Depth },
11358 : JSJitInfo::Getter,
11359 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11360 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11361 : false, /* isInfallible. False in setters. */
11362 : false, /* isMovable. Not relevant for setters. */
11363 : false, /* isEliminatable. Not relevant for setters. */
11364 : false, /* isAlwaysInSlot. Only relevant for getters. */
11365 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11366 : false, /* isTypedMethod. Only relevant for methods. */
11367 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11368 : };
11369 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11370 : static_assert(0 < 1, "There is no slot for us");
11371 : static const JSJitInfo onwebkitanimationend_setterinfo = {
11372 : { (JSJitGetterOp)set_onwebkitanimationend },
11373 : { prototypes::id::Document },
11374 : { PrototypeTraits<prototypes::id::Document>::Depth },
11375 : JSJitInfo::Setter,
11376 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11377 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11378 : false, /* isInfallible. False in setters. */
11379 : false, /* isMovable. Not relevant for setters. */
11380 : false, /* isEliminatable. Not relevant for setters. */
11381 : false, /* isAlwaysInSlot. Only relevant for getters. */
11382 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11383 : false, /* isTypedMethod. Only relevant for methods. */
11384 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11385 : };
11386 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11387 : static_assert(0 < 1, "There is no slot for us");
11388 :
11389 : static bool
11390 0 : get_onwebkitanimationiteration(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
11391 : {
11392 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwebkitanimationiteration());
11393 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11394 0 : if (result) {
11395 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
11396 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
11397 0 : return false;
11398 : }
11399 0 : return true;
11400 : } else {
11401 0 : args.rval().setNull();
11402 0 : return true;
11403 : }
11404 : }
11405 :
11406 : static bool
11407 0 : set_onwebkitanimationiteration(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
11408 : {
11409 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
11410 0 : if (args[0].isObject()) {
11411 : { // scope for tempRoot
11412 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
11413 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
11414 : }
11415 : } else {
11416 0 : arg0 = nullptr;
11417 : }
11418 0 : self->SetOnwebkitanimationiteration(Constify(arg0));
11419 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11420 :
11421 0 : return true;
11422 : }
11423 :
11424 : static const JSJitInfo onwebkitanimationiteration_getterinfo = {
11425 : { (JSJitGetterOp)get_onwebkitanimationiteration },
11426 : { prototypes::id::Document },
11427 : { PrototypeTraits<prototypes::id::Document>::Depth },
11428 : JSJitInfo::Getter,
11429 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11430 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11431 : false, /* isInfallible. False in setters. */
11432 : false, /* isMovable. Not relevant for setters. */
11433 : false, /* isEliminatable. Not relevant for setters. */
11434 : false, /* isAlwaysInSlot. Only relevant for getters. */
11435 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11436 : false, /* isTypedMethod. Only relevant for methods. */
11437 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11438 : };
11439 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11440 : static_assert(0 < 1, "There is no slot for us");
11441 : static const JSJitInfo onwebkitanimationiteration_setterinfo = {
11442 : { (JSJitGetterOp)set_onwebkitanimationiteration },
11443 : { prototypes::id::Document },
11444 : { PrototypeTraits<prototypes::id::Document>::Depth },
11445 : JSJitInfo::Setter,
11446 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11447 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11448 : false, /* isInfallible. False in setters. */
11449 : false, /* isMovable. Not relevant for setters. */
11450 : false, /* isEliminatable. Not relevant for setters. */
11451 : false, /* isAlwaysInSlot. Only relevant for getters. */
11452 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11453 : false, /* isTypedMethod. Only relevant for methods. */
11454 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11455 : };
11456 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11457 : static_assert(0 < 1, "There is no slot for us");
11458 :
11459 : static bool
11460 0 : get_onwebkitanimationstart(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
11461 : {
11462 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwebkitanimationstart());
11463 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11464 0 : if (result) {
11465 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
11466 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
11467 0 : return false;
11468 : }
11469 0 : return true;
11470 : } else {
11471 0 : args.rval().setNull();
11472 0 : return true;
11473 : }
11474 : }
11475 :
11476 : static bool
11477 0 : set_onwebkitanimationstart(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
11478 : {
11479 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
11480 0 : if (args[0].isObject()) {
11481 : { // scope for tempRoot
11482 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
11483 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
11484 : }
11485 : } else {
11486 0 : arg0 = nullptr;
11487 : }
11488 0 : self->SetOnwebkitanimationstart(Constify(arg0));
11489 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11490 :
11491 0 : return true;
11492 : }
11493 :
11494 : static const JSJitInfo onwebkitanimationstart_getterinfo = {
11495 : { (JSJitGetterOp)get_onwebkitanimationstart },
11496 : { prototypes::id::Document },
11497 : { PrototypeTraits<prototypes::id::Document>::Depth },
11498 : JSJitInfo::Getter,
11499 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11500 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11501 : false, /* isInfallible. False in setters. */
11502 : false, /* isMovable. Not relevant for setters. */
11503 : false, /* isEliminatable. Not relevant for setters. */
11504 : false, /* isAlwaysInSlot. Only relevant for getters. */
11505 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11506 : false, /* isTypedMethod. Only relevant for methods. */
11507 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11508 : };
11509 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11510 : static_assert(0 < 1, "There is no slot for us");
11511 : static const JSJitInfo onwebkitanimationstart_setterinfo = {
11512 : { (JSJitGetterOp)set_onwebkitanimationstart },
11513 : { prototypes::id::Document },
11514 : { PrototypeTraits<prototypes::id::Document>::Depth },
11515 : JSJitInfo::Setter,
11516 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11517 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11518 : false, /* isInfallible. False in setters. */
11519 : false, /* isMovable. Not relevant for setters. */
11520 : false, /* isEliminatable. Not relevant for setters. */
11521 : false, /* isAlwaysInSlot. Only relevant for getters. */
11522 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11523 : false, /* isTypedMethod. Only relevant for methods. */
11524 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11525 : };
11526 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11527 : static_assert(0 < 1, "There is no slot for us");
11528 :
11529 : static bool
11530 0 : get_onwebkittransitionend(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
11531 : {
11532 0 : RefPtr<EventHandlerNonNull> result(self->GetOnwebkittransitionend());
11533 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11534 0 : if (result) {
11535 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
11536 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
11537 0 : return false;
11538 : }
11539 0 : return true;
11540 : } else {
11541 0 : args.rval().setNull();
11542 0 : return true;
11543 : }
11544 : }
11545 :
11546 : static bool
11547 0 : set_onwebkittransitionend(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
11548 : {
11549 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
11550 0 : if (args[0].isObject()) {
11551 : { // scope for tempRoot
11552 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
11553 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
11554 : }
11555 : } else {
11556 0 : arg0 = nullptr;
11557 : }
11558 0 : self->SetOnwebkittransitionend(Constify(arg0));
11559 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11560 :
11561 0 : return true;
11562 : }
11563 :
11564 : static const JSJitInfo onwebkittransitionend_getterinfo = {
11565 : { (JSJitGetterOp)get_onwebkittransitionend },
11566 : { prototypes::id::Document },
11567 : { PrototypeTraits<prototypes::id::Document>::Depth },
11568 : JSJitInfo::Getter,
11569 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11570 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11571 : false, /* isInfallible. False in setters. */
11572 : false, /* isMovable. Not relevant for setters. */
11573 : false, /* isEliminatable. Not relevant for setters. */
11574 : false, /* isAlwaysInSlot. Only relevant for getters. */
11575 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11576 : false, /* isTypedMethod. Only relevant for methods. */
11577 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11578 : };
11579 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11580 : static_assert(0 < 1, "There is no slot for us");
11581 : static const JSJitInfo onwebkittransitionend_setterinfo = {
11582 : { (JSJitGetterOp)set_onwebkittransitionend },
11583 : { prototypes::id::Document },
11584 : { PrototypeTraits<prototypes::id::Document>::Depth },
11585 : JSJitInfo::Setter,
11586 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11587 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11588 : false, /* isInfallible. False in setters. */
11589 : false, /* isMovable. Not relevant for setters. */
11590 : false, /* isEliminatable. Not relevant for setters. */
11591 : false, /* isAlwaysInSlot. Only relevant for getters. */
11592 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11593 : false, /* isTypedMethod. Only relevant for methods. */
11594 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11595 : };
11596 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11597 : static_assert(0 < 1, "There is no slot for us");
11598 :
11599 : static bool
11600 0 : get_onerror(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
11601 : {
11602 0 : RefPtr<EventHandlerNonNull> result(self->GetOnerror());
11603 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11604 0 : if (result) {
11605 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
11606 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
11607 0 : return false;
11608 : }
11609 0 : return true;
11610 : } else {
11611 0 : args.rval().setNull();
11612 0 : return true;
11613 : }
11614 : }
11615 :
11616 : static bool
11617 0 : set_onerror(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
11618 : {
11619 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
11620 0 : if (args[0].isObject()) {
11621 : { // scope for tempRoot
11622 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
11623 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
11624 : }
11625 : } else {
11626 0 : arg0 = nullptr;
11627 : }
11628 0 : self->SetOnerror(Constify(arg0));
11629 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11630 :
11631 0 : return true;
11632 : }
11633 :
11634 : static const JSJitInfo onerror_getterinfo = {
11635 : { (JSJitGetterOp)get_onerror },
11636 : { prototypes::id::Document },
11637 : { PrototypeTraits<prototypes::id::Document>::Depth },
11638 : JSJitInfo::Getter,
11639 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11640 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11641 : false, /* isInfallible. False in setters. */
11642 : false, /* isMovable. Not relevant for setters. */
11643 : false, /* isEliminatable. Not relevant for setters. */
11644 : false, /* isAlwaysInSlot. Only relevant for getters. */
11645 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11646 : false, /* isTypedMethod. Only relevant for methods. */
11647 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11648 : };
11649 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11650 : static_assert(0 < 1, "There is no slot for us");
11651 : static const JSJitInfo onerror_setterinfo = {
11652 : { (JSJitGetterOp)set_onerror },
11653 : { prototypes::id::Document },
11654 : { PrototypeTraits<prototypes::id::Document>::Depth },
11655 : JSJitInfo::Setter,
11656 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11657 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11658 : false, /* isInfallible. False in setters. */
11659 : false, /* isMovable. Not relevant for setters. */
11660 : false, /* isEliminatable. Not relevant for setters. */
11661 : false, /* isAlwaysInSlot. Only relevant for getters. */
11662 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11663 : false, /* isTypedMethod. Only relevant for methods. */
11664 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11665 : };
11666 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11667 : static_assert(0 < 1, "There is no slot for us");
11668 :
11669 : static bool
11670 0 : get_children(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
11671 : {
11672 0 : auto result(StrongOrRawPtr<nsIHTMLCollection>(self->Children()));
11673 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11674 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
11675 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
11676 0 : return false;
11677 : }
11678 0 : return true;
11679 : }
11680 :
11681 : static const JSJitInfo children_getterinfo = {
11682 : { (JSJitGetterOp)get_children },
11683 : { prototypes::id::Document },
11684 : { PrototypeTraits<prototypes::id::Document>::Depth },
11685 : JSJitInfo::Getter,
11686 : JSJitInfo::AliasNone, /* aliasSet. Not relevant for setters. */
11687 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
11688 : false, /* isInfallible. False in setters. */
11689 : true, /* isMovable. Not relevant for setters. */
11690 : true, /* isEliminatable. Not relevant for setters. */
11691 : false, /* isAlwaysInSlot. Only relevant for getters. */
11692 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11693 : false, /* isTypedMethod. Only relevant for methods. */
11694 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11695 : };
11696 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11697 : static_assert(0 < 1, "There is no slot for us");
11698 :
11699 : static bool
11700 0 : get_firstElementChild(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
11701 : {
11702 0 : auto result(StrongOrRawPtr<mozilla::dom::Element>(self->GetFirstElementChild()));
11703 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11704 0 : if (!result) {
11705 0 : args.rval().setNull();
11706 0 : return true;
11707 : }
11708 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
11709 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
11710 0 : return false;
11711 : }
11712 0 : return true;
11713 : }
11714 :
11715 : static const JSJitInfo firstElementChild_getterinfo = {
11716 : { (JSJitGetterOp)get_firstElementChild },
11717 : { prototypes::id::Document },
11718 : { PrototypeTraits<prototypes::id::Document>::Depth },
11719 : JSJitInfo::Getter,
11720 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
11721 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11722 : false, /* isInfallible. False in setters. */
11723 : true, /* isMovable. Not relevant for setters. */
11724 : true, /* isEliminatable. Not relevant for setters. */
11725 : false, /* isAlwaysInSlot. Only relevant for getters. */
11726 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11727 : false, /* isTypedMethod. Only relevant for methods. */
11728 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11729 : };
11730 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11731 : static_assert(0 < 1, "There is no slot for us");
11732 :
11733 : static bool
11734 0 : get_lastElementChild(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
11735 : {
11736 0 : auto result(StrongOrRawPtr<mozilla::dom::Element>(self->GetLastElementChild()));
11737 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11738 0 : if (!result) {
11739 0 : args.rval().setNull();
11740 0 : return true;
11741 : }
11742 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
11743 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
11744 0 : return false;
11745 : }
11746 0 : return true;
11747 : }
11748 :
11749 : static const JSJitInfo lastElementChild_getterinfo = {
11750 : { (JSJitGetterOp)get_lastElementChild },
11751 : { prototypes::id::Document },
11752 : { PrototypeTraits<prototypes::id::Document>::Depth },
11753 : JSJitInfo::Getter,
11754 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
11755 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11756 : false, /* isInfallible. False in setters. */
11757 : true, /* isMovable. Not relevant for setters. */
11758 : true, /* isEliminatable. Not relevant for setters. */
11759 : false, /* isAlwaysInSlot. Only relevant for getters. */
11760 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11761 : false, /* isTypedMethod. Only relevant for methods. */
11762 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11763 : };
11764 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11765 : static_assert(0 < 1, "There is no slot for us");
11766 :
11767 : static bool
11768 0 : get_childElementCount(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
11769 : {
11770 0 : uint32_t result(self->ChildElementCount());
11771 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11772 0 : args.rval().setNumber(result);
11773 0 : return true;
11774 : }
11775 :
11776 : static const JSJitInfo childElementCount_getterinfo = {
11777 : { (JSJitGetterOp)get_childElementCount },
11778 : { prototypes::id::Document },
11779 : { PrototypeTraits<prototypes::id::Document>::Depth },
11780 : JSJitInfo::Getter,
11781 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
11782 : JSVAL_TYPE_DOUBLE, /* returnType. Not relevant for setters. */
11783 : true, /* isInfallible. False in setters. */
11784 : true, /* isMovable. Not relevant for setters. */
11785 : true, /* isEliminatable. Not relevant for setters. */
11786 : false, /* isAlwaysInSlot. Only relevant for getters. */
11787 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11788 : false, /* isTypedMethod. Only relevant for methods. */
11789 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11790 : };
11791 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11792 : static_assert(0 < 1, "There is no slot for us");
11793 :
11794 : static bool
11795 0 : prepend(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
11796 : {
11797 0 : binding_detail::AutoSequence<OwningNodeOrString> arg0;
11798 0 : if (args.length() > 0) {
11799 0 : if (!arg0.SetCapacity(args.length() - 0, mozilla::fallible)) {
11800 0 : JS_ReportOutOfMemory(cx);
11801 0 : return false;
11802 : }
11803 0 : for (uint32_t variadicArg = 0; variadicArg < args.length(); ++variadicArg) {
11804 0 : OwningNodeOrString& slot = *arg0.AppendElement(mozilla::fallible);
11805 : {
11806 0 : bool done = false, failed = false, tryNext;
11807 0 : if (args[variadicArg].isObject()) {
11808 0 : done = (failed = !slot.TrySetToNode(cx, args[variadicArg], tryNext, false)) || !tryNext;
11809 :
11810 : }
11811 0 : if (!done) {
11812 : do {
11813 0 : done = (failed = !slot.TrySetToString(cx, args[variadicArg], tryNext)) || !tryNext;
11814 0 : break;
11815 : } while (0);
11816 : }
11817 0 : if (failed) {
11818 0 : return false;
11819 : }
11820 0 : if (!done) {
11821 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 1 of Document.prepend", "Node");
11822 0 : return false;
11823 : }
11824 : }
11825 : }
11826 : }
11827 0 : CustomElementReactionsStack* reactionsStack = GetCustomElementReactionsStack(obj);
11828 0 : Maybe<AutoCEReaction> ceReaction;
11829 0 : if (reactionsStack) {
11830 0 : ceReaction.emplace(reactionsStack);
11831 : }
11832 0 : binding_detail::FastErrorResult rv;
11833 0 : self->Prepend(Constify(arg0), rv);
11834 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
11835 0 : return false;
11836 : }
11837 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11838 0 : args.rval().setUndefined();
11839 0 : return true;
11840 : }
11841 :
11842 : static const JSJitInfo prepend_methodinfo = {
11843 : { (JSJitGetterOp)prepend },
11844 : { prototypes::id::Document },
11845 : { PrototypeTraits<prototypes::id::Document>::Depth },
11846 : JSJitInfo::Method,
11847 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11848 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11849 : false, /* isInfallible. False in setters. */
11850 : false, /* isMovable. Not relevant for setters. */
11851 : false, /* isEliminatable. Not relevant for setters. */
11852 : false, /* isAlwaysInSlot. Only relevant for getters. */
11853 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11854 : false, /* isTypedMethod. Only relevant for methods. */
11855 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11856 : };
11857 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11858 : static_assert(0 < 1, "There is no slot for us");
11859 :
11860 : static bool
11861 0 : append(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
11862 : {
11863 0 : binding_detail::AutoSequence<OwningNodeOrString> arg0;
11864 0 : if (args.length() > 0) {
11865 0 : if (!arg0.SetCapacity(args.length() - 0, mozilla::fallible)) {
11866 0 : JS_ReportOutOfMemory(cx);
11867 0 : return false;
11868 : }
11869 0 : for (uint32_t variadicArg = 0; variadicArg < args.length(); ++variadicArg) {
11870 0 : OwningNodeOrString& slot = *arg0.AppendElement(mozilla::fallible);
11871 : {
11872 0 : bool done = false, failed = false, tryNext;
11873 0 : if (args[variadicArg].isObject()) {
11874 0 : done = (failed = !slot.TrySetToNode(cx, args[variadicArg], tryNext, false)) || !tryNext;
11875 :
11876 : }
11877 0 : if (!done) {
11878 : do {
11879 0 : done = (failed = !slot.TrySetToString(cx, args[variadicArg], tryNext)) || !tryNext;
11880 0 : break;
11881 : } while (0);
11882 : }
11883 0 : if (failed) {
11884 0 : return false;
11885 : }
11886 0 : if (!done) {
11887 0 : ThrowErrorMessage(cx, MSG_NOT_IN_UNION, "Argument 1 of Document.append", "Node");
11888 0 : return false;
11889 : }
11890 : }
11891 : }
11892 : }
11893 0 : CustomElementReactionsStack* reactionsStack = GetCustomElementReactionsStack(obj);
11894 0 : Maybe<AutoCEReaction> ceReaction;
11895 0 : if (reactionsStack) {
11896 0 : ceReaction.emplace(reactionsStack);
11897 : }
11898 0 : binding_detail::FastErrorResult rv;
11899 0 : self->Append(Constify(arg0), rv);
11900 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
11901 0 : return false;
11902 : }
11903 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11904 0 : args.rval().setUndefined();
11905 0 : return true;
11906 : }
11907 :
11908 : static const JSJitInfo append_methodinfo = {
11909 : { (JSJitGetterOp)append },
11910 : { prototypes::id::Document },
11911 : { PrototypeTraits<prototypes::id::Document>::Depth },
11912 : JSJitInfo::Method,
11913 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11914 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11915 : false, /* isInfallible. False in setters. */
11916 : false, /* isMovable. Not relevant for setters. */
11917 : false, /* isEliminatable. Not relevant for setters. */
11918 : false, /* isAlwaysInSlot. Only relevant for getters. */
11919 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11920 : false, /* isTypedMethod. Only relevant for methods. */
11921 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11922 : };
11923 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11924 : static_assert(0 < 1, "There is no slot for us");
11925 :
11926 : static bool
11927 0 : get_ontouchstart(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
11928 : {
11929 0 : RefPtr<EventHandlerNonNull> result(self->GetOntouchstart());
11930 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11931 0 : if (result) {
11932 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
11933 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
11934 0 : return false;
11935 : }
11936 0 : return true;
11937 : } else {
11938 0 : args.rval().setNull();
11939 0 : return true;
11940 : }
11941 : }
11942 :
11943 : static bool
11944 0 : set_ontouchstart(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
11945 : {
11946 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
11947 0 : if (args[0].isObject()) {
11948 : { // scope for tempRoot
11949 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
11950 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
11951 : }
11952 : } else {
11953 0 : arg0 = nullptr;
11954 : }
11955 0 : self->SetOntouchstart(Constify(arg0));
11956 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
11957 :
11958 0 : return true;
11959 : }
11960 :
11961 : static const JSJitInfo ontouchstart_getterinfo = {
11962 : { (JSJitGetterOp)get_ontouchstart },
11963 : { prototypes::id::Document },
11964 : { PrototypeTraits<prototypes::id::Document>::Depth },
11965 : JSJitInfo::Getter,
11966 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11967 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
11968 : false, /* isInfallible. False in setters. */
11969 : false, /* isMovable. Not relevant for setters. */
11970 : false, /* isEliminatable. Not relevant for setters. */
11971 : false, /* isAlwaysInSlot. Only relevant for getters. */
11972 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11973 : false, /* isTypedMethod. Only relevant for methods. */
11974 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11975 : };
11976 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11977 : static_assert(0 < 1, "There is no slot for us");
11978 : static const JSJitInfo ontouchstart_setterinfo = {
11979 : { (JSJitGetterOp)set_ontouchstart },
11980 : { prototypes::id::Document },
11981 : { PrototypeTraits<prototypes::id::Document>::Depth },
11982 : JSJitInfo::Setter,
11983 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
11984 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
11985 : false, /* isInfallible. False in setters. */
11986 : false, /* isMovable. Not relevant for setters. */
11987 : false, /* isEliminatable. Not relevant for setters. */
11988 : false, /* isAlwaysInSlot. Only relevant for getters. */
11989 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
11990 : false, /* isTypedMethod. Only relevant for methods. */
11991 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
11992 : };
11993 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
11994 : static_assert(0 < 1, "There is no slot for us");
11995 :
11996 : static bool
11997 0 : get_ontouchend(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
11998 : {
11999 0 : RefPtr<EventHandlerNonNull> result(self->GetOntouchend());
12000 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12001 0 : if (result) {
12002 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
12003 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
12004 0 : return false;
12005 : }
12006 0 : return true;
12007 : } else {
12008 0 : args.rval().setNull();
12009 0 : return true;
12010 : }
12011 : }
12012 :
12013 : static bool
12014 0 : set_ontouchend(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
12015 : {
12016 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
12017 0 : if (args[0].isObject()) {
12018 : { // scope for tempRoot
12019 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
12020 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
12021 : }
12022 : } else {
12023 0 : arg0 = nullptr;
12024 : }
12025 0 : self->SetOntouchend(Constify(arg0));
12026 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12027 :
12028 0 : return true;
12029 : }
12030 :
12031 : static const JSJitInfo ontouchend_getterinfo = {
12032 : { (JSJitGetterOp)get_ontouchend },
12033 : { prototypes::id::Document },
12034 : { PrototypeTraits<prototypes::id::Document>::Depth },
12035 : JSJitInfo::Getter,
12036 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12037 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
12038 : false, /* isInfallible. False in setters. */
12039 : false, /* isMovable. Not relevant for setters. */
12040 : false, /* isEliminatable. Not relevant for setters. */
12041 : false, /* isAlwaysInSlot. Only relevant for getters. */
12042 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12043 : false, /* isTypedMethod. Only relevant for methods. */
12044 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12045 : };
12046 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12047 : static_assert(0 < 1, "There is no slot for us");
12048 : static const JSJitInfo ontouchend_setterinfo = {
12049 : { (JSJitGetterOp)set_ontouchend },
12050 : { prototypes::id::Document },
12051 : { PrototypeTraits<prototypes::id::Document>::Depth },
12052 : JSJitInfo::Setter,
12053 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12054 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12055 : false, /* isInfallible. False in setters. */
12056 : false, /* isMovable. Not relevant for setters. */
12057 : false, /* isEliminatable. Not relevant for setters. */
12058 : false, /* isAlwaysInSlot. Only relevant for getters. */
12059 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12060 : false, /* isTypedMethod. Only relevant for methods. */
12061 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12062 : };
12063 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12064 : static_assert(0 < 1, "There is no slot for us");
12065 :
12066 : static bool
12067 0 : get_ontouchmove(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
12068 : {
12069 0 : RefPtr<EventHandlerNonNull> result(self->GetOntouchmove());
12070 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12071 0 : if (result) {
12072 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
12073 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
12074 0 : return false;
12075 : }
12076 0 : return true;
12077 : } else {
12078 0 : args.rval().setNull();
12079 0 : return true;
12080 : }
12081 : }
12082 :
12083 : static bool
12084 0 : set_ontouchmove(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
12085 : {
12086 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
12087 0 : if (args[0].isObject()) {
12088 : { // scope for tempRoot
12089 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
12090 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
12091 : }
12092 : } else {
12093 0 : arg0 = nullptr;
12094 : }
12095 0 : self->SetOntouchmove(Constify(arg0));
12096 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12097 :
12098 0 : return true;
12099 : }
12100 :
12101 : static const JSJitInfo ontouchmove_getterinfo = {
12102 : { (JSJitGetterOp)get_ontouchmove },
12103 : { prototypes::id::Document },
12104 : { PrototypeTraits<prototypes::id::Document>::Depth },
12105 : JSJitInfo::Getter,
12106 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12107 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
12108 : false, /* isInfallible. False in setters. */
12109 : false, /* isMovable. Not relevant for setters. */
12110 : false, /* isEliminatable. Not relevant for setters. */
12111 : false, /* isAlwaysInSlot. Only relevant for getters. */
12112 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12113 : false, /* isTypedMethod. Only relevant for methods. */
12114 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12115 : };
12116 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12117 : static_assert(0 < 1, "There is no slot for us");
12118 : static const JSJitInfo ontouchmove_setterinfo = {
12119 : { (JSJitGetterOp)set_ontouchmove },
12120 : { prototypes::id::Document },
12121 : { PrototypeTraits<prototypes::id::Document>::Depth },
12122 : JSJitInfo::Setter,
12123 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12124 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12125 : false, /* isInfallible. False in setters. */
12126 : false, /* isMovable. Not relevant for setters. */
12127 : false, /* isEliminatable. Not relevant for setters. */
12128 : false, /* isAlwaysInSlot. Only relevant for getters. */
12129 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12130 : false, /* isTypedMethod. Only relevant for methods. */
12131 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12132 : };
12133 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12134 : static_assert(0 < 1, "There is no slot for us");
12135 :
12136 : static bool
12137 0 : get_ontouchcancel(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitGetterCallArgs args)
12138 : {
12139 0 : RefPtr<EventHandlerNonNull> result(self->GetOntouchcancel());
12140 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12141 0 : if (result) {
12142 0 : args.rval().setObjectOrNull(GetCallbackFromCallbackObject(result));
12143 0 : if (!MaybeWrapObjectOrNullValue(cx, args.rval())) {
12144 0 : return false;
12145 : }
12146 0 : return true;
12147 : } else {
12148 0 : args.rval().setNull();
12149 0 : return true;
12150 : }
12151 : }
12152 :
12153 : static bool
12154 0 : set_ontouchcancel(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, JSJitSetterCallArgs args)
12155 : {
12156 0 : RootedCallback<RefPtr<binding_detail::FastEventHandlerNonNull>> arg0(cx);
12157 0 : if (args[0].isObject()) {
12158 : { // scope for tempRoot
12159 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[0].toObject());
12160 0 : arg0 = new binding_detail::FastEventHandlerNonNull(tempRoot);
12161 : }
12162 : } else {
12163 0 : arg0 = nullptr;
12164 : }
12165 0 : self->SetOntouchcancel(Constify(arg0));
12166 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12167 :
12168 0 : return true;
12169 : }
12170 :
12171 : static const JSJitInfo ontouchcancel_getterinfo = {
12172 : { (JSJitGetterOp)get_ontouchcancel },
12173 : { prototypes::id::Document },
12174 : { PrototypeTraits<prototypes::id::Document>::Depth },
12175 : JSJitInfo::Getter,
12176 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12177 : JSVAL_TYPE_UNKNOWN, /* returnType. Not relevant for setters. */
12178 : false, /* isInfallible. False in setters. */
12179 : false, /* isMovable. Not relevant for setters. */
12180 : false, /* isEliminatable. Not relevant for setters. */
12181 : false, /* isAlwaysInSlot. Only relevant for getters. */
12182 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12183 : false, /* isTypedMethod. Only relevant for methods. */
12184 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12185 : };
12186 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12187 : static_assert(0 < 1, "There is no slot for us");
12188 : static const JSJitInfo ontouchcancel_setterinfo = {
12189 : { (JSJitGetterOp)set_ontouchcancel },
12190 : { prototypes::id::Document },
12191 : { PrototypeTraits<prototypes::id::Document>::Depth },
12192 : JSJitInfo::Setter,
12193 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12194 : JSVAL_TYPE_UNDEFINED, /* returnType. Not relevant for setters. */
12195 : false, /* isInfallible. False in setters. */
12196 : false, /* isMovable. Not relevant for setters. */
12197 : false, /* isEliminatable. Not relevant for setters. */
12198 : false, /* isAlwaysInSlot. Only relevant for getters. */
12199 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12200 : false, /* isTypedMethod. Only relevant for methods. */
12201 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12202 : };
12203 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12204 : static_assert(0 < 1, "There is no slot for us");
12205 :
12206 : static bool
12207 0 : createExpression(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
12208 : {
12209 0 : if (MOZ_UNLIKELY(args.length() < 2)) {
12210 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.createExpression");
12211 : }
12212 0 : binding_detail::FakeString arg0;
12213 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
12214 0 : return false;
12215 : }
12216 0 : RootedCallback<RefPtr<binding_detail::FastXPathNSResolver>> arg1(cx);
12217 0 : if (args[1].isObject()) {
12218 : { // scope for tempRoot
12219 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[1].toObject());
12220 0 : arg1 = new binding_detail::FastXPathNSResolver(tempRoot);
12221 : }
12222 0 : } else if (args[1].isNullOrUndefined()) {
12223 0 : arg1 = nullptr;
12224 : } else {
12225 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 2 of Document.createExpression");
12226 0 : return false;
12227 : }
12228 0 : binding_detail::FastErrorResult rv;
12229 0 : auto result(StrongOrRawPtr<mozilla::dom::XPathExpression>(self->CreateExpression(NonNullHelper(Constify(arg0)), Constify(arg1), rv)));
12230 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
12231 0 : return false;
12232 : }
12233 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12234 : static_assert(!IsPointer<decltype(result)>::value,
12235 : "NewObject implies that we need to keep the object alive with a strong reference.");
12236 0 : if (!WrapNewBindingNonWrapperCachedObject(cx, obj, result, args.rval())) {
12237 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
12238 0 : return false;
12239 : }
12240 0 : return true;
12241 : }
12242 :
12243 : static const JSJitInfo createExpression_methodinfo = {
12244 : { (JSJitGetterOp)createExpression },
12245 : { prototypes::id::Document },
12246 : { PrototypeTraits<prototypes::id::Document>::Depth },
12247 : JSJitInfo::Method,
12248 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12249 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
12250 : false, /* isInfallible. False in setters. */
12251 : false, /* isMovable. Not relevant for setters. */
12252 : false, /* isEliminatable. Not relevant for setters. */
12253 : false, /* isAlwaysInSlot. Only relevant for getters. */
12254 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12255 : false, /* isTypedMethod. Only relevant for methods. */
12256 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12257 : };
12258 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12259 : static_assert(0 < 1, "There is no slot for us");
12260 :
12261 : static bool
12262 0 : createNSResolver(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
12263 : {
12264 0 : if (MOZ_UNLIKELY(args.length() < 1)) {
12265 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.createNSResolver");
12266 : }
12267 0 : NonNull<nsINode> arg0;
12268 0 : if (args[0].isObject()) {
12269 : {
12270 0 : nsresult rv = UnwrapObject<prototypes::id::Node, nsINode>(args[0], arg0);
12271 0 : if (NS_FAILED(rv)) {
12272 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 1 of Document.createNSResolver", "Node");
12273 0 : return false;
12274 : }
12275 : }
12276 : } else {
12277 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 1 of Document.createNSResolver");
12278 0 : return false;
12279 : }
12280 0 : auto result(StrongOrRawPtr<nsINode>(self->CreateNSResolver(NonNullHelper(arg0))));
12281 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12282 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
12283 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
12284 0 : return false;
12285 : }
12286 0 : return true;
12287 : }
12288 :
12289 : static const JSJitInfo::ArgType createNSResolver_methodinfo_argTypes[] = { JSJitInfo::Object, JSJitInfo::ArgTypeListEnd };
12290 : static const JSTypedMethodJitInfo createNSResolver_methodinfo = {
12291 : {
12292 : { (JSJitGetterOp)createNSResolver },
12293 : { prototypes::id::Document },
12294 : { PrototypeTraits<prototypes::id::Document>::Depth },
12295 : JSJitInfo::Method,
12296 : JSJitInfo::AliasDOMSets, /* aliasSet. Not relevant for setters. */
12297 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
12298 : false, /* isInfallible. False in setters. */
12299 : true, /* isMovable. Not relevant for setters. */
12300 : true, /* isEliminatable. Not relevant for setters. */
12301 : false, /* isAlwaysInSlot. Only relevant for getters. */
12302 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12303 : true, /* isTypedMethod. Only relevant for methods. */
12304 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12305 : },
12306 : createNSResolver_methodinfo_argTypes
12307 : };
12308 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12309 : static_assert(0 < 1, "There is no slot for us");
12310 :
12311 : static bool
12312 0 : evaluate(JSContext* cx, JS::Handle<JSObject*> obj, nsIDocument* self, const JSJitMethodCallArgs& args)
12313 : {
12314 0 : if (MOZ_UNLIKELY(args.length() < 5)) {
12315 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document.evaluate");
12316 : }
12317 0 : binding_detail::FakeString arg0;
12318 0 : if (!ConvertJSValueToString(cx, args[0], eStringify, eStringify, arg0)) {
12319 0 : return false;
12320 : }
12321 0 : NonNull<nsINode> arg1;
12322 0 : if (args[1].isObject()) {
12323 : {
12324 0 : nsresult rv = UnwrapObject<prototypes::id::Node, nsINode>(args[1], arg1);
12325 0 : if (NS_FAILED(rv)) {
12326 0 : ThrowErrorMessage(cx, MSG_DOES_NOT_IMPLEMENT_INTERFACE, "Argument 2 of Document.evaluate", "Node");
12327 0 : return false;
12328 : }
12329 : }
12330 : } else {
12331 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 2 of Document.evaluate");
12332 0 : return false;
12333 : }
12334 0 : RootedCallback<RefPtr<binding_detail::FastXPathNSResolver>> arg2(cx);
12335 0 : if (args[2].isObject()) {
12336 : { // scope for tempRoot
12337 0 : JS::Rooted<JSObject*> tempRoot(cx, &args[2].toObject());
12338 0 : arg2 = new binding_detail::FastXPathNSResolver(tempRoot);
12339 : }
12340 0 : } else if (args[2].isNullOrUndefined()) {
12341 0 : arg2 = nullptr;
12342 : } else {
12343 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 3 of Document.evaluate");
12344 0 : return false;
12345 : }
12346 : uint16_t arg3;
12347 0 : if (!ValueToPrimitive<uint16_t, eDefault>(cx, args[3], &arg3)) {
12348 0 : return false;
12349 : }
12350 0 : JS::Rooted<JSObject*> arg4(cx);
12351 0 : if (args[4].isObject()) {
12352 0 : arg4 = &args[4].toObject();
12353 0 : } else if (args[4].isNullOrUndefined()) {
12354 0 : arg4 = nullptr;
12355 : } else {
12356 0 : ThrowErrorMessage(cx, MSG_NOT_OBJECT, "Argument 5 of Document.evaluate");
12357 0 : return false;
12358 : }
12359 0 : binding_detail::FastErrorResult rv;
12360 0 : auto result(StrongOrRawPtr<mozilla::dom::XPathResult>(self->Evaluate(cx, NonNullHelper(Constify(arg0)), NonNullHelper(arg1), Constify(arg2), arg3, arg4, rv)));
12361 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
12362 0 : return false;
12363 : }
12364 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12365 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval())) {
12366 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
12367 0 : return false;
12368 : }
12369 0 : return true;
12370 : }
12371 :
12372 : static const JSJitInfo evaluate_methodinfo = {
12373 : { (JSJitGetterOp)evaluate },
12374 : { prototypes::id::Document },
12375 : { PrototypeTraits<prototypes::id::Document>::Depth },
12376 : JSJitInfo::Method,
12377 : JSJitInfo::AliasEverything, /* aliasSet. Not relevant for setters. */
12378 : JSVAL_TYPE_OBJECT, /* returnType. Not relevant for setters. */
12379 : false, /* isInfallible. False in setters. */
12380 : false, /* isMovable. Not relevant for setters. */
12381 : false, /* isEliminatable. Not relevant for setters. */
12382 : false, /* isAlwaysInSlot. Only relevant for getters. */
12383 : false, /* isLazilyCachedInSlot. Only relevant for getters. */
12384 : false, /* isTypedMethod. Only relevant for methods. */
12385 : 0 /* Reserved slot index, if we're stored in a slot, else 0. */
12386 : };
12387 : static_assert(0 <= JSJitInfo::maxSlotIndex, "We won't fit");
12388 : static_assert(0 < 1, "There is no slot for us");
12389 :
12390 : static bool
12391 0 : genericLenientGetter(JSContext* cx, unsigned argc, JS::Value* vp)
12392 : {
12393 0 : JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
12394 0 : if (!args.thisv().isObject()) {
12395 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12396 0 : if (!ReportLenientThisUnwrappingFailure(cx, &args.callee())) {
12397 0 : return false;
12398 : }
12399 0 : args.rval().set(JS::UndefinedValue());
12400 0 : return true;
12401 : }
12402 0 : JS::Rooted<JSObject*> obj(cx, &args.thisv().toObject());
12403 :
12404 : nsIDocument* self;
12405 0 : JS::Rooted<JS::Value> rootSelf(cx, JS::ObjectValue(*obj));
12406 : {
12407 0 : nsresult rv = UnwrapObject<prototypes::id::Document, nsIDocument>(&rootSelf, self);
12408 0 : if (NS_FAILED(rv)) {
12409 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12410 0 : if (!ReportLenientThisUnwrappingFailure(cx, &args.callee())) {
12411 0 : return false;
12412 : }
12413 0 : args.rval().set(JS::UndefinedValue());
12414 0 : return true;
12415 : }
12416 : }
12417 0 : const JSJitInfo *info = FUNCTION_VALUE_TO_JITINFO(args.calleev());
12418 0 : MOZ_ASSERT(info->type() == JSJitInfo::Getter);
12419 0 : JSJitGetterOp getter = info->getter;
12420 0 : bool ok = getter(cx, obj, self, JSJitGetterCallArgs(args));
12421 : #ifdef DEBUG
12422 0 : if (ok) {
12423 0 : AssertReturnTypeMatchesJitinfo(info, args.rval());
12424 : }
12425 : #endif
12426 0 : return ok;
12427 : }
12428 :
12429 : static bool
12430 0 : genericLenientSetter(JSContext* cx, unsigned argc, JS::Value* vp)
12431 : {
12432 0 : JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
12433 0 : if (!args.thisv().isObject()) {
12434 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12435 0 : if (!ReportLenientThisUnwrappingFailure(cx, &args.callee())) {
12436 0 : return false;
12437 : }
12438 0 : args.rval().set(JS::UndefinedValue());
12439 0 : return true;
12440 : }
12441 0 : JS::Rooted<JSObject*> obj(cx, &args.thisv().toObject());
12442 :
12443 : nsIDocument* self;
12444 0 : JS::Rooted<JS::Value> rootSelf(cx, JS::ObjectValue(*obj));
12445 : {
12446 0 : nsresult rv = UnwrapObject<prototypes::id::Document, nsIDocument>(&rootSelf, self);
12447 0 : if (NS_FAILED(rv)) {
12448 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
12449 0 : if (!ReportLenientThisUnwrappingFailure(cx, &args.callee())) {
12450 0 : return false;
12451 : }
12452 0 : args.rval().set(JS::UndefinedValue());
12453 0 : return true;
12454 : }
12455 : }
12456 0 : if (args.length() == 0) {
12457 0 : return ThrowErrorMessage(cx, MSG_MISSING_ARGUMENTS, "Document attribute setter");
12458 : }
12459 0 : const JSJitInfo *info = FUNCTION_VALUE_TO_JITINFO(args.calleev());
12460 0 : MOZ_ASSERT(info->type() == JSJitInfo::Setter);
12461 0 : JSJitSetterOp setter = info->setter;
12462 0 : if (!setter(cx, obj, self, JSJitSetterCallArgs(args))) {
12463 0 : return false;
12464 : }
12465 0 : args.rval().setUndefined();
12466 : #ifdef DEBUG
12467 0 : AssertReturnTypeMatchesJitinfo(info, args.rval());
12468 : #endif
12469 0 : return true;
12470 : }
12471 :
12472 : static bool
12473 7 : _addProperty(JSContext* cx, JS::Handle<JSObject*> obj, JS::Handle<jsid> id, JS::Handle<JS::Value> val)
12474 : {
12475 7 : nsIDocument* self = UnwrapPossiblyNotInitializedDOMObject<nsIDocument>(obj);
12476 : // We don't want to preserve if we don't have a wrapper, and we
12477 : // obviously can't preserve if we're not initialized.
12478 7 : if (self && self->GetWrapperPreserveColor()) {
12479 0 : PreserveWrapper(self);
12480 : }
12481 7 : return true;
12482 : }
12483 :
12484 : static void
12485 0 : _finalize(js::FreeOp* fop, JSObject* obj)
12486 : {
12487 0 : nsIDocument* self = UnwrapPossiblyNotInitializedDOMObject<nsIDocument>(obj);
12488 0 : if (self) {
12489 0 : ClearWrapper(self, self, obj);
12490 0 : AddForDeferredFinalization<nsIDocument>(self);
12491 : }
12492 0 : }
12493 :
12494 : static void
12495 0 : _objectMoved(JSObject* obj, const JSObject* old)
12496 : {
12497 0 : nsIDocument* self = UnwrapPossiblyNotInitializedDOMObject<nsIDocument>(obj);
12498 0 : if (self) {
12499 0 : UpdateWrapper(self, self, obj, old);
12500 : }
12501 0 : }
12502 :
12503 : // We deliberately use brace-elision to make Visual Studio produce better initalization code.
12504 : #if defined(__clang__)
12505 : #pragma clang diagnostic push
12506 : #pragma clang diagnostic ignored "-Wmissing-braces"
12507 : #endif
12508 : static const JSFunctionSpec sMethods_specs[] = {
12509 : JS_FNSPEC("getElementsByTagName", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getElementsByTagName_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12510 : JS_FNSPEC("getElementsByTagNameNS", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getElementsByTagNameNS_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
12511 : JS_FNSPEC("getElementsByClassName", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getElementsByClassName_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12512 : JS_FNSPEC("getElementById", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getElementById_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12513 : JS_FNSPEC("createElement", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createElement_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12514 : JS_FNSPEC("createElementNS", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createElementNS_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
12515 : JS_FNSPEC("createDocumentFragment", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createDocumentFragment_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
12516 : JS_FNSPEC("createTextNode", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createTextNode_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12517 : JS_FNSPEC("createComment", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createComment_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12518 : JS_FNSPEC("createProcessingInstruction", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createProcessingInstruction_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
12519 : JS_FNSPEC("importNode", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&importNode_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12520 : JS_FNSPEC("adoptNode", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&adoptNode_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12521 : JS_FNSPEC("createEvent", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createEvent_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12522 : JS_FNSPEC("createRange", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createRange_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
12523 : JS_FNSPEC("createNodeIterator", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createNodeIterator_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12524 : JS_FNSPEC("createTreeWalker", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createTreeWalker_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12525 : JS_FNSPEC("createCDATASection", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createCDATASection_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12526 : JS_FNSPEC("createAttribute", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createAttribute_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12527 : JS_FNSPEC("createAttributeNS", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createAttributeNS_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
12528 : JS_FNSPEC("hasFocus", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&hasFocus_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
12529 : JS_FNSPEC("releaseCapture", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&releaseCapture_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
12530 : JS_FNSPEC("mozSetImageElement", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&mozSetImageElement_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
12531 : JS_FS_END,
12532 : JS_FNSPEC("exitFullscreen", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&exitFullscreen_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
12533 : JS_FS_END,
12534 : JS_FNSPEC("mozCancelFullScreen", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&mozCancelFullScreen_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
12535 : JS_FNSPEC("exitPointerLock", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&exitPointerLock_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
12536 : JS_FS_END,
12537 : JS_FNSPEC("registerElement", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(®isterElement_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12538 : JS_FS_END,
12539 : JS_FNSPEC("enableStyleSheetsForSet", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&enableStyleSheetsForSet_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12540 : JS_FNSPEC("elementFromPoint", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&elementFromPoint_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
12541 : JS_FNSPEC("elementsFromPoint", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&elementsFromPoint_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
12542 : JS_FNSPEC("caretPositionFromPoint", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&caretPositionFromPoint_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
12543 : JS_FNSPEC("querySelector", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&querySelector_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12544 : JS_FNSPEC("querySelectorAll", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&querySelectorAll_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12545 : JS_FS_END,
12546 : JS_FNSPEC("getAnimations", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getAnimations_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
12547 : JS_FS_END,
12548 : JS_FNSPEC("getAnonymousNodes", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getAnonymousNodes_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12549 : JS_FNSPEC("getAnonymousElementByAttribute", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getAnonymousElementByAttribute_methodinfo), 3, JSPROP_ENUMERATE, nullptr),
12550 : JS_FNSPEC("getBindingParent", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getBindingParent_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12551 : JS_FNSPEC("loadBindingDocument", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&loadBindingDocument_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12552 : JS_FS_END,
12553 : JS_FNSPEC("createTouch", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createTouch_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
12554 : JS_FNSPEC("createTouchList", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createTouchList_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
12555 : JS_FS_END,
12556 : JS_FNSPEC("getBoxQuads", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&getBoxQuads_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
12557 : JS_FS_END,
12558 : JS_FNSPEC("convertQuadFromNode", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&convertQuadFromNode_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
12559 : JS_FNSPEC("convertRectFromNode", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&convertRectFromNode_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
12560 : JS_FNSPEC("convertPointFromNode", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&convertPointFromNode_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
12561 : JS_FS_END,
12562 : JS_FNSPEC("QueryInterface", QueryInterface, nullptr, 1, 0, nullptr),
12563 : JS_FS_END,
12564 : JS_FNSPEC("prepend", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&prepend_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
12565 : JS_FNSPEC("append", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&append_methodinfo), 0, JSPROP_ENUMERATE, nullptr),
12566 : JS_FNSPEC("createExpression", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createExpression_methodinfo), 2, JSPROP_ENUMERATE, nullptr),
12567 : JS_FNSPEC("createNSResolver", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&createNSResolver_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12568 : JS_FNSPEC("evaluate", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&evaluate_methodinfo), 5, JSPROP_ENUMERATE, nullptr),
12569 : JS_FS_END
12570 : };
12571 : #if defined(__clang__)
12572 : #pragma clang diagnostic pop
12573 : #endif
12574 :
12575 : static PrefableDisablers sMethods_disablers23 = {
12576 : true, false, 0, &nsDocument::IsUnprefixedFullscreenEnabled
12577 : };
12578 :
12579 : static PrefableDisablers sMethods_disablers28 = {
12580 : true, false, 0, &CustomElementRegistry::IsCustomElementEnabled
12581 : };
12582 :
12583 : static PrefableDisablers sMethods_disablers37 = {
12584 : true, false, 0, &nsDocument::IsWebAnimationsEnabled
12585 : };
12586 :
12587 : static PrefableDisablers sMethods_disablers39 = {
12588 : true, false, 0, &IsChromeOrXBL
12589 : };
12590 :
12591 : static PrefableDisablers sMethods_disablers44 = {
12592 : true, false, 0, &nsGenericHTMLElement::TouchEventsEnabled
12593 : };
12594 :
12595 : static PrefableDisablers sMethods_disablers47 = {
12596 : true, false, 0, &nsINode::HasBoxQuadsSupport
12597 : };
12598 :
12599 : static PrefableDisablers sMethods_disablers49 = {
12600 : true, false, 0, nullptr
12601 : };
12602 :
12603 : static PrefableDisablers sMethods_disablers53 = {
12604 : true, false, 0, &WantsQueryInterface<nsIDocument>::Enabled
12605 : };
12606 :
12607 : // Can't be const because the pref-enabled boolean needs to be writable
12608 : static Prefable<const JSFunctionSpec> sMethods[] = {
12609 : { nullptr, &sMethods_specs[0] },
12610 : { &sMethods_disablers23, &sMethods_specs[23] },
12611 : { nullptr, &sMethods_specs[25] },
12612 : { &sMethods_disablers28, &sMethods_specs[28] },
12613 : { nullptr, &sMethods_specs[30] },
12614 : { &sMethods_disablers37, &sMethods_specs[37] },
12615 : { &sMethods_disablers39, &sMethods_specs[39] },
12616 : { &sMethods_disablers44, &sMethods_specs[44] },
12617 : { &sMethods_disablers47, &sMethods_specs[47] },
12618 : { &sMethods_disablers49, &sMethods_specs[49] },
12619 : { &sMethods_disablers53, &sMethods_specs[53] },
12620 : { nullptr, &sMethods_specs[55] },
12621 : { nullptr, nullptr }
12622 : };
12623 :
12624 : static_assert(12 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
12625 : "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
12626 : static_assert(22 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
12627 : "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
12628 :
12629 : // We deliberately use brace-elision to make Visual Studio produce better initalization code.
12630 : #if defined(__clang__)
12631 : #pragma clang diagnostic push
12632 : #pragma clang diagnostic ignored "-Wmissing-braces"
12633 : #endif
12634 : static const JSFunctionSpec sChromeMethods_specs[] = {
12635 : JS_FNSPEC("obsoleteSheet", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&obsoleteSheet_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12636 : JS_FNSPEC("blockParsing", GenericPromiseReturningBindingMethod, reinterpret_cast<const JSJitInfo*>(&blockParsing_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12637 : JS_FNSPEC("insertAnonymousContent", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&insertAnonymousContent_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12638 : JS_FNSPEC("removeAnonymousContent", GenericBindingMethod, reinterpret_cast<const JSJitInfo*>(&removeAnonymousContent_methodinfo), 1, JSPROP_ENUMERATE, nullptr),
12639 : JS_FS_END
12640 : };
12641 : #if defined(__clang__)
12642 : #pragma clang diagnostic pop
12643 : #endif
12644 :
12645 :
12646 : // Can't be const because the pref-enabled boolean needs to be writable
12647 : static Prefable<const JSFunctionSpec> sChromeMethods[] = {
12648 : { nullptr, &sChromeMethods_specs[0] },
12649 : { nullptr, nullptr }
12650 : };
12651 :
12652 : static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
12653 : "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
12654 : static_assert(4 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
12655 : "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
12656 :
12657 : // We deliberately use brace-elision to make Visual Studio produce better initalization code.
12658 : #if defined(__clang__)
12659 : #pragma clang diagnostic push
12660 : #pragma clang diagnostic ignored "-Wmissing-braces"
12661 : #endif
12662 : static const JSPropertySpec sAttributes_specs[] = {
12663 : { "implementation", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &implementation_getterinfo, nullptr, nullptr },
12664 : { "URL", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &URL_getterinfo, nullptr, nullptr },
12665 : { "documentURI", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &documentURI_getterinfo, nullptr, nullptr },
12666 : { "compatMode", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &compatMode_getterinfo, nullptr, nullptr },
12667 : { "characterSet", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &characterSet_getterinfo, nullptr, nullptr },
12668 : { "charset", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &charset_getterinfo, nullptr, nullptr },
12669 : { "inputEncoding", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &inputEncoding_getterinfo, nullptr, nullptr },
12670 : { "contentType", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &contentType_getterinfo, nullptr, nullptr },
12671 : { "doctype", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &doctype_getterinfo, nullptr, nullptr },
12672 : { "documentElement", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &documentElement_getterinfo, nullptr, nullptr },
12673 : { "referrer", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &referrer_getterinfo, nullptr, nullptr },
12674 : { "lastModified", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &lastModified_getterinfo, nullptr, nullptr },
12675 : { "readyState", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &readyState_getterinfo, nullptr, nullptr },
12676 : { "title", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &title_getterinfo, GenericBindingSetter, &title_setterinfo },
12677 : { "dir", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &dir_getterinfo, GenericBindingSetter, &dir_setterinfo },
12678 : { "defaultView", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &defaultView_getterinfo, nullptr, nullptr },
12679 : { "activeElement", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &activeElement_getterinfo, nullptr, nullptr },
12680 : { "onreadystatechange", JSPROP_SHARED | JSPROP_ENUMERATE, genericLenientGetter, &onreadystatechange_getterinfo, genericLenientSetter, &onreadystatechange_setterinfo },
12681 : { "onbeforescriptexecute", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onbeforescriptexecute_getterinfo, GenericBindingSetter, &onbeforescriptexecute_setterinfo },
12682 : { "onafterscriptexecute", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onafterscriptexecute_getterinfo, GenericBindingSetter, &onafterscriptexecute_setterinfo },
12683 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12684 : { "onselectionchange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onselectionchange_getterinfo, GenericBindingSetter, &onselectionchange_setterinfo },
12685 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12686 : { "mozSyntheticDocument", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &mozSyntheticDocument_getterinfo, nullptr, nullptr },
12687 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12688 : { "currentScript", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, ¤tScript_getterinfo, nullptr, nullptr },
12689 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12690 : { "fullscreen", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &fullscreen_getterinfo, GenericBindingSetter, &fullscreen_setterinfo },
12691 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12692 : { "mozFullScreen", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &mozFullScreen_getterinfo, nullptr, nullptr },
12693 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12694 : { "fullscreenEnabled", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &fullscreenEnabled_getterinfo, GenericBindingSetter, &fullscreenEnabled_setterinfo },
12695 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12696 : { "mozFullScreenEnabled", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &mozFullScreenEnabled_getterinfo, nullptr, nullptr },
12697 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12698 : { "fullscreenElement", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &fullscreenElement_getterinfo, GenericBindingSetter, &fullscreenElement_setterinfo },
12699 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12700 : { "mozFullScreenElement", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &mozFullScreenElement_getterinfo, nullptr, nullptr },
12701 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12702 : { "onfullscreenchange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onfullscreenchange_getterinfo, GenericBindingSetter, &onfullscreenchange_setterinfo },
12703 : { "onfullscreenerror", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onfullscreenerror_getterinfo, GenericBindingSetter, &onfullscreenerror_setterinfo },
12704 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12705 : { "pointerLockElement", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &pointerLockElement_getterinfo, nullptr, nullptr },
12706 : { "onpointerlockchange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerlockchange_getterinfo, GenericBindingSetter, &onpointerlockchange_setterinfo },
12707 : { "onpointerlockerror", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerlockerror_getterinfo, GenericBindingSetter, &onpointerlockerror_setterinfo },
12708 : { "hidden", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &hidden_getterinfo, nullptr, nullptr },
12709 : { "visibilityState", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &visibilityState_getterinfo, nullptr, nullptr },
12710 : { "styleSheets", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &styleSheets_getterinfo, nullptr, nullptr },
12711 : { "selectedStyleSheetSet", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &selectedStyleSheetSet_getterinfo, GenericBindingSetter, &selectedStyleSheetSet_setterinfo },
12712 : { "lastStyleSheetSet", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &lastStyleSheetSet_getterinfo, nullptr, nullptr },
12713 : { "preferredStyleSheetSet", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &preferredStyleSheetSet_getterinfo, nullptr, nullptr },
12714 : { "styleSheetSets", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &styleSheetSets_getterinfo, nullptr, nullptr },
12715 : { "scrollingElement", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &scrollingElement_getterinfo, nullptr, nullptr },
12716 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12717 : { "timeline", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &timeline_getterinfo, nullptr, nullptr },
12718 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12719 : { "rootElement", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &rootElement_getterinfo, nullptr, nullptr },
12720 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12721 : { "hasScriptsBlockedBySandbox", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &hasScriptsBlockedBySandbox_getterinfo, nullptr, nullptr },
12722 : { "inlineScriptAllowedByCSP", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &inlineScriptAllowedByCSP_getterinfo, nullptr, nullptr },
12723 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12724 : { "oncopy", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oncopy_getterinfo, GenericBindingSetter, &oncopy_setterinfo },
12725 : { "oncut", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oncut_getterinfo, GenericBindingSetter, &oncut_setterinfo },
12726 : { "onpaste", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpaste_getterinfo, GenericBindingSetter, &onpaste_setterinfo },
12727 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12728 : { "fonts", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &fonts_getterinfo, nullptr, nullptr },
12729 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12730 : { "onabort", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onabort_getterinfo, GenericBindingSetter, &onabort_setterinfo },
12731 : { "onblur", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onblur_getterinfo, GenericBindingSetter, &onblur_setterinfo },
12732 : { "onfocus", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onfocus_getterinfo, GenericBindingSetter, &onfocus_setterinfo },
12733 : { "onauxclick", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onauxclick_getterinfo, GenericBindingSetter, &onauxclick_setterinfo },
12734 : { "oncanplay", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oncanplay_getterinfo, GenericBindingSetter, &oncanplay_setterinfo },
12735 : { "oncanplaythrough", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oncanplaythrough_getterinfo, GenericBindingSetter, &oncanplaythrough_setterinfo },
12736 : { "onchange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onchange_getterinfo, GenericBindingSetter, &onchange_setterinfo },
12737 : { "onclick", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onclick_getterinfo, GenericBindingSetter, &onclick_setterinfo },
12738 : { "onclose", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onclose_getterinfo, GenericBindingSetter, &onclose_setterinfo },
12739 : { "oncontextmenu", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oncontextmenu_getterinfo, GenericBindingSetter, &oncontextmenu_setterinfo },
12740 : { "ondblclick", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondblclick_getterinfo, GenericBindingSetter, &ondblclick_setterinfo },
12741 : { "ondrag", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondrag_getterinfo, GenericBindingSetter, &ondrag_setterinfo },
12742 : { "ondragend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragend_getterinfo, GenericBindingSetter, &ondragend_setterinfo },
12743 : { "ondragenter", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragenter_getterinfo, GenericBindingSetter, &ondragenter_setterinfo },
12744 : { "ondragexit", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragexit_getterinfo, GenericBindingSetter, &ondragexit_setterinfo },
12745 : { "ondragleave", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragleave_getterinfo, GenericBindingSetter, &ondragleave_setterinfo },
12746 : { "ondragover", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragover_getterinfo, GenericBindingSetter, &ondragover_setterinfo },
12747 : { "ondragstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondragstart_getterinfo, GenericBindingSetter, &ondragstart_setterinfo },
12748 : { "ondrop", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondrop_getterinfo, GenericBindingSetter, &ondrop_setterinfo },
12749 : { "ondurationchange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ondurationchange_getterinfo, GenericBindingSetter, &ondurationchange_setterinfo },
12750 : { "onemptied", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onemptied_getterinfo, GenericBindingSetter, &onemptied_setterinfo },
12751 : { "onended", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onended_getterinfo, GenericBindingSetter, &onended_setterinfo },
12752 : { "oninput", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oninput_getterinfo, GenericBindingSetter, &oninput_setterinfo },
12753 : { "oninvalid", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &oninvalid_getterinfo, GenericBindingSetter, &oninvalid_setterinfo },
12754 : { "onkeydown", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onkeydown_getterinfo, GenericBindingSetter, &onkeydown_setterinfo },
12755 : { "onkeypress", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onkeypress_getterinfo, GenericBindingSetter, &onkeypress_setterinfo },
12756 : { "onkeyup", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onkeyup_getterinfo, GenericBindingSetter, &onkeyup_setterinfo },
12757 : { "onload", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onload_getterinfo, GenericBindingSetter, &onload_setterinfo },
12758 : { "onloadeddata", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onloadeddata_getterinfo, GenericBindingSetter, &onloadeddata_setterinfo },
12759 : { "onloadedmetadata", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onloadedmetadata_getterinfo, GenericBindingSetter, &onloadedmetadata_setterinfo },
12760 : { "onloadend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onloadend_getterinfo, GenericBindingSetter, &onloadend_setterinfo },
12761 : { "onloadstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onloadstart_getterinfo, GenericBindingSetter, &onloadstart_setterinfo },
12762 : { "onmousedown", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmousedown_getterinfo, GenericBindingSetter, &onmousedown_setterinfo },
12763 : { "onmouseenter", JSPROP_SHARED | JSPROP_ENUMERATE, genericLenientGetter, &onmouseenter_getterinfo, genericLenientSetter, &onmouseenter_setterinfo },
12764 : { "onmouseleave", JSPROP_SHARED | JSPROP_ENUMERATE, genericLenientGetter, &onmouseleave_getterinfo, genericLenientSetter, &onmouseleave_setterinfo },
12765 : { "onmousemove", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmousemove_getterinfo, GenericBindingSetter, &onmousemove_setterinfo },
12766 : { "onmouseout", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmouseout_getterinfo, GenericBindingSetter, &onmouseout_setterinfo },
12767 : { "onmouseover", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmouseover_getterinfo, GenericBindingSetter, &onmouseover_setterinfo },
12768 : { "onmouseup", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmouseup_getterinfo, GenericBindingSetter, &onmouseup_setterinfo },
12769 : { "onwheel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwheel_getterinfo, GenericBindingSetter, &onwheel_setterinfo },
12770 : { "onpause", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpause_getterinfo, GenericBindingSetter, &onpause_setterinfo },
12771 : { "onplay", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onplay_getterinfo, GenericBindingSetter, &onplay_setterinfo },
12772 : { "onplaying", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onplaying_getterinfo, GenericBindingSetter, &onplaying_setterinfo },
12773 : { "onprogress", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onprogress_getterinfo, GenericBindingSetter, &onprogress_setterinfo },
12774 : { "onratechange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onratechange_getterinfo, GenericBindingSetter, &onratechange_setterinfo },
12775 : { "onreset", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onreset_getterinfo, GenericBindingSetter, &onreset_setterinfo },
12776 : { "onresize", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onresize_getterinfo, GenericBindingSetter, &onresize_setterinfo },
12777 : { "onscroll", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onscroll_getterinfo, GenericBindingSetter, &onscroll_setterinfo },
12778 : { "onseeked", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onseeked_getterinfo, GenericBindingSetter, &onseeked_setterinfo },
12779 : { "onseeking", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onseeking_getterinfo, GenericBindingSetter, &onseeking_setterinfo },
12780 : { "onselect", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onselect_getterinfo, GenericBindingSetter, &onselect_setterinfo },
12781 : { "onshow", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onshow_getterinfo, GenericBindingSetter, &onshow_setterinfo },
12782 : { "onstalled", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onstalled_getterinfo, GenericBindingSetter, &onstalled_setterinfo },
12783 : { "onsubmit", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onsubmit_getterinfo, GenericBindingSetter, &onsubmit_setterinfo },
12784 : { "onsuspend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onsuspend_getterinfo, GenericBindingSetter, &onsuspend_setterinfo },
12785 : { "ontimeupdate", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontimeupdate_getterinfo, GenericBindingSetter, &ontimeupdate_setterinfo },
12786 : { "onvolumechange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onvolumechange_getterinfo, GenericBindingSetter, &onvolumechange_setterinfo },
12787 : { "onwaiting", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwaiting_getterinfo, GenericBindingSetter, &onwaiting_setterinfo },
12788 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12789 : { "onselectstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onselectstart_getterinfo, GenericBindingSetter, &onselectstart_setterinfo },
12790 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12791 : { "ontoggle", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontoggle_getterinfo, GenericBindingSetter, &ontoggle_setterinfo },
12792 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12793 : { "onpointercancel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointercancel_getterinfo, GenericBindingSetter, &onpointercancel_setterinfo },
12794 : { "onpointerdown", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerdown_getterinfo, GenericBindingSetter, &onpointerdown_setterinfo },
12795 : { "onpointerup", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerup_getterinfo, GenericBindingSetter, &onpointerup_setterinfo },
12796 : { "onpointermove", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointermove_getterinfo, GenericBindingSetter, &onpointermove_setterinfo },
12797 : { "onpointerout", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerout_getterinfo, GenericBindingSetter, &onpointerout_setterinfo },
12798 : { "onpointerover", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerover_getterinfo, GenericBindingSetter, &onpointerover_setterinfo },
12799 : { "onpointerenter", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerenter_getterinfo, GenericBindingSetter, &onpointerenter_setterinfo },
12800 : { "onpointerleave", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onpointerleave_getterinfo, GenericBindingSetter, &onpointerleave_setterinfo },
12801 : { "ongotpointercapture", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ongotpointercapture_getterinfo, GenericBindingSetter, &ongotpointercapture_setterinfo },
12802 : { "onlostpointercapture", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onlostpointercapture_getterinfo, GenericBindingSetter, &onlostpointercapture_setterinfo },
12803 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12804 : { "onmozfullscreenchange", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmozfullscreenchange_getterinfo, GenericBindingSetter, &onmozfullscreenchange_setterinfo },
12805 : { "onmozfullscreenerror", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onmozfullscreenerror_getterinfo, GenericBindingSetter, &onmozfullscreenerror_setterinfo },
12806 : { "onanimationcancel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onanimationcancel_getterinfo, GenericBindingSetter, &onanimationcancel_setterinfo },
12807 : { "onanimationend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onanimationend_getterinfo, GenericBindingSetter, &onanimationend_setterinfo },
12808 : { "onanimationiteration", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onanimationiteration_getterinfo, GenericBindingSetter, &onanimationiteration_setterinfo },
12809 : { "onanimationstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onanimationstart_getterinfo, GenericBindingSetter, &onanimationstart_setterinfo },
12810 : { "ontransitioncancel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontransitioncancel_getterinfo, GenericBindingSetter, &ontransitioncancel_setterinfo },
12811 : { "ontransitionend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontransitionend_getterinfo, GenericBindingSetter, &ontransitionend_setterinfo },
12812 : { "ontransitionrun", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontransitionrun_getterinfo, GenericBindingSetter, &ontransitionrun_setterinfo },
12813 : { "ontransitionstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontransitionstart_getterinfo, GenericBindingSetter, &ontransitionstart_setterinfo },
12814 : { "onwebkitanimationend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwebkitanimationend_getterinfo, GenericBindingSetter, &onwebkitanimationend_setterinfo },
12815 : { "onwebkitanimationiteration", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwebkitanimationiteration_getterinfo, GenericBindingSetter, &onwebkitanimationiteration_setterinfo },
12816 : { "onwebkitanimationstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwebkitanimationstart_getterinfo, GenericBindingSetter, &onwebkitanimationstart_setterinfo },
12817 : { "onwebkittransitionend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onwebkittransitionend_getterinfo, GenericBindingSetter, &onwebkittransitionend_setterinfo },
12818 : { "onerror", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &onerror_getterinfo, GenericBindingSetter, &onerror_setterinfo },
12819 : { "children", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &children_getterinfo, nullptr, nullptr },
12820 : { "firstElementChild", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &firstElementChild_getterinfo, nullptr, nullptr },
12821 : { "lastElementChild", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &lastElementChild_getterinfo, nullptr, nullptr },
12822 : { "childElementCount", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &childElementCount_getterinfo, nullptr, nullptr },
12823 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr },
12824 : { "ontouchstart", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontouchstart_getterinfo, GenericBindingSetter, &ontouchstart_setterinfo },
12825 : { "ontouchend", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontouchend_getterinfo, GenericBindingSetter, &ontouchend_setterinfo },
12826 : { "ontouchmove", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontouchmove_getterinfo, GenericBindingSetter, &ontouchmove_setterinfo },
12827 : { "ontouchcancel", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &ontouchcancel_getterinfo, GenericBindingSetter, &ontouchcancel_setterinfo },
12828 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr }
12829 : };
12830 : #if defined(__clang__)
12831 : #pragma clang diagnostic pop
12832 : #endif
12833 :
12834 : static PrefableDisablers sAttributes_disablers21 = {
12835 : true, false, 0, nullptr
12836 : };
12837 :
12838 : static PrefableDisablers sAttributes_disablers23 = {
12839 : true, false, 0, &IsChromeOrXBL
12840 : };
12841 :
12842 : static PrefableDisablers sAttributes_disablers27 = {
12843 : true, false, 0, &nsDocument::IsUnprefixedFullscreenEnabled
12844 : };
12845 :
12846 : static PrefableDisablers sAttributes_disablers31 = {
12847 : true, false, 0, &nsDocument::IsUnprefixedFullscreenEnabled
12848 : };
12849 :
12850 : static PrefableDisablers sAttributes_disablers35 = {
12851 : true, false, 0, &nsDocument::IsUnprefixedFullscreenEnabled
12852 : };
12853 :
12854 : static PrefableDisablers sAttributes_disablers39 = {
12855 : true, false, 0, &nsDocument::IsUnprefixedFullscreenEnabled
12856 : };
12857 :
12858 : static PrefableDisablers sAttributes_disablers54 = {
12859 : true, false, 0, &nsDocument::IsWebAnimationsEnabled
12860 : };
12861 :
12862 : static PrefableDisablers sAttributes_disablers58 = {
12863 : true, false, 0, &IsChromeOrXBL
12864 : };
12865 :
12866 : static PrefableDisablers sAttributes_disablers65 = {
12867 : true, false, 0, nullptr
12868 : };
12869 :
12870 : static PrefableDisablers sAttributes_disablers126 = {
12871 : true, false, 0, nullptr
12872 : };
12873 :
12874 : static PrefableDisablers sAttributes_disablers130 = {
12875 : true, false, 0, nullptr
12876 : };
12877 :
12878 : static PrefableDisablers sAttributes_disablers161 = {
12879 : true, false, 0, &nsGenericHTMLElement::TouchEventsEnabled
12880 : };
12881 :
12882 : // Can't be const because the pref-enabled boolean needs to be writable
12883 : static Prefable<const JSPropertySpec> sAttributes[] = {
12884 : { nullptr, &sAttributes_specs[0] },
12885 : { &sAttributes_disablers21, &sAttributes_specs[21] },
12886 : { &sAttributes_disablers23, &sAttributes_specs[23] },
12887 : { nullptr, &sAttributes_specs[25] },
12888 : { &sAttributes_disablers27, &sAttributes_specs[27] },
12889 : { nullptr, &sAttributes_specs[29] },
12890 : { &sAttributes_disablers31, &sAttributes_specs[31] },
12891 : { nullptr, &sAttributes_specs[33] },
12892 : { &sAttributes_disablers35, &sAttributes_specs[35] },
12893 : { nullptr, &sAttributes_specs[37] },
12894 : { &sAttributes_disablers39, &sAttributes_specs[39] },
12895 : { nullptr, &sAttributes_specs[42] },
12896 : { &sAttributes_disablers54, &sAttributes_specs[54] },
12897 : { nullptr, &sAttributes_specs[56] },
12898 : { &sAttributes_disablers58, &sAttributes_specs[58] },
12899 : { nullptr, &sAttributes_specs[61] },
12900 : { &sAttributes_disablers65, &sAttributes_specs[65] },
12901 : { nullptr, &sAttributes_specs[67] },
12902 : { &sAttributes_disablers126, &sAttributes_specs[126] },
12903 : { nullptr, &sAttributes_specs[128] },
12904 : { &sAttributes_disablers130, &sAttributes_specs[130] },
12905 : { nullptr, &sAttributes_specs[141] },
12906 : { &sAttributes_disablers161, &sAttributes_specs[161] },
12907 : { nullptr, nullptr }
12908 : };
12909 :
12910 : static_assert(23 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
12911 : "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
12912 : static_assert(58 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
12913 : "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
12914 :
12915 : // We deliberately use brace-elision to make Visual Studio produce better initalization code.
12916 : #if defined(__clang__)
12917 : #pragma clang diagnostic push
12918 : #pragma clang diagnostic ignored "-Wmissing-braces"
12919 : #endif
12920 : static const JSPropertySpec sChromeAttributes_specs[] = {
12921 : { "documentURIObject", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &documentURIObject_getterinfo, nullptr, nullptr },
12922 : { "referrerPolicy", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &referrerPolicy_getterinfo, nullptr, nullptr },
12923 : { "styleSheetChangeEventsEnabled", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &styleSheetChangeEventsEnabled_getterinfo, GenericBindingSetter, &styleSheetChangeEventsEnabled_setterinfo },
12924 : { "docShell", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &docShell_getterinfo, nullptr, nullptr },
12925 : { "contentLanguage", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &contentLanguage_getterinfo, nullptr, nullptr },
12926 : { "documentLoadGroup", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &documentLoadGroup_getterinfo, nullptr, nullptr },
12927 : { "mozDocumentURIIfNotForErrorPages", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &mozDocumentURIIfNotForErrorPages_getterinfo, nullptr, nullptr },
12928 : { "isSrcdocDocument", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &isSrcdocDocument_getterinfo, nullptr, nullptr },
12929 : { "sandboxFlagsAsString", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &sandboxFlagsAsString_getterinfo, nullptr, nullptr },
12930 : { "userHasInteracted", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &userHasInteracted_getterinfo, nullptr, nullptr },
12931 : { "documentFlashClassification", JSPROP_SHARED | JSPROP_ENUMERATE, GenericBindingGetter, &documentFlashClassification_getterinfo, nullptr, nullptr },
12932 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr }
12933 : };
12934 : #if defined(__clang__)
12935 : #pragma clang diagnostic pop
12936 : #endif
12937 :
12938 :
12939 : // Can't be const because the pref-enabled boolean needs to be writable
12940 : static Prefable<const JSPropertySpec> sChromeAttributes[] = {
12941 : { nullptr, &sChromeAttributes_specs[0] },
12942 : { nullptr, nullptr }
12943 : };
12944 :
12945 : static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
12946 : "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
12947 : static_assert(11 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
12948 : "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
12949 :
12950 : // We deliberately use brace-elision to make Visual Studio produce better initalization code.
12951 : #if defined(__clang__)
12952 : #pragma clang diagnostic push
12953 : #pragma clang diagnostic ignored "-Wmissing-braces"
12954 : #endif
12955 : static const JSPropertySpec sUnforgeableAttributes_specs[] = {
12956 : { "location", JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_PERMANENT, GenericBindingGetter, &location_getterinfo, GenericBindingSetter, &location_setterinfo },
12957 : { nullptr, 0, nullptr, nullptr, nullptr, nullptr }
12958 : };
12959 : #if defined(__clang__)
12960 : #pragma clang diagnostic pop
12961 : #endif
12962 :
12963 :
12964 : // Can't be const because the pref-enabled boolean needs to be writable
12965 : static Prefable<const JSPropertySpec> sUnforgeableAttributes[] = {
12966 : { nullptr, &sUnforgeableAttributes_specs[0] },
12967 : { nullptr, nullptr }
12968 : };
12969 :
12970 : static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_PREF_INDEX,
12971 : "We have a prefable index that is >= (1 << NUM_BITS_PROPERTY_INFO_PREF_INDEX)");
12972 : static_assert(1 <= 1ull << NUM_BITS_PROPERTY_INFO_SPEC_INDEX,
12973 : "We have a spec index that is >= (1 << NUM_BITS_PROPERTY_INFO_SPEC_INDEX)");
12974 :
12975 :
12976 : static uint16_t sNativeProperties_sortedPropertyIndices[193];
12977 : static PropertyInfo sNativeProperties_propertyInfos[193];
12978 :
12979 : static const NativePropertiesN<3> sNativeProperties = {
12980 : false, 0,
12981 : false, 0,
12982 : true, 0 /* sMethods */,
12983 : true, 1 /* sAttributes */,
12984 : false, 0,
12985 : true, 2 /* sUnforgeableAttributes */,
12986 : false, 0,
12987 : -1,
12988 : 193,
12989 : sNativeProperties_sortedPropertyIndices,
12990 : {
12991 : { sMethods, &sNativeProperties_propertyInfos[0] },
12992 : { sAttributes, &sNativeProperties_propertyInfos[49] },
12993 : { sUnforgeableAttributes, &sNativeProperties_propertyInfos[192] }
12994 : }
12995 : };
12996 : static_assert(193 < 1ull << CHAR_BIT * sizeof(sNativeProperties.propertyInfoCount),
12997 : "We have a property info count that is oversized");
12998 :
12999 : static uint16_t sChromeOnlyNativeProperties_sortedPropertyIndices[15];
13000 : static PropertyInfo sChromeOnlyNativeProperties_propertyInfos[15];
13001 :
13002 : static const NativePropertiesN<2> sChromeOnlyNativeProperties = {
13003 : false, 0,
13004 : false, 0,
13005 : true, 0 /* sChromeMethods */,
13006 : true, 1 /* sChromeAttributes */,
13007 : false, 0,
13008 : false, 0,
13009 : false, 0,
13010 : -1,
13011 : 15,
13012 : sChromeOnlyNativeProperties_sortedPropertyIndices,
13013 : {
13014 : { sChromeMethods, &sChromeOnlyNativeProperties_propertyInfos[0] },
13015 : { sChromeAttributes, &sChromeOnlyNativeProperties_propertyInfos[4] }
13016 : }
13017 : };
13018 : static_assert(15 < 1ull << CHAR_BIT * sizeof(sChromeOnlyNativeProperties.propertyInfoCount),
13019 : "We have a property info count that is oversized");
13020 :
13021 : static bool
13022 0 : _constructor(JSContext* cx, unsigned argc, JS::Value* vp)
13023 : {
13024 0 : JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
13025 0 : JS::Rooted<JSObject*> obj(cx, &args.callee());
13026 0 : if (!args.isConstructing()) {
13027 : // XXXbz wish I could get the name from the callee instead of
13028 : // Adding more relocations
13029 0 : return ThrowConstructorWithoutNew(cx, "Document");
13030 : }
13031 :
13032 0 : GlobalObject global(cx, obj);
13033 0 : if (global.Failed()) {
13034 0 : return false;
13035 : }
13036 :
13037 0 : JS::Rooted<JSObject*> desiredProto(cx);
13038 0 : if (!GetDesiredProto(cx, args, &desiredProto)) {
13039 0 : return false;
13040 : }
13041 :
13042 0 : bool objIsXray = xpc::WrapperFactory::IsXrayWrapper(obj);
13043 0 : Maybe<JSAutoCompartment> ac;
13044 0 : if (objIsXray) {
13045 0 : obj = js::CheckedUnwrap(obj);
13046 0 : if (!obj) {
13047 0 : return false;
13048 : }
13049 0 : ac.emplace(cx, obj);
13050 0 : if (!JS_WrapObject(cx, &desiredProto)) {
13051 0 : return false;
13052 : }
13053 : }
13054 0 : binding_detail::FastErrorResult rv;
13055 0 : auto result(StrongOrRawPtr<nsIDocument>(nsIDocument::Constructor(global, rv)));
13056 0 : if (MOZ_UNLIKELY(rv.MaybeSetPendingException(cx))) {
13057 0 : return false;
13058 : }
13059 0 : MOZ_ASSERT(!JS_IsExceptionPending(cx));
13060 : static_assert(!IsPointer<decltype(result)>::value,
13061 : "NewObject implies that we need to keep the object alive with a strong reference.");
13062 0 : if (!GetOrCreateDOMReflector(cx, result, args.rval(), desiredProto)) {
13063 0 : MOZ_ASSERT(true || JS_IsExceptionPending(cx));
13064 0 : return false;
13065 : }
13066 0 : return true;
13067 : }
13068 :
13069 : static const js::ClassOps sInterfaceObjectClassOps = {
13070 : nullptr, /* addProperty */
13071 : nullptr, /* delProperty */
13072 : nullptr, /* getProperty */
13073 : nullptr, /* setProperty */
13074 : nullptr, /* enumerate */
13075 : nullptr, /* newEnumerate */
13076 : nullptr, /* resolve */
13077 : nullptr, /* mayResolve */
13078 : nullptr, /* finalize */
13079 : _constructor, /* call */
13080 : nullptr, /* hasInstance */
13081 : _constructor, /* construct */
13082 : nullptr, /* trace */
13083 : };
13084 :
13085 : static const DOMIfaceAndProtoJSClass sInterfaceObjectClass = {
13086 : {
13087 : "Function",
13088 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_SLOTS_BASE),
13089 : &sInterfaceObjectClassOps,
13090 : JS_NULL_CLASS_SPEC,
13091 : JS_NULL_CLASS_EXT,
13092 : &sInterfaceObjectClassObjectOps
13093 : },
13094 : eInterface,
13095 : true,
13096 : prototypes::id::Document,
13097 : PrototypeTraits<prototypes::id::Document>::Depth,
13098 : sNativePropertyHooks,
13099 : "function Document() {\n [native code]\n}",
13100 : NodeBinding::GetConstructorObject
13101 : };
13102 :
13103 : static const DOMIfaceAndProtoJSClass sPrototypeClass = {
13104 : {
13105 : "DocumentPrototype",
13106 : JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_PROTO_SLOTS_BASE + 1 /* slot for the JSObject holding the unforgeable properties */),
13107 : JS_NULL_CLASS_OPS,
13108 : JS_NULL_CLASS_SPEC,
13109 : JS_NULL_CLASS_EXT,
13110 : JS_NULL_OBJECT_OPS
13111 : },
13112 : eInterfacePrototype,
13113 : false,
13114 : prototypes::id::Document,
13115 : PrototypeTraits<prototypes::id::Document>::Depth,
13116 : sNativePropertyHooks,
13117 : "[object DocumentPrototype]",
13118 : NodeBinding::GetProtoObject
13119 : };
13120 :
13121 : JSObject*
13122 0 : DefineDOMInterface(JSContext* aCx, JS::Handle<JSObject*> aGlobal, JS::Handle<jsid> id, bool aDefineOnGlobal)
13123 : {
13124 0 : return GetConstructorObjectHandle(aCx, aDefineOnGlobal);
13125 : }
13126 :
13127 : static const js::ClassOps sClassOps = {
13128 : _addProperty, /* addProperty */
13129 : nullptr, /* delProperty */
13130 : nullptr, /* getProperty */
13131 : nullptr, /* setProperty */
13132 : nullptr, /* enumerate */
13133 : nullptr, /* newEnumerate */
13134 : nullptr, /* resolve */
13135 : nullptr, /* mayResolve */
13136 : _finalize, /* finalize */
13137 : nullptr, /* call */
13138 : nullptr, /* hasInstance */
13139 : nullptr, /* construct */
13140 : nullptr, /* trace */
13141 : };
13142 :
13143 : static const js::ClassExtension sClassExtension = {
13144 : nullptr, /* weakmapKeyDelegateOp */
13145 : _objectMoved /* objectMovedOp */
13146 : };
13147 :
13148 : static const DOMJSClass sClass = {
13149 : { "Document",
13150 : JSCLASS_IS_DOMJSCLASS | JSCLASS_FOREGROUND_FINALIZE | JSCLASS_HAS_RESERVED_SLOTS(1),
13151 : &sClassOps,
13152 : JS_NULL_CLASS_SPEC,
13153 : &sClassExtension,
13154 : JS_NULL_OBJECT_OPS
13155 : },
13156 : { prototypes::id::EventTarget, prototypes::id::Node, prototypes::id::Document, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count, prototypes::id::_ID_Count },
13157 : IsBaseOf<nsISupports, nsIDocument >::value,
13158 : sNativePropertyHooks,
13159 : FindAssociatedGlobalForNative<nsIDocument>::Get,
13160 : GetProtoObjectHandle,
13161 : GetCCParticipant<nsIDocument>::Get()
13162 : };
13163 : static_assert(1 == DOM_INSTANCE_RESERVED_SLOTS,
13164 : "Must have the right minimal number of reserved slots.");
13165 : static_assert(1 >= 1,
13166 : "Must have enough reserved slots.");
13167 :
13168 : const JSClass*
13169 0 : GetJSClass()
13170 : {
13171 0 : return sClass.ToJSClass();
13172 : }
13173 :
13174 : bool
13175 0 : Wrap(JSContext* aCx, nsIDocument* aObject, nsWrapperCache* aCache, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector)
13176 : {
13177 : MOZ_ASSERT(static_cast<nsIDocument*>(aObject) ==
13178 : reinterpret_cast<nsIDocument*>(aObject),
13179 : "Multiple inheritance for nsIDocument is broken.");
13180 : MOZ_ASSERT(static_cast<nsINode*>(aObject) ==
13181 : reinterpret_cast<nsINode*>(aObject),
13182 : "Multiple inheritance for nsINode is broken.");
13183 : MOZ_ASSERT(static_cast<mozilla::dom::EventTarget*>(aObject) ==
13184 : reinterpret_cast<mozilla::dom::EventTarget*>(aObject),
13185 : "Multiple inheritance for mozilla::dom::EventTarget is broken.");
13186 0 : MOZ_ASSERT(ToSupportsIsCorrect(aObject));
13187 0 : MOZ_ASSERT_IF(aGivenProto, js::IsObjectInContextCompartment(aGivenProto, aCx));
13188 0 : MOZ_ASSERT(!aCache->GetWrapper(),
13189 : "You should probably not be using Wrap() directly; use "
13190 : "GetOrCreateDOMReflector instead");
13191 :
13192 0 : MOZ_ASSERT(ToSupportsIsOnPrimaryInheritanceChain(aObject, aCache),
13193 : "nsISupports must be on our primary inheritance chain");
13194 :
13195 0 : JS::Rooted<JSObject*> global(aCx, FindAssociatedGlobal(aCx, aObject->GetParentObject()));
13196 0 : if (!global) {
13197 0 : return false;
13198 : }
13199 0 : MOZ_ASSERT(JS_IsGlobalObject(global));
13200 0 : MOZ_ASSERT(JS::ObjectIsNotGray(global));
13201 :
13202 : // That might have ended up wrapping us already, due to the wonders
13203 : // of XBL. Check for that, and bail out as needed.
13204 0 : aReflector.set(aCache->GetWrapper());
13205 0 : if (aReflector) {
13206 : #ifdef DEBUG
13207 0 : binding_detail::AssertReflectorHasGivenProto(aCx, aReflector, aGivenProto);
13208 : #endif // DEBUG
13209 0 : return true;
13210 : }
13211 :
13212 0 : JSAutoCompartment ac(aCx, global);
13213 0 : JS::Handle<JSObject*> canonicalProto = GetProtoObjectHandle(aCx);
13214 0 : if (!canonicalProto) {
13215 0 : return false;
13216 : }
13217 0 : JS::Rooted<JSObject*> proto(aCx);
13218 0 : if (aGivenProto) {
13219 0 : proto = aGivenProto;
13220 : // Unfortunately, while aGivenProto was in the compartment of aCx
13221 : // coming in, we changed compartments to that of "parent" so may need
13222 : // to wrap the proto here.
13223 0 : if (js::GetContextCompartment(aCx) != js::GetObjectCompartment(proto)) {
13224 0 : if (!JS_WrapObject(aCx, &proto)) {
13225 0 : return false;
13226 : }
13227 : }
13228 : } else {
13229 0 : proto = canonicalProto;
13230 : }
13231 :
13232 0 : BindingJSObjectCreator<nsIDocument> creator(aCx);
13233 0 : creator.CreateObject(aCx, sClass.ToJSClass(), proto, aObject, aReflector);
13234 0 : if (!aReflector) {
13235 0 : return false;
13236 : }
13237 :
13238 0 : aCache->SetWrapper(aReflector);
13239 :
13240 : // Important: do unforgeable property setup after we have handed
13241 : // over ownership of the C++ object to obj as needed, so that if
13242 : // we fail and it ends up GCed it won't have problems in the
13243 : // finalizer trying to drop its ownership of the C++ object.
13244 : JS::Rooted<JSObject*> unforgeableHolder(aCx,
13245 0 : &js::GetReservedSlot(canonicalProto, DOM_INTERFACE_PROTO_SLOTS_BASE).toObject());
13246 0 : if (!JS_InitializePropertiesFromCompatibleNativeObject(aCx, aReflector, unforgeableHolder)) {
13247 0 : aCache->ReleaseWrapper(aObject);
13248 0 : aCache->ClearWrapper();
13249 0 : return false;
13250 : }
13251 0 : creator.InitializationSucceeded();
13252 :
13253 0 : MOZ_ASSERT(aCache->GetWrapperPreserveColor() &&
13254 : aCache->GetWrapperPreserveColor() == aReflector);
13255 : // If proto != canonicalProto, we have to preserve our wrapper;
13256 : // otherwise we won't be able to properly recreate it later, since
13257 : // we won't know what proto to use. Note that we don't check
13258 : // aGivenProto here, since it's entirely possible (and even
13259 : // somewhat common) to have a non-null aGivenProto which is the
13260 : // same as canonicalProto.
13261 0 : if (proto != canonicalProto) {
13262 0 : PreserveWrapper(aObject);
13263 : }
13264 :
13265 0 : return true;
13266 : }
13267 :
13268 : const NativePropertyHooks sNativePropertyHooks[] = { {
13269 : nullptr,
13270 : nullptr,
13271 : nullptr,
13272 : { sNativeProperties.Upcast(), sChromeOnlyNativeProperties.Upcast() },
13273 : prototypes::id::Document,
13274 : constructors::id::Document,
13275 : NodeBinding::sNativePropertyHooks,
13276 : &DefaultXrayExpandoObjectClass
13277 : } };
13278 :
13279 : static const char* const unscopableNames[] = {
13280 : "prepend",
13281 : "append",
13282 : nullptr
13283 : };
13284 :
13285 : void
13286 7 : CreateInterfaceObjects(JSContext* aCx, JS::Handle<JSObject*> aGlobal, ProtoAndIfaceCache& aProtoAndIfaceCache, bool aDefineOnGlobal)
13287 : {
13288 7 : JS::Handle<JSObject*> parentProto(NodeBinding::GetProtoObjectHandle(aCx));
13289 7 : if (!parentProto) {
13290 0 : return;
13291 : }
13292 :
13293 7 : JS::Handle<JSObject*> constructorProto(NodeBinding::GetConstructorObjectHandle(aCx));
13294 7 : if (!constructorProto) {
13295 0 : return;
13296 : }
13297 :
13298 : static bool sIdsInited = false;
13299 7 : if (!sIdsInited && NS_IsMainThread()) {
13300 2 : if (!InitIds(aCx, sNativeProperties.Upcast())) {
13301 0 : return;
13302 : }
13303 2 : if (!InitIds(aCx, sChromeOnlyNativeProperties.Upcast())) {
13304 0 : return;
13305 : }
13306 2 : sIdsInited = true;
13307 : }
13308 :
13309 : static bool sPrefCachesInited = false;
13310 7 : if (!sPrefCachesInited && NS_IsMainThread()) {
13311 2 : sPrefCachesInited = true;
13312 2 : Preferences::AddBoolVarCache(&sMethods[9].disablers->enabled, "layout.css.convertFromNode.enabled");
13313 2 : Preferences::AddBoolVarCache(&sAttributes[1].disablers->enabled, "dom.select_events.enabled");
13314 2 : Preferences::AddBoolVarCache(&sAttributes[16].disablers->enabled, "layout.css.font-loading-api.enabled");
13315 2 : Preferences::AddBoolVarCache(&sAttributes[18].disablers->enabled, "dom.select_events.enabled");
13316 2 : Preferences::AddBoolVarCache(&sAttributes[20].disablers->enabled, "dom.w3c_pointer_events.enabled");
13317 : }
13318 :
13319 7 : JS::Heap<JSObject*>* protoCache = &aProtoAndIfaceCache.EntrySlotOrCreate(prototypes::id::Document);
13320 7 : JS::Heap<JSObject*>* interfaceCache = &aProtoAndIfaceCache.EntrySlotOrCreate(constructors::id::Document);
13321 14 : dom::CreateInterfaceObjects(aCx, aGlobal, parentProto,
13322 : &sPrototypeClass.mBase, protoCache,
13323 : constructorProto, &sInterfaceObjectClass.mBase, 0, nullptr,
13324 : interfaceCache,
13325 : sNativeProperties.Upcast(),
13326 7 : nsContentUtils::ThreadsafeIsSystemCaller(aCx) ? sChromeOnlyNativeProperties.Upcast() : nullptr,
13327 : "Document", aDefineOnGlobal,
13328 : unscopableNames,
13329 7 : false);
13330 :
13331 14 : JS::Rooted<JSObject*> unforgeableHolder(aCx);
13332 : {
13333 14 : JS::Rooted<JSObject*> holderProto(aCx, *protoCache);
13334 7 : unforgeableHolder = JS_NewObjectWithoutMetadata(aCx, sClass.ToJSClass(), holderProto);
13335 7 : if (!unforgeableHolder) {
13336 0 : *protoCache = nullptr;
13337 0 : if (interfaceCache) {
13338 0 : *interfaceCache = nullptr;
13339 : }
13340 0 : return;
13341 : }
13342 : }
13343 :
13344 7 : if (!DefineUnforgeableAttributes(aCx, unforgeableHolder, sUnforgeableAttributes)) {
13345 0 : *protoCache = nullptr;
13346 0 : if (interfaceCache) {
13347 0 : *interfaceCache = nullptr;
13348 : }
13349 0 : return;
13350 : }
13351 :
13352 7 : if (*protoCache) {
13353 7 : js::SetReservedSlot(*protoCache, DOM_INTERFACE_PROTO_SLOTS_BASE,
13354 14 : JS::ObjectValue(*unforgeableHolder));
13355 : }
13356 : }
13357 :
13358 : JS::Handle<JSObject*>
13359 16 : GetProtoObjectHandle(JSContext* aCx)
13360 : {
13361 : /* Get the interface prototype object for this class. This will create the
13362 : object as needed. */
13363 16 : bool aDefineOnGlobal = true;
13364 :
13365 : /* Make sure our global is sane. Hopefully we can remove this sometime */
13366 16 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
13367 16 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
13368 0 : return nullptr;
13369 : }
13370 :
13371 : /* Check to see whether the interface objects are already installed */
13372 16 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
13373 16 : if (!protoAndIfaceCache.HasEntryInSlot(prototypes::id::Document)) {
13374 14 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
13375 7 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
13376 : }
13377 :
13378 : /*
13379 : * The object might _still_ be null, but that's OK.
13380 : *
13381 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
13382 : * traced by TraceProtoAndIfaceCache() and its contents are never
13383 : * changed after they have been set.
13384 : *
13385 : * Calling address() avoids the read read barrier that does gray
13386 : * unmarking, but it's not possible for the object to be gray here.
13387 : */
13388 :
13389 16 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(prototypes::id::Document);
13390 16 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
13391 16 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
13392 : }
13393 :
13394 : JSObject*
13395 8 : GetProtoObject(JSContext* aCx)
13396 : {
13397 8 : return GetProtoObjectHandle(aCx);
13398 : }
13399 :
13400 : JS::Handle<JSObject*>
13401 8 : GetConstructorObjectHandle(JSContext* aCx, bool aDefineOnGlobal)
13402 : {
13403 : /* Get the interface object for this class. This will create the object as
13404 : needed. */
13405 :
13406 : /* Make sure our global is sane. Hopefully we can remove this sometime */
13407 8 : JSObject* global = JS::CurrentGlobalOrNull(aCx);
13408 8 : if (!(js::GetObjectClass(global)->flags & JSCLASS_DOM_GLOBAL)) {
13409 0 : return nullptr;
13410 : }
13411 :
13412 : /* Check to see whether the interface objects are already installed */
13413 8 : ProtoAndIfaceCache& protoAndIfaceCache = *GetProtoAndIfaceCache(global);
13414 8 : if (!protoAndIfaceCache.HasEntryInSlot(constructors::id::Document)) {
13415 0 : JS::Rooted<JSObject*> rootedGlobal(aCx, global);
13416 0 : CreateInterfaceObjects(aCx, rootedGlobal, protoAndIfaceCache, aDefineOnGlobal);
13417 : }
13418 :
13419 : /*
13420 : * The object might _still_ be null, but that's OK.
13421 : *
13422 : * Calling fromMarkedLocation() is safe because protoAndIfaceCache is
13423 : * traced by TraceProtoAndIfaceCache() and its contents are never
13424 : * changed after they have been set.
13425 : *
13426 : * Calling address() avoids the read read barrier that does gray
13427 : * unmarking, but it's not possible for the object to be gray here.
13428 : */
13429 :
13430 8 : const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(constructors::id::Document);
13431 8 : MOZ_ASSERT(JS::ObjectIsNotGray(entrySlot));
13432 8 : return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
13433 : }
13434 :
13435 : JSObject*
13436 0 : GetConstructorObject(JSContext* aCx)
13437 : {
13438 0 : return GetConstructorObjectHandle(aCx);
13439 : }
13440 :
13441 : } // namespace DocumentBinding
13442 :
13443 :
13444 :
13445 : } // namespace dom
13446 : } // namespace mozilla
|