1 : /* THIS FILE IS AUTOGENERATED - DO NOT EDIT */
2 :
3 : #include "DOMSVGLengthList.h"
4 : #include "DOMSVGNumberList.h"
5 : #include "DOMSVGPathSegList.h"
6 : #include "DOMSVGPointList.h"
7 : #include "DOMSVGTransformList.h"
8 : #include "nsClientRect.h"
9 : #include "nsDOMFile.h"
10 : #include "nsDOMSettableTokenList.h"
11 : #include "nsDOMTokenList.h"
12 : #include "nsDOMTouchEvent.h"
13 : #include "nsHTMLSelectElement.h"
14 : #include "nsIContent.h"
15 : #include "nsIDOMClientRect.h"
16 : #include "nsIDOMFile.h"
17 : #include "nsIDOMHTMLOptionElement.h"
18 : #include "nsIDOMNode.h"
19 : #include "nsIDOMPaintRequest.h"
20 : #include "nsIDOMSVGLength.h"
21 : #include "nsIDOMSVGMatrix.h"
22 : #include "nsIDOMSVGNumber.h"
23 : #include "nsIDOMSVGPathSeg.h"
24 : #include "nsIDOMSVGPoint.h"
25 : #include "nsIDOMSVGTransform.h"
26 : #include "nsIDOMTouchEvent.h"
27 : #include "nsIHTMLCollection.h"
28 : #include "nsINodeList.h"
29 : #include "nsISupports.h"
30 : #include "nsIVariant.h"
31 : #include "nsPaintRequest.h"
32 :
33 : namespace mozilla {
34 : namespace dom {
35 : namespace binding {
36 :
37 : // Property name ids
38 :
39 1396 : static jsid s_add_id = JSID_VOID;
40 1396 : static jsid s_appendItem_id = JSID_VOID;
41 1396 : static jsid s_clear_id = JSID_VOID;
42 1396 : static jsid s_consolidate_id = JSID_VOID;
43 1396 : static jsid s_contains_id = JSID_VOID;
44 1396 : static jsid s_createSVGTransformFromMatrix_id = JSID_VOID;
45 1396 : static jsid s_getItem_id = JSID_VOID;
46 1396 : static jsid s_getItemAt_id = JSID_VOID;
47 1396 : static jsid s_identifiedTouch_id = JSID_VOID;
48 1396 : static jsid s_initialize_id = JSID_VOID;
49 1396 : static jsid s_insertItemBefore_id = JSID_VOID;
50 1396 : static jsid s_item_id = JSID_VOID;
51 1396 : static jsid s_namedItem_id = JSID_VOID;
52 1396 : static jsid s_numberOfItems_id = JSID_VOID;
53 1396 : static jsid s_remove_id = JSID_VOID;
54 1396 : static jsid s_removeItem_id = JSID_VOID;
55 1396 : static jsid s_replaceItem_id = JSID_VOID;
56 1396 : static jsid s_selectedIndex_id = JSID_VOID;
57 1396 : static jsid s_setOption_id = JSID_VOID;
58 1396 : static jsid s_toString_id = JSID_VOID;
59 1396 : static jsid s_toggle_id = JSID_VOID;
60 1396 : static jsid s_value_id = JSID_VOID;
61 :
62 : bool
63 1365 : DefinePropertyStaticJSVals(JSContext *cx)
64 : {
65 1365 : return SET_JSID_TO_STRING(cx, add) &&
66 1365 : SET_JSID_TO_STRING(cx, appendItem) &&
67 1365 : SET_JSID_TO_STRING(cx, clear) &&
68 1365 : SET_JSID_TO_STRING(cx, consolidate) &&
69 1365 : SET_JSID_TO_STRING(cx, contains) &&
70 1365 : SET_JSID_TO_STRING(cx, createSVGTransformFromMatrix) &&
71 1365 : SET_JSID_TO_STRING(cx, getItem) &&
72 1365 : SET_JSID_TO_STRING(cx, getItemAt) &&
73 1365 : SET_JSID_TO_STRING(cx, identifiedTouch) &&
74 1365 : SET_JSID_TO_STRING(cx, initialize) &&
75 1365 : SET_JSID_TO_STRING(cx, insertItemBefore) &&
76 1365 : SET_JSID_TO_STRING(cx, item) &&
77 1365 : SET_JSID_TO_STRING(cx, namedItem) &&
78 1365 : SET_JSID_TO_STRING(cx, numberOfItems) &&
79 1365 : SET_JSID_TO_STRING(cx, remove) &&
80 1365 : SET_JSID_TO_STRING(cx, removeItem) &&
81 1365 : SET_JSID_TO_STRING(cx, replaceItem) &&
82 1365 : SET_JSID_TO_STRING(cx, selectedIndex) &&
83 1365 : SET_JSID_TO_STRING(cx, setOption) &&
84 1365 : SET_JSID_TO_STRING(cx, toString) &&
85 1365 : SET_JSID_TO_STRING(cx, toggle) &&
86 28665 : SET_JSID_TO_STRING(cx, value);
87 : }
88 :
89 : // Typedefs
90 :
91 : // DOMTokenList
92 :
93 : typedef ListClass<nsDOMTokenList, Ops<Getter<nsString> > > DOMTokenListClass;
94 : typedef ListBase<DOMTokenListClass> DOMTokenListWrapper;
95 :
96 :
97 : // HTMLCollection
98 :
99 : typedef ListClass<nsIHTMLCollection, Ops<Getter<nsIContent *> >, Ops<Getter<nsISupportsResult> > > HTMLCollectionClass;
100 : typedef ListBase<HTMLCollectionClass> HTMLCollectionWrapper;
101 :
102 :
103 : // ClientRectList
104 :
105 : typedef ListClass<nsClientRectList, Ops<Getter<nsIDOMClientRect *> > > ClientRectListClass;
106 : typedef ListBase<ClientRectListClass> ClientRectListWrapper;
107 :
108 :
109 : // DOMSettableTokenList
110 :
111 : typedef DerivedListClass<nsDOMSettableTokenList, DOMTokenListWrapper, Ops<Getter<nsString> > > DOMSettableTokenListClass;
112 : typedef ListBase<DOMSettableTokenListClass> DOMSettableTokenListWrapper;
113 :
114 :
115 : // FileList
116 :
117 : typedef ListClass<nsDOMFileList, Ops<Getter<nsIDOMFile *> > > FileListClass;
118 : typedef ListBase<FileListClass> FileListWrapper;
119 :
120 :
121 : // HTMLOptionsCollection
122 :
123 : typedef DerivedListClass<nsHTMLOptionCollection, HTMLCollectionWrapper, Ops<Getter<nsIContent *>, Setter<nsIDOMHTMLOptionElement *> >, Ops<Getter<nsISupportsResult> > > HTMLOptionsCollectionClass;
124 : typedef ListBase<HTMLOptionsCollectionClass> HTMLOptionsCollectionWrapper;
125 :
126 :
127 : // NodeList
128 :
129 : typedef ListClass<nsINodeList, Ops<Getter<nsIContent *> > > NodeListClass;
130 : typedef ListBase<NodeListClass> NodeListWrapper;
131 :
132 :
133 : // PaintRequestList
134 :
135 : typedef ListClass<nsPaintRequestList, Ops<Getter<nsIDOMPaintRequest *> > > PaintRequestListClass;
136 : typedef ListBase<PaintRequestListClass> PaintRequestListWrapper;
137 :
138 :
139 : // SVGLengthList
140 :
141 : typedef ListClass<mozilla::DOMSVGLengthList, Ops<Getter<nsIDOMSVGLength *> > > SVGLengthListClass;
142 : typedef ListBase<SVGLengthListClass> SVGLengthListWrapper;
143 :
144 :
145 : // SVGNumberList
146 :
147 : typedef ListClass<mozilla::DOMSVGNumberList, Ops<Getter<nsIDOMSVGNumber *> > > SVGNumberListClass;
148 : typedef ListBase<SVGNumberListClass> SVGNumberListWrapper;
149 :
150 :
151 : // SVGPathSegList
152 :
153 : typedef ListClass<mozilla::DOMSVGPathSegList, Ops<Getter<nsIDOMSVGPathSeg *> > > SVGPathSegListClass;
154 : typedef ListBase<SVGPathSegListClass> SVGPathSegListWrapper;
155 :
156 :
157 : // SVGPointList
158 :
159 : typedef ListClass<mozilla::DOMSVGPointList, Ops<Getter<nsIDOMSVGPoint *> > > SVGPointListClass;
160 : typedef ListBase<SVGPointListClass> SVGPointListWrapper;
161 :
162 :
163 : // SVGTransformList
164 :
165 : typedef ListClass<mozilla::DOMSVGTransformList, Ops<Getter<nsIDOMSVGTransform *> > > SVGTransformListClass;
166 : typedef ListBase<SVGTransformListClass> SVGTransformListWrapper;
167 :
168 :
169 : // TouchList
170 :
171 : typedef ListClass<nsDOMTouchList, Ops<Getter<nsIDOMTouch *> > > TouchListClass;
172 : typedef ListBase<TouchListClass> TouchListWrapper;
173 :
174 :
175 : // Implementation
176 :
177 : // DOMTokenList
178 :
179 : template<>
180 : js::Class DOMTokenListWrapper::sInterfaceClass = {
181 : "DOMTokenList",
182 : 0,
183 : JS_PropertyStub, /* addProperty */
184 : JS_PropertyStub, /* delProperty */
185 : JS_PropertyStub, /* getProperty */
186 : JS_StrictPropertyStub, /* setProperty */
187 : JS_EnumerateStub,
188 : JS_ResolveStub,
189 : JS_ConvertStub,
190 : JS_FinalizeStub,
191 : NULL, /* checkAccess */
192 : NULL, /* call */
193 : NULL, /* construct */
194 : interface_hasInstance
195 : };
196 :
197 : template<>
198 : bool
199 0 : DOMTokenListWrapper::objIsList(JSObject *obj)
200 : {
201 0 : if (!js::IsProxy(obj))
202 0 : return false;
203 0 : js::ProxyHandler *handler = js::GetProxyHandler(obj);
204 0 : return proxyHandlerIsList(handler) ||
205 0 : DOMSettableTokenListWrapper::proxyHandlerIsList(handler);
206 : }
207 :
208 : template<>
209 : nsDOMTokenList*
210 0 : DOMTokenListWrapper::getNative(JSObject *obj)
211 : {
212 0 : js::ProxyHandler *handler = js::GetProxyHandler(obj);
213 0 : if (proxyHandlerIsList(handler))
214 0 : return static_cast<nsDOMTokenList*>(js::GetProxyPrivate(obj).toPrivate());
215 0 : if (DOMSettableTokenListWrapper::proxyHandlerIsList(handler))
216 0 : return DOMSettableTokenListWrapper::getNative(obj);
217 :
218 0 : NS_RUNTIMEABORT("Unknown list type!");
219 0 : return NULL;
220 : }
221 :
222 : template<>
223 : JSObject *
224 0 : DOMTokenListWrapper::getPrototype(JSContext *cx, XPCWrappedNativeScope *scope, bool *enabled)
225 : {
226 0 : if (!scope->NewDOMBindingsEnabled()) {
227 0 : *enabled = false;
228 0 : return NULL;
229 : }
230 :
231 0 : *enabled = true;
232 0 : return getPrototype(cx, scope);
233 : }
234 :
235 : template<>
236 : JSString *
237 0 : DOMTokenListWrapper::obj_toString(JSContext *cx, JSObject *proxy)
238 : {
239 0 : nsString result;
240 0 : nsresult rv = DOMTokenListWrapper::getListObject(proxy)->ToString(result);
241 : JSString *jsresult;
242 0 : return NS_SUCCEEDED(rv) && xpc_qsStringToJsstring(cx, result, &jsresult) ? jsresult : NULL;
243 : }
244 :
245 : template<>
246 : bool
247 0 : DOMTokenListWrapper::getItemAt(nsDOMTokenList *list, uint32_t index, nsString &item)
248 : {
249 0 : list->Item(index, item);
250 0 : return !DOMStringIsNull(item);
251 : }
252 :
253 : static JSBool
254 0 : DOMTokenList_Add(JSContext *cx, unsigned argc, jsval *vp)
255 : {
256 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
257 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
258 0 : if (!obj)
259 0 : return JS_FALSE;
260 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
261 0 : if (!DOMTokenListWrapper::instanceIsListObject(cx, obj, callee))
262 0 : return false;
263 0 : if (argc < 1)
264 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
265 0 : jsval *argv = JS_ARGV(cx, vp);
266 0 : xpc_qsDOMString arg0(cx, argv[0], &argv[0], xpc_qsDOMString::eStringify, xpc_qsDOMString::eDefaultUndefinedBehavior);
267 0 : if (!arg0.IsValid())
268 0 : return JS_FALSE;
269 : nsresult rv;
270 0 : rv = DOMTokenListWrapper::getListObject(obj)->Add(arg0);
271 0 : if (NS_FAILED(rv))
272 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "DOMTokenList", "add");
273 0 : *vp = JSVAL_VOID;
274 0 : return JS_TRUE;
275 : }
276 :
277 : static JSBool
278 0 : DOMTokenList_Contains(JSContext *cx, unsigned argc, jsval *vp)
279 : {
280 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
281 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
282 0 : if (!obj)
283 0 : return JS_FALSE;
284 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
285 0 : if (!DOMTokenListWrapper::instanceIsListObject(cx, obj, callee))
286 0 : return false;
287 0 : if (argc < 1)
288 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
289 0 : jsval *argv = JS_ARGV(cx, vp);
290 0 : xpc_qsDOMString arg0(cx, argv[0], &argv[0], xpc_qsDOMString::eStringify, xpc_qsDOMString::eDefaultUndefinedBehavior);
291 0 : if (!arg0.IsValid())
292 0 : return JS_FALSE;
293 : nsresult rv;
294 : bool result;
295 0 : rv = DOMTokenListWrapper::getListObject(obj)->Contains(arg0, &result);
296 0 : if (NS_FAILED(rv))
297 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "DOMTokenList", "contains");
298 0 : *vp = (result ? JSVAL_TRUE : JSVAL_FALSE);
299 0 : return JS_TRUE;
300 : }
301 :
302 : static JSBool
303 0 : DOMTokenList_Item(JSContext *cx, unsigned argc, jsval *vp)
304 : {
305 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
306 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
307 0 : if (!obj)
308 0 : return JS_FALSE;
309 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
310 0 : if (!DOMTokenListWrapper::instanceIsListObject(cx, obj, callee))
311 0 : return false;
312 0 : if (argc < 1)
313 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
314 0 : jsval *argv = JS_ARGV(cx, vp);
315 : uint32_t arg0;
316 0 : if (!JS_ValueToECMAUint32(cx, argv[0], &arg0))
317 0 : return JS_FALSE;
318 : nsresult rv;
319 0 : nsString result;
320 0 : rv = DOMTokenListWrapper::getListObject(obj)->Item(arg0, result);
321 0 : if (NS_FAILED(rv))
322 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "DOMTokenList", "item");
323 0 : return xpc::StringToJsval(cx, result, vp);
324 : }
325 :
326 : static JSBool
327 0 : DOMTokenList_Remove(JSContext *cx, unsigned argc, jsval *vp)
328 : {
329 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
330 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
331 0 : if (!obj)
332 0 : return JS_FALSE;
333 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
334 0 : if (!DOMTokenListWrapper::instanceIsListObject(cx, obj, callee))
335 0 : return false;
336 0 : if (argc < 1)
337 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
338 0 : jsval *argv = JS_ARGV(cx, vp);
339 0 : xpc_qsDOMString arg0(cx, argv[0], &argv[0], xpc_qsDOMString::eStringify, xpc_qsDOMString::eDefaultUndefinedBehavior);
340 0 : if (!arg0.IsValid())
341 0 : return JS_FALSE;
342 : nsresult rv;
343 0 : rv = DOMTokenListWrapper::getListObject(obj)->Remove(arg0);
344 0 : if (NS_FAILED(rv))
345 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "DOMTokenList", "remove");
346 0 : *vp = JSVAL_VOID;
347 0 : return JS_TRUE;
348 : }
349 :
350 : static JSBool
351 0 : DOMTokenList_ToString(JSContext *cx, unsigned argc, jsval *vp)
352 : {
353 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
354 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
355 0 : if (!obj)
356 0 : return JS_FALSE;
357 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
358 0 : if (!DOMTokenListWrapper::instanceIsListObject(cx, obj, callee))
359 0 : return false;
360 : nsresult rv;
361 0 : nsString result;
362 0 : rv = DOMTokenListWrapper::getListObject(obj)->ToString(result);
363 0 : if (NS_FAILED(rv))
364 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "DOMTokenList", "toString");
365 0 : return xpc::StringToJsval(cx, result, vp);
366 : }
367 :
368 : static JSBool
369 0 : DOMTokenList_Toggle(JSContext *cx, unsigned argc, jsval *vp)
370 : {
371 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
372 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
373 0 : if (!obj)
374 0 : return JS_FALSE;
375 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
376 0 : if (!DOMTokenListWrapper::instanceIsListObject(cx, obj, callee))
377 0 : return false;
378 0 : if (argc < 1)
379 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
380 0 : jsval *argv = JS_ARGV(cx, vp);
381 0 : xpc_qsDOMString arg0(cx, argv[0], &argv[0], xpc_qsDOMString::eStringify, xpc_qsDOMString::eDefaultUndefinedBehavior);
382 0 : if (!arg0.IsValid())
383 0 : return JS_FALSE;
384 : nsresult rv;
385 : bool result;
386 0 : rv = DOMTokenListWrapper::getListObject(obj)->Toggle(arg0, &result);
387 0 : if (NS_FAILED(rv))
388 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "DOMTokenList", "toggle");
389 0 : *vp = (result ? JSVAL_TRUE : JSVAL_FALSE);
390 0 : return JS_TRUE;
391 : }
392 :
393 : template<>
394 : DOMTokenListWrapper::Properties DOMTokenListWrapper::sProtoProperties[] = {
395 : { s_length_id, length_getter, NULL }
396 : };
397 :
398 : template<>
399 1396 : size_t DOMTokenListWrapper::sProtoPropertiesCount = ArrayLength(DOMTokenListWrapper::sProtoProperties);
400 :
401 : template<>
402 : DOMTokenListWrapper::Methods DOMTokenListWrapper::sProtoMethods[] = {
403 : { s_add_id, DOMTokenList_Add, 1 },
404 : { s_contains_id, DOMTokenList_Contains, 1 },
405 : { s_item_id, DOMTokenList_Item, 1 },
406 : { s_remove_id, DOMTokenList_Remove, 1 },
407 : { s_toString_id, DOMTokenList_ToString, 0 },
408 : { s_toggle_id, DOMTokenList_Toggle, 1 }
409 : };
410 :
411 : template<>
412 1396 : size_t DOMTokenListWrapper::sProtoMethodsCount = ArrayLength(DOMTokenListWrapper::sProtoMethods);
413 :
414 : template class ListBase<DOMTokenListClass>;
415 :
416 : JSObject*
417 0 : DOMTokenList::create(JSContext *cx, XPCWrappedNativeScope *scope, nsDOMTokenList *list, nsWrapperCache *cache, bool *triedToWrap)
418 : {
419 0 : return DOMTokenListWrapper::create(cx, scope, list, cache, triedToWrap);
420 : }
421 :
422 : bool
423 0 : DOMTokenList::objIsWrapper(JSObject *obj)
424 : {
425 0 : return DOMTokenListWrapper::objIsList(obj);
426 : }
427 :
428 : nsDOMTokenList*
429 0 : DOMTokenList::getNative(JSObject *obj)
430 : {
431 0 : return DOMTokenListWrapper::getListObject(obj);
432 : }
433 :
434 : // HTMLCollection
435 :
436 : template<>
437 : js::Class HTMLCollectionWrapper::sInterfaceClass = {
438 : "HTMLCollection",
439 : 0,
440 : JS_PropertyStub, /* addProperty */
441 : JS_PropertyStub, /* delProperty */
442 : JS_PropertyStub, /* getProperty */
443 : JS_StrictPropertyStub, /* setProperty */
444 : JS_EnumerateStub,
445 : JS_ResolveStub,
446 : JS_ConvertStub,
447 : JS_FinalizeStub,
448 : NULL, /* checkAccess */
449 : NULL, /* call */
450 : NULL, /* construct */
451 : interface_hasInstance
452 : };
453 :
454 : template<>
455 : bool
456 17865 : HTMLCollectionWrapper::objIsList(JSObject *obj)
457 : {
458 17865 : if (!js::IsProxy(obj))
459 0 : return false;
460 17865 : js::ProxyHandler *handler = js::GetProxyHandler(obj);
461 17865 : return proxyHandlerIsList(handler) ||
462 17865 : HTMLOptionsCollectionWrapper::proxyHandlerIsList(handler);
463 : }
464 :
465 : template<>
466 : nsIHTMLCollection*
467 9103 : HTMLCollectionWrapper::getNative(JSObject *obj)
468 : {
469 9103 : js::ProxyHandler *handler = js::GetProxyHandler(obj);
470 9103 : if (proxyHandlerIsList(handler))
471 9103 : return static_cast<nsIHTMLCollection*>(js::GetProxyPrivate(obj).toPrivate());
472 0 : if (HTMLOptionsCollectionWrapper::proxyHandlerIsList(handler))
473 0 : return HTMLOptionsCollectionWrapper::getNative(obj);
474 :
475 0 : NS_RUNTIMEABORT("Unknown list type!");
476 0 : return NULL;
477 : }
478 :
479 : template<>
480 : bool
481 3141 : HTMLCollectionWrapper::getItemAt(nsIHTMLCollection *list, uint32_t index, nsIContent * &item)
482 : {
483 3141 : item = list->GetNodeAt(index);
484 3141 : return !!item;
485 : }
486 :
487 : template<>
488 : bool
489 0 : HTMLCollectionWrapper::getNamedItem(nsIHTMLCollection *list, const nsAString& index, nsISupportsResult &item)
490 : {
491 0 : item.mResult = list->GetNamedItem(index, &item.mCache);
492 0 : return !!item.mResult;
493 : }
494 :
495 : static JSBool
496 111 : HTMLCollection_Item(JSContext *cx, unsigned argc, jsval *vp)
497 : {
498 111 : XPC_QS_ASSERT_CONTEXT_OK(cx);
499 111 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
500 111 : if (!obj)
501 0 : return JS_FALSE;
502 111 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
503 111 : if (!HTMLCollectionWrapper::instanceIsListObject(cx, obj, callee))
504 0 : return false;
505 111 : if (argc < 1)
506 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
507 111 : jsval *argv = JS_ARGV(cx, vp);
508 : uint32_t arg0;
509 111 : if (!JS_ValueToECMAUint32(cx, argv[0], &arg0))
510 0 : return JS_FALSE;
511 : nsIContent *result;
512 111 : result = HTMLCollectionWrapper::getListObject(obj)->GetNodeAt(arg0);
513 111 : if (!result) {
514 0 : *vp = JSVAL_NULL;
515 0 : return JS_TRUE;
516 : }
517 111 : return Wrap(cx, obj, result, vp);
518 : }
519 :
520 : static JSBool
521 0 : HTMLCollection_NamedItem(JSContext *cx, unsigned argc, jsval *vp)
522 : {
523 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
524 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
525 0 : if (!obj)
526 0 : return JS_FALSE;
527 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
528 0 : if (!HTMLCollectionWrapper::instanceIsListObject(cx, obj, callee))
529 0 : return false;
530 0 : if (argc < 1)
531 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
532 0 : jsval *argv = JS_ARGV(cx, vp);
533 0 : xpc_qsDOMString arg0(cx, argv[0], &argv[0], xpc_qsDOMString::eDefaultNullBehavior, xpc_qsDOMString::eDefaultUndefinedBehavior);
534 0 : if (!arg0.IsValid())
535 0 : return JS_FALSE;
536 : nsWrapperCache *cache;
537 : nsISupports *result;
538 0 : result = HTMLCollectionWrapper::getListObject(obj)->GetNamedItem(arg0, &cache);
539 0 : if (!result) {
540 0 : *vp = JSVAL_NULL;
541 0 : return JS_TRUE;
542 : }
543 0 : return Wrap(cx, obj, result, cache, vp);
544 : }
545 :
546 : template<>
547 : HTMLCollectionWrapper::Properties HTMLCollectionWrapper::sProtoProperties[] = {
548 : { s_length_id, length_getter, NULL }
549 : };
550 :
551 : template<>
552 1396 : size_t HTMLCollectionWrapper::sProtoPropertiesCount = ArrayLength(HTMLCollectionWrapper::sProtoProperties);
553 :
554 : template<>
555 : HTMLCollectionWrapper::Methods HTMLCollectionWrapper::sProtoMethods[] = {
556 : { s_item_id, HTMLCollection_Item, 1 },
557 : { s_namedItem_id, HTMLCollection_NamedItem, 1 }
558 : };
559 :
560 : template<>
561 1396 : size_t HTMLCollectionWrapper::sProtoMethodsCount = ArrayLength(HTMLCollectionWrapper::sProtoMethods);
562 :
563 : template class ListBase<HTMLCollectionClass>;
564 :
565 : JSObject*
566 2684 : HTMLCollection::create(JSContext *cx, XPCWrappedNativeScope *scope, nsIHTMLCollection *list, nsWrapperCache *cache, bool *triedToWrap)
567 : {
568 2684 : return HTMLCollectionWrapper::create(cx, scope, list, cache, triedToWrap);
569 : }
570 :
571 : bool
572 0 : HTMLCollection::objIsWrapper(JSObject *obj)
573 : {
574 0 : return HTMLCollectionWrapper::objIsList(obj);
575 : }
576 :
577 : nsIHTMLCollection*
578 0 : HTMLCollection::getNative(JSObject *obj)
579 : {
580 0 : return HTMLCollectionWrapper::getListObject(obj);
581 : }
582 :
583 : // ClientRectList
584 :
585 : template<>
586 : js::Class ClientRectListWrapper::sInterfaceClass = {
587 : "ClientRectList",
588 : 0,
589 : JS_PropertyStub, /* addProperty */
590 : JS_PropertyStub, /* delProperty */
591 : JS_PropertyStub, /* getProperty */
592 : JS_StrictPropertyStub, /* setProperty */
593 : JS_EnumerateStub,
594 : JS_ResolveStub,
595 : JS_ConvertStub,
596 : JS_FinalizeStub,
597 : NULL, /* checkAccess */
598 : NULL, /* call */
599 : NULL, /* construct */
600 : interface_hasInstance
601 : };
602 :
603 : template<>
604 : JSObject *
605 0 : ClientRectListWrapper::getPrototype(JSContext *cx, XPCWrappedNativeScope *scope, bool *enabled)
606 : {
607 0 : if (!scope->NewDOMBindingsEnabled()) {
608 0 : *enabled = false;
609 0 : return NULL;
610 : }
611 :
612 0 : *enabled = true;
613 0 : return getPrototype(cx, scope);
614 : }
615 :
616 : template<>
617 : bool
618 0 : ClientRectListWrapper::getItemAt(nsClientRectList *list, uint32_t index, nsIDOMClientRect * &item)
619 : {
620 0 : item = list->GetItemAt(index);
621 0 : return !!item;
622 : }
623 :
624 : static JSBool
625 0 : ClientRectList_Item(JSContext *cx, unsigned argc, jsval *vp)
626 : {
627 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
628 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
629 0 : if (!obj)
630 0 : return JS_FALSE;
631 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
632 0 : if (!ClientRectListWrapper::instanceIsListObject(cx, obj, callee))
633 0 : return false;
634 0 : if (argc < 1)
635 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
636 0 : jsval *argv = JS_ARGV(cx, vp);
637 : uint32_t arg0;
638 0 : if (!JS_ValueToECMAUint32(cx, argv[0], &arg0))
639 0 : return JS_FALSE;
640 : nsIDOMClientRect *result;
641 0 : result = ClientRectListWrapper::getListObject(obj)->GetItemAt(arg0);
642 0 : if (!result) {
643 0 : *vp = JSVAL_NULL;
644 0 : return JS_TRUE;
645 : }
646 0 : return Wrap(cx, obj, result, vp);
647 : }
648 :
649 : template<>
650 : ClientRectListWrapper::Properties ClientRectListWrapper::sProtoProperties[] = {
651 : { s_length_id, length_getter, NULL }
652 : };
653 :
654 : template<>
655 1396 : size_t ClientRectListWrapper::sProtoPropertiesCount = ArrayLength(ClientRectListWrapper::sProtoProperties);
656 :
657 : template<>
658 : ClientRectListWrapper::Methods ClientRectListWrapper::sProtoMethods[] = {
659 : { s_item_id, ClientRectList_Item, 1 }
660 : };
661 :
662 : template<>
663 1396 : size_t ClientRectListWrapper::sProtoMethodsCount = ArrayLength(ClientRectListWrapper::sProtoMethods);
664 :
665 : template class ListBase<ClientRectListClass>;
666 :
667 : JSObject*
668 0 : ClientRectList::create(JSContext *cx, XPCWrappedNativeScope *scope, nsClientRectList *list, nsWrapperCache *cache, bool *triedToWrap)
669 : {
670 0 : return ClientRectListWrapper::create(cx, scope, list, cache, triedToWrap);
671 : }
672 :
673 : bool
674 0 : ClientRectList::objIsWrapper(JSObject *obj)
675 : {
676 0 : return ClientRectListWrapper::objIsList(obj);
677 : }
678 :
679 : nsClientRectList*
680 0 : ClientRectList::getNative(JSObject *obj)
681 : {
682 0 : return ClientRectListWrapper::getListObject(obj);
683 : }
684 :
685 : // DOMSettableTokenList
686 :
687 : template<>
688 : js::Class DOMSettableTokenListWrapper::sInterfaceClass = {
689 : "DOMSettableTokenList",
690 : 0,
691 : JS_PropertyStub, /* addProperty */
692 : JS_PropertyStub, /* delProperty */
693 : JS_PropertyStub, /* getProperty */
694 : JS_StrictPropertyStub, /* setProperty */
695 : JS_EnumerateStub,
696 : JS_ResolveStub,
697 : JS_ConvertStub,
698 : JS_FinalizeStub,
699 : NULL, /* checkAccess */
700 : NULL, /* call */
701 : NULL, /* construct */
702 : interface_hasInstance
703 : };
704 :
705 : template<>
706 : JSObject *
707 0 : DOMSettableTokenListWrapper::getPrototype(JSContext *cx, XPCWrappedNativeScope *scope, bool *enabled)
708 : {
709 0 : if (!scope->NewDOMBindingsEnabled()) {
710 0 : *enabled = false;
711 0 : return NULL;
712 : }
713 :
714 0 : *enabled = true;
715 0 : return getPrototype(cx, scope);
716 : }
717 :
718 : template<>
719 : JSString *
720 0 : DOMSettableTokenListWrapper::obj_toString(JSContext *cx, JSObject *proxy)
721 : {
722 0 : nsString result;
723 0 : nsresult rv = DOMSettableTokenListWrapper::getListObject(proxy)->ToString(result);
724 : JSString *jsresult;
725 0 : return NS_SUCCEEDED(rv) && xpc_qsStringToJsstring(cx, result, &jsresult) ? jsresult : NULL;
726 : }
727 :
728 : template<>
729 : bool
730 0 : DOMSettableTokenListWrapper::getItemAt(nsDOMSettableTokenList *list, uint32_t index, nsString &item)
731 : {
732 0 : list->Item(index, item);
733 0 : return !DOMStringIsNull(item);
734 : }
735 :
736 : static JSBool
737 0 : DOMSettableTokenList_GetValue(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
738 : {
739 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
740 0 : if (!DOMSettableTokenListWrapper::instanceIsListObject(cx, obj, NULL))
741 0 : return false;
742 : nsresult rv;
743 0 : nsString result;
744 0 : rv = DOMSettableTokenListWrapper::getListObject(obj)->GetValue(result);
745 0 : if (NS_FAILED(rv))
746 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "DOMSettableTokenList", "value");
747 0 : return xpc::StringToJsval(cx, result, vp);
748 : }
749 :
750 : static JSBool
751 0 : DOMSettableTokenList_SetValue(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp)
752 : {
753 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
754 0 : if (!DOMSettableTokenListWrapper::instanceIsListObject(cx, obj, NULL))
755 0 : return false;
756 0 : xpc_qsDOMString arg0(cx, *vp, vp, xpc_qsDOMString::eDefaultNullBehavior, xpc_qsDOMString::eDefaultUndefinedBehavior);
757 0 : if (!arg0.IsValid())
758 0 : return JS_FALSE;
759 : nsresult rv;
760 0 : rv = DOMSettableTokenListWrapper::getListObject(obj)->SetValue(arg0);
761 0 : if (NS_FAILED(rv))
762 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "DOMSettableTokenList", "value");
763 0 : return JS_TRUE;
764 : }
765 :
766 : template<>
767 : DOMSettableTokenListWrapper::Properties DOMSettableTokenListWrapper::sProtoProperties[] = {
768 : { s_value_id, DOMSettableTokenList_GetValue, DOMSettableTokenList_SetValue }
769 : };
770 :
771 : template<>
772 1396 : size_t DOMSettableTokenListWrapper::sProtoPropertiesCount = ArrayLength(DOMSettableTokenListWrapper::sProtoProperties);
773 :
774 : template class ListBase<DOMSettableTokenListClass>;
775 :
776 : JSObject*
777 0 : DOMSettableTokenList::create(JSContext *cx, XPCWrappedNativeScope *scope, nsDOMSettableTokenList *list, nsWrapperCache *cache, bool *triedToWrap)
778 : {
779 0 : return DOMSettableTokenListWrapper::create(cx, scope, list, cache, triedToWrap);
780 : }
781 :
782 : bool
783 0 : DOMSettableTokenList::objIsWrapper(JSObject *obj)
784 : {
785 0 : return DOMSettableTokenListWrapper::objIsList(obj);
786 : }
787 :
788 : nsDOMSettableTokenList*
789 0 : DOMSettableTokenList::getNative(JSObject *obj)
790 : {
791 0 : return DOMSettableTokenListWrapper::getListObject(obj);
792 : }
793 :
794 : // FileList
795 :
796 : template<>
797 : js::Class FileListWrapper::sInterfaceClass = {
798 : "FileList",
799 : 0,
800 : JS_PropertyStub, /* addProperty */
801 : JS_PropertyStub, /* delProperty */
802 : JS_PropertyStub, /* getProperty */
803 : JS_StrictPropertyStub, /* setProperty */
804 : JS_EnumerateStub,
805 : JS_ResolveStub,
806 : JS_ConvertStub,
807 : JS_FinalizeStub,
808 : NULL, /* checkAccess */
809 : NULL, /* call */
810 : NULL, /* construct */
811 : interface_hasInstance
812 : };
813 :
814 : template<>
815 : JSObject *
816 0 : FileListWrapper::getPrototype(JSContext *cx, XPCWrappedNativeScope *scope, bool *enabled)
817 : {
818 0 : if (!scope->NewDOMBindingsEnabled()) {
819 0 : *enabled = false;
820 0 : return NULL;
821 : }
822 :
823 0 : *enabled = true;
824 0 : return getPrototype(cx, scope);
825 : }
826 :
827 : template<>
828 : bool
829 0 : FileListWrapper::getItemAt(nsDOMFileList *list, uint32_t index, nsIDOMFile * &item)
830 : {
831 0 : item = list->GetItemAt(index);
832 0 : return !!item;
833 : }
834 :
835 : static JSBool
836 0 : FileList_Item(JSContext *cx, unsigned argc, jsval *vp)
837 : {
838 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
839 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
840 0 : if (!obj)
841 0 : return JS_FALSE;
842 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
843 0 : if (!FileListWrapper::instanceIsListObject(cx, obj, callee))
844 0 : return false;
845 0 : if (argc < 1)
846 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
847 0 : jsval *argv = JS_ARGV(cx, vp);
848 : uint32_t arg0;
849 0 : if (!JS_ValueToECMAUint32(cx, argv[0], &arg0))
850 0 : return JS_FALSE;
851 : nsIDOMFile *result;
852 0 : result = FileListWrapper::getListObject(obj)->GetItemAt(arg0);
853 0 : if (!result) {
854 0 : *vp = JSVAL_NULL;
855 0 : return JS_TRUE;
856 : }
857 0 : return Wrap(cx, obj, result, vp);
858 : }
859 :
860 : template<>
861 : FileListWrapper::Properties FileListWrapper::sProtoProperties[] = {
862 : { s_length_id, length_getter, NULL }
863 : };
864 :
865 : template<>
866 1396 : size_t FileListWrapper::sProtoPropertiesCount = ArrayLength(FileListWrapper::sProtoProperties);
867 :
868 : template<>
869 : FileListWrapper::Methods FileListWrapper::sProtoMethods[] = {
870 : { s_item_id, FileList_Item, 1 }
871 : };
872 :
873 : template<>
874 1396 : size_t FileListWrapper::sProtoMethodsCount = ArrayLength(FileListWrapper::sProtoMethods);
875 :
876 : template class ListBase<FileListClass>;
877 :
878 : JSObject*
879 0 : FileList::create(JSContext *cx, XPCWrappedNativeScope *scope, nsDOMFileList *list, nsWrapperCache *cache, bool *triedToWrap)
880 : {
881 0 : return FileListWrapper::create(cx, scope, list, cache, triedToWrap);
882 : }
883 :
884 : bool
885 0 : FileList::objIsWrapper(JSObject *obj)
886 : {
887 0 : return FileListWrapper::objIsList(obj);
888 : }
889 :
890 : nsDOMFileList*
891 0 : FileList::getNative(JSObject *obj)
892 : {
893 0 : return FileListWrapper::getListObject(obj);
894 : }
895 :
896 : // HTMLOptionsCollection
897 :
898 : template<>
899 : js::Class HTMLOptionsCollectionWrapper::sInterfaceClass = {
900 : "HTMLOptionsCollection",
901 : 0,
902 : JS_PropertyStub, /* addProperty */
903 : JS_PropertyStub, /* delProperty */
904 : JS_PropertyStub, /* getProperty */
905 : JS_StrictPropertyStub, /* setProperty */
906 : JS_EnumerateStub,
907 : JS_ResolveStub,
908 : JS_ConvertStub,
909 : JS_FinalizeStub,
910 : NULL, /* checkAccess */
911 : NULL, /* call */
912 : NULL, /* construct */
913 : interface_hasInstance
914 : };
915 :
916 : template<>
917 : bool
918 0 : HTMLOptionsCollectionWrapper::getItemAt(nsHTMLOptionCollection *list, uint32_t index, nsIContent * &item)
919 : {
920 0 : item = list->GetNodeAt(index);
921 0 : return !!item;
922 : }
923 :
924 : template<>
925 : bool
926 0 : HTMLOptionsCollectionWrapper::setItemAt(JSContext *cx, nsHTMLOptionCollection *list, uint32_t index, nsIDOMHTMLOptionElement * item)
927 : {
928 0 : nsresult rv = list->SetOption(index, item);
929 0 : return NS_SUCCEEDED(rv) ? true : Throw(cx, rv);
930 : }
931 :
932 : template<>
933 : bool
934 0 : HTMLOptionsCollectionWrapper::getNamedItem(nsHTMLOptionCollection *list, const nsAString& index, nsISupportsResult &item)
935 : {
936 0 : item.mResult = list->GetNamedItem(index, &item.mCache);
937 0 : return !!item.mResult;
938 : }
939 :
940 : static JSBool
941 0 : HTMLOptionsCollection_Add(JSContext *cx, unsigned argc, jsval *vp)
942 : {
943 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
944 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
945 0 : if (!obj)
946 0 : return JS_FALSE;
947 0 : XPCCallContext ccx(JS_CALLER, cx, obj, JSVAL_TO_OBJECT(JS_CALLEE(cx, vp)));
948 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
949 0 : if (!HTMLOptionsCollectionWrapper::instanceIsListObject(cx, obj, callee))
950 0 : return false;
951 0 : if (argc < 1)
952 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
953 0 : jsval *argv = JS_ARGV(cx, vp);
954 : nsresult rv;
955 : nsIDOMHTMLOptionElement *arg0;
956 0 : xpc_qsSelfRef arg0ref;
957 0 : rv = xpc_qsUnwrapArg<nsIDOMHTMLOptionElement>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
958 0 : if (NS_FAILED(rv)) {
959 0 : xpc_qsThrowBadArgWithCcx(ccx, rv, 0);
960 0 : return JS_FALSE;
961 : }
962 0 : nsCOMPtr<nsIVariant> arg1(already_AddRefed<nsIVariant>(XPCVariant::newVariant(ccx, (1 < argc ? argv[1] : JSVAL_NULL))));
963 0 : if (!arg1) {
964 0 : xpc_qsThrowBadArgWithCcx(ccx, NS_ERROR_XPC_BAD_CONVERT_JS, 1);
965 0 : return JS_FALSE;
966 : }
967 0 : rv = HTMLOptionsCollectionWrapper::getListObject(obj)->Add(arg0, arg1);
968 0 : if (NS_FAILED(rv))
969 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "HTMLOptionsCollection", "add");
970 0 : *vp = JSVAL_VOID;
971 0 : return JS_TRUE;
972 : }
973 :
974 : static JSBool
975 0 : HTMLOptionsCollection_Item(JSContext *cx, unsigned argc, jsval *vp)
976 : {
977 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
978 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
979 0 : if (!obj)
980 0 : return JS_FALSE;
981 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
982 0 : if (!HTMLOptionsCollectionWrapper::instanceIsListObject(cx, obj, callee))
983 0 : return false;
984 0 : if (argc < 1)
985 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
986 0 : jsval *argv = JS_ARGV(cx, vp);
987 : uint32_t arg0;
988 0 : if (!JS_ValueToECMAUint32(cx, argv[0], &arg0))
989 0 : return JS_FALSE;
990 : nsresult rv;
991 0 : nsCOMPtr<nsIDOMNode> result;
992 0 : rv = HTMLOptionsCollectionWrapper::getListObject(obj)->Item(arg0, getter_AddRefs(result));
993 0 : if (NS_FAILED(rv))
994 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "HTMLOptionsCollection", "item");
995 0 : if (!result) {
996 0 : *vp = JSVAL_NULL;
997 0 : return JS_TRUE;
998 : }
999 0 : return Wrap(cx, obj, result, vp);
1000 : }
1001 :
1002 : static JSBool
1003 0 : HTMLOptionsCollection_SetLength(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp)
1004 : {
1005 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1006 0 : if (!HTMLOptionsCollectionWrapper::instanceIsListObject(cx, obj, NULL))
1007 0 : return false;
1008 : uint32_t arg0;
1009 0 : if (!JS_ValueToECMAUint32(cx, *vp, &arg0))
1010 0 : return JS_FALSE;
1011 : nsresult rv;
1012 0 : rv = HTMLOptionsCollectionWrapper::getListObject(obj)->SetLength(arg0);
1013 0 : if (NS_FAILED(rv))
1014 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "HTMLOptionsCollection", "length");
1015 0 : return JS_TRUE;
1016 : }
1017 :
1018 : static JSBool
1019 0 : HTMLOptionsCollection_NamedItem(JSContext *cx, unsigned argc, jsval *vp)
1020 : {
1021 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1022 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
1023 0 : if (!obj)
1024 0 : return JS_FALSE;
1025 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
1026 0 : if (!HTMLOptionsCollectionWrapper::instanceIsListObject(cx, obj, callee))
1027 0 : return false;
1028 0 : if (argc < 1)
1029 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
1030 0 : jsval *argv = JS_ARGV(cx, vp);
1031 0 : xpc_qsDOMString arg0(cx, argv[0], &argv[0], xpc_qsDOMString::eDefaultNullBehavior, xpc_qsDOMString::eDefaultUndefinedBehavior);
1032 0 : if (!arg0.IsValid())
1033 0 : return JS_FALSE;
1034 : nsWrapperCache *cache;
1035 : nsISupports *result;
1036 0 : result = HTMLOptionsCollectionWrapper::getListObject(obj)->GetNamedItem(arg0, &cache);
1037 0 : if (!result) {
1038 0 : *vp = JSVAL_NULL;
1039 0 : return JS_TRUE;
1040 : }
1041 0 : return Wrap(cx, obj, result, cache, vp);
1042 : }
1043 :
1044 : static JSBool
1045 0 : HTMLOptionsCollection_Remove(JSContext *cx, unsigned argc, jsval *vp)
1046 : {
1047 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1048 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
1049 0 : if (!obj)
1050 0 : return JS_FALSE;
1051 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
1052 0 : if (!HTMLOptionsCollectionWrapper::instanceIsListObject(cx, obj, callee))
1053 0 : return false;
1054 0 : if (argc < 1)
1055 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
1056 0 : jsval *argv = JS_ARGV(cx, vp);
1057 : int32_t arg0;
1058 0 : if (!JS_ValueToECMAInt32(cx, argv[0], &arg0))
1059 0 : return JS_FALSE;
1060 : nsresult rv;
1061 0 : rv = HTMLOptionsCollectionWrapper::getListObject(obj)->Remove(arg0);
1062 0 : if (NS_FAILED(rv))
1063 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "HTMLOptionsCollection", "remove");
1064 0 : *vp = JSVAL_VOID;
1065 0 : return JS_TRUE;
1066 : }
1067 :
1068 : static JSBool
1069 0 : HTMLOptionsCollection_GetSelectedIndex(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
1070 : {
1071 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1072 0 : if (!HTMLOptionsCollectionWrapper::instanceIsListObject(cx, obj, NULL))
1073 0 : return false;
1074 : nsresult rv;
1075 : PRInt32 result;
1076 0 : rv = HTMLOptionsCollectionWrapper::getListObject(obj)->GetSelectedIndex(&result);
1077 0 : if (NS_FAILED(rv))
1078 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "HTMLOptionsCollection", "selectedIndex");
1079 0 : *vp = INT_TO_JSVAL(result);
1080 0 : return JS_TRUE;
1081 : }
1082 :
1083 : static JSBool
1084 0 : HTMLOptionsCollection_SetSelectedIndex(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp)
1085 : {
1086 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1087 0 : if (!HTMLOptionsCollectionWrapper::instanceIsListObject(cx, obj, NULL))
1088 0 : return false;
1089 : int32_t arg0;
1090 0 : if (!JS_ValueToECMAInt32(cx, *vp, &arg0))
1091 0 : return JS_FALSE;
1092 : nsresult rv;
1093 0 : rv = HTMLOptionsCollectionWrapper::getListObject(obj)->SetSelectedIndex(arg0);
1094 0 : if (NS_FAILED(rv))
1095 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "HTMLOptionsCollection", "selectedIndex");
1096 0 : return JS_TRUE;
1097 : }
1098 :
1099 : template<>
1100 : HTMLOptionsCollectionWrapper::Properties HTMLOptionsCollectionWrapper::sProtoProperties[] = {
1101 : { s_length_id, length_getter, HTMLOptionsCollection_SetLength },
1102 : { s_selectedIndex_id, HTMLOptionsCollection_GetSelectedIndex, HTMLOptionsCollection_SetSelectedIndex }
1103 : };
1104 :
1105 : template<>
1106 1396 : size_t HTMLOptionsCollectionWrapper::sProtoPropertiesCount = ArrayLength(HTMLOptionsCollectionWrapper::sProtoProperties);
1107 :
1108 : template<>
1109 : HTMLOptionsCollectionWrapper::Methods HTMLOptionsCollectionWrapper::sProtoMethods[] = {
1110 : { s_add_id, HTMLOptionsCollection_Add, 2 },
1111 : { s_item_id, HTMLOptionsCollection_Item, 1 },
1112 : { s_namedItem_id, HTMLOptionsCollection_NamedItem, 1 },
1113 : { s_remove_id, HTMLOptionsCollection_Remove, 1 }
1114 : };
1115 :
1116 : template<>
1117 1396 : size_t HTMLOptionsCollectionWrapper::sProtoMethodsCount = ArrayLength(HTMLOptionsCollectionWrapper::sProtoMethods);
1118 :
1119 : template class ListBase<HTMLOptionsCollectionClass>;
1120 :
1121 : JSObject*
1122 0 : HTMLOptionsCollection::create(JSContext *cx, XPCWrappedNativeScope *scope, nsHTMLOptionCollection *list, nsWrapperCache *cache, bool *triedToWrap)
1123 : {
1124 0 : return HTMLOptionsCollectionWrapper::create(cx, scope, list, cache, triedToWrap);
1125 : }
1126 :
1127 : bool
1128 0 : HTMLOptionsCollection::objIsWrapper(JSObject *obj)
1129 : {
1130 0 : return HTMLOptionsCollectionWrapper::objIsList(obj);
1131 : }
1132 :
1133 : nsHTMLOptionCollection*
1134 0 : HTMLOptionsCollection::getNative(JSObject *obj)
1135 : {
1136 0 : return HTMLOptionsCollectionWrapper::getListObject(obj);
1137 : }
1138 :
1139 : // NodeList
1140 :
1141 : template<>
1142 : js::Class NodeListWrapper::sInterfaceClass = {
1143 : "NodeList",
1144 : 0,
1145 : JS_PropertyStub, /* addProperty */
1146 : JS_PropertyStub, /* delProperty */
1147 : JS_PropertyStub, /* getProperty */
1148 : JS_StrictPropertyStub, /* setProperty */
1149 : JS_EnumerateStub,
1150 : JS_ResolveStub,
1151 : JS_ConvertStub,
1152 : JS_FinalizeStub,
1153 : NULL, /* checkAccess */
1154 : NULL, /* call */
1155 : NULL, /* construct */
1156 : interface_hasInstance
1157 : };
1158 :
1159 : template<>
1160 : bool
1161 793 : NodeListWrapper::getItemAt(nsINodeList *list, uint32_t index, nsIContent * &item)
1162 : {
1163 793 : item = list->GetNodeAt(index);
1164 793 : return !!item;
1165 : }
1166 :
1167 : static JSBool
1168 3593 : NodeList_Item(JSContext *cx, unsigned argc, jsval *vp)
1169 : {
1170 3593 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1171 3593 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
1172 3593 : if (!obj)
1173 0 : return JS_FALSE;
1174 3593 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
1175 3593 : if (!NodeListWrapper::instanceIsListObject(cx, obj, callee))
1176 0 : return false;
1177 3593 : if (argc < 1)
1178 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
1179 3593 : jsval *argv = JS_ARGV(cx, vp);
1180 : uint32_t arg0;
1181 3593 : if (!JS_ValueToECMAUint32(cx, argv[0], &arg0))
1182 0 : return JS_FALSE;
1183 : nsIContent *result;
1184 3593 : result = NodeListWrapper::getListObject(obj)->GetNodeAt(arg0);
1185 3593 : if (!result) {
1186 0 : *vp = JSVAL_NULL;
1187 0 : return JS_TRUE;
1188 : }
1189 3593 : return Wrap(cx, obj, result, vp);
1190 : }
1191 :
1192 : template<>
1193 : NodeListWrapper::Properties NodeListWrapper::sProtoProperties[] = {
1194 : { s_length_id, length_getter, NULL }
1195 : };
1196 :
1197 : template<>
1198 1396 : size_t NodeListWrapper::sProtoPropertiesCount = ArrayLength(NodeListWrapper::sProtoProperties);
1199 :
1200 : template<>
1201 : NodeListWrapper::Methods NodeListWrapper::sProtoMethods[] = {
1202 : { s_item_id, NodeList_Item, 1 }
1203 : };
1204 :
1205 : template<>
1206 1396 : size_t NodeListWrapper::sProtoMethodsCount = ArrayLength(NodeListWrapper::sProtoMethods);
1207 :
1208 : template class ListBase<NodeListClass>;
1209 :
1210 : JSObject*
1211 1637 : NodeList::create(JSContext *cx, XPCWrappedNativeScope *scope, nsINodeList *list, nsWrapperCache *cache, bool *triedToWrap)
1212 : {
1213 1637 : return NodeListWrapper::create(cx, scope, list, cache, triedToWrap);
1214 : }
1215 :
1216 : bool
1217 0 : NodeList::objIsWrapper(JSObject *obj)
1218 : {
1219 0 : return NodeListWrapper::objIsList(obj);
1220 : }
1221 :
1222 : nsINodeList*
1223 0 : NodeList::getNative(JSObject *obj)
1224 : {
1225 0 : return NodeListWrapper::getListObject(obj);
1226 : }
1227 :
1228 : // PaintRequestList
1229 :
1230 : template<>
1231 : js::Class PaintRequestListWrapper::sInterfaceClass = {
1232 : "PaintRequestList",
1233 : 0,
1234 : JS_PropertyStub, /* addProperty */
1235 : JS_PropertyStub, /* delProperty */
1236 : JS_PropertyStub, /* getProperty */
1237 : JS_StrictPropertyStub, /* setProperty */
1238 : JS_EnumerateStub,
1239 : JS_ResolveStub,
1240 : JS_ConvertStub,
1241 : JS_FinalizeStub,
1242 : NULL, /* checkAccess */
1243 : NULL, /* call */
1244 : NULL, /* construct */
1245 : interface_hasInstance
1246 : };
1247 :
1248 : template<>
1249 : JSObject *
1250 0 : PaintRequestListWrapper::getPrototype(JSContext *cx, XPCWrappedNativeScope *scope, bool *enabled)
1251 : {
1252 0 : if (!scope->NewDOMBindingsEnabled()) {
1253 0 : *enabled = false;
1254 0 : return NULL;
1255 : }
1256 :
1257 0 : *enabled = true;
1258 0 : return getPrototype(cx, scope);
1259 : }
1260 :
1261 : template<>
1262 : bool
1263 0 : PaintRequestListWrapper::getItemAt(nsPaintRequestList *list, uint32_t index, nsIDOMPaintRequest * &item)
1264 : {
1265 0 : item = list->GetItemAt(index);
1266 0 : return !!item;
1267 : }
1268 :
1269 : static JSBool
1270 0 : PaintRequestList_Item(JSContext *cx, unsigned argc, jsval *vp)
1271 : {
1272 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1273 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
1274 0 : if (!obj)
1275 0 : return JS_FALSE;
1276 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
1277 0 : if (!PaintRequestListWrapper::instanceIsListObject(cx, obj, callee))
1278 0 : return false;
1279 0 : if (argc < 1)
1280 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
1281 0 : jsval *argv = JS_ARGV(cx, vp);
1282 : uint32_t arg0;
1283 0 : if (!JS_ValueToECMAUint32(cx, argv[0], &arg0))
1284 0 : return JS_FALSE;
1285 : nsIDOMPaintRequest *result;
1286 0 : result = PaintRequestListWrapper::getListObject(obj)->GetItemAt(arg0);
1287 0 : if (!result) {
1288 0 : *vp = JSVAL_NULL;
1289 0 : return JS_TRUE;
1290 : }
1291 0 : return Wrap(cx, obj, result, vp);
1292 : }
1293 :
1294 : template<>
1295 : PaintRequestListWrapper::Properties PaintRequestListWrapper::sProtoProperties[] = {
1296 : { s_length_id, length_getter, NULL }
1297 : };
1298 :
1299 : template<>
1300 1396 : size_t PaintRequestListWrapper::sProtoPropertiesCount = ArrayLength(PaintRequestListWrapper::sProtoProperties);
1301 :
1302 : template<>
1303 : PaintRequestListWrapper::Methods PaintRequestListWrapper::sProtoMethods[] = {
1304 : { s_item_id, PaintRequestList_Item, 1 }
1305 : };
1306 :
1307 : template<>
1308 1396 : size_t PaintRequestListWrapper::sProtoMethodsCount = ArrayLength(PaintRequestListWrapper::sProtoMethods);
1309 :
1310 : template class ListBase<PaintRequestListClass>;
1311 :
1312 : JSObject*
1313 0 : PaintRequestList::create(JSContext *cx, XPCWrappedNativeScope *scope, nsPaintRequestList *list, nsWrapperCache *cache, bool *triedToWrap)
1314 : {
1315 0 : return PaintRequestListWrapper::create(cx, scope, list, cache, triedToWrap);
1316 : }
1317 :
1318 : bool
1319 0 : PaintRequestList::objIsWrapper(JSObject *obj)
1320 : {
1321 0 : return PaintRequestListWrapper::objIsList(obj);
1322 : }
1323 :
1324 : nsPaintRequestList*
1325 0 : PaintRequestList::getNative(JSObject *obj)
1326 : {
1327 0 : return PaintRequestListWrapper::getListObject(obj);
1328 : }
1329 :
1330 : // SVGLengthList
1331 :
1332 : template<>
1333 : js::Class SVGLengthListWrapper::sInterfaceClass = {
1334 : "SVGLengthList",
1335 : 0,
1336 : JS_PropertyStub, /* addProperty */
1337 : JS_PropertyStub, /* delProperty */
1338 : JS_PropertyStub, /* getProperty */
1339 : JS_StrictPropertyStub, /* setProperty */
1340 : JS_EnumerateStub,
1341 : JS_ResolveStub,
1342 : JS_ConvertStub,
1343 : JS_FinalizeStub,
1344 : NULL, /* checkAccess */
1345 : NULL, /* call */
1346 : NULL, /* construct */
1347 : interface_hasInstance
1348 : };
1349 :
1350 : template<>
1351 : JSObject *
1352 0 : SVGLengthListWrapper::getPrototype(JSContext *cx, XPCWrappedNativeScope *scope, bool *enabled)
1353 : {
1354 0 : if (!scope->NewDOMBindingsEnabled()) {
1355 0 : *enabled = false;
1356 0 : return NULL;
1357 : }
1358 :
1359 0 : *enabled = true;
1360 0 : return getPrototype(cx, scope);
1361 : }
1362 :
1363 : template<>
1364 : bool
1365 0 : SVGLengthListWrapper::getItemAt(mozilla::DOMSVGLengthList *list, uint32_t index, nsIDOMSVGLength * &item)
1366 : {
1367 0 : item = list->GetItemAt(index);
1368 0 : return !!item;
1369 : }
1370 :
1371 : static JSBool
1372 0 : SVGLengthList_AppendItem(JSContext *cx, unsigned argc, jsval *vp)
1373 : {
1374 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1375 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
1376 0 : if (!obj)
1377 0 : return JS_FALSE;
1378 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
1379 0 : if (!SVGLengthListWrapper::instanceIsListObject(cx, obj, callee))
1380 0 : return false;
1381 0 : if (argc < 1)
1382 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
1383 0 : jsval *argv = JS_ARGV(cx, vp);
1384 : nsresult rv;
1385 : nsIDOMSVGLength *arg0;
1386 0 : xpc_qsSelfRef arg0ref;
1387 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGLength>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
1388 0 : if (NS_FAILED(rv)) {
1389 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
1390 0 : return JS_FALSE;
1391 : }
1392 0 : nsCOMPtr<nsIDOMSVGLength> result;
1393 0 : rv = SVGLengthListWrapper::getListObject(obj)->AppendItem(arg0, getter_AddRefs(result));
1394 0 : if (NS_FAILED(rv))
1395 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGLengthList", "appendItem");
1396 0 : if (!result) {
1397 0 : *vp = JSVAL_NULL;
1398 0 : return JS_TRUE;
1399 : }
1400 0 : return Wrap(cx, obj, result, vp);
1401 : }
1402 :
1403 : static JSBool
1404 0 : SVGLengthList_Clear(JSContext *cx, unsigned argc, jsval *vp)
1405 : {
1406 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1407 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
1408 0 : if (!obj)
1409 0 : return JS_FALSE;
1410 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
1411 0 : if (!SVGLengthListWrapper::instanceIsListObject(cx, obj, callee))
1412 0 : return false;
1413 : nsresult rv;
1414 0 : rv = SVGLengthListWrapper::getListObject(obj)->Clear();
1415 0 : if (NS_FAILED(rv))
1416 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGLengthList", "clear");
1417 0 : *vp = JSVAL_VOID;
1418 0 : return JS_TRUE;
1419 : }
1420 :
1421 : static JSBool
1422 0 : SVGLengthList_GetItem(JSContext *cx, unsigned argc, jsval *vp)
1423 : {
1424 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1425 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
1426 0 : if (!obj)
1427 0 : return JS_FALSE;
1428 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
1429 0 : if (!SVGLengthListWrapper::instanceIsListObject(cx, obj, callee))
1430 0 : return false;
1431 0 : if (argc < 1)
1432 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
1433 0 : jsval *argv = JS_ARGV(cx, vp);
1434 : uint32_t arg0;
1435 0 : if (!JS_ValueToECMAUint32(cx, argv[0], &arg0))
1436 0 : return JS_FALSE;
1437 : nsresult rv;
1438 0 : nsCOMPtr<nsIDOMSVGLength> result;
1439 0 : rv = SVGLengthListWrapper::getListObject(obj)->GetItem(arg0, getter_AddRefs(result));
1440 0 : if (NS_FAILED(rv))
1441 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGLengthList", "getItem");
1442 0 : if (!result) {
1443 0 : *vp = JSVAL_NULL;
1444 0 : return JS_TRUE;
1445 : }
1446 0 : return Wrap(cx, obj, result, vp);
1447 : }
1448 :
1449 : static JSBool
1450 0 : SVGLengthList_Initialize(JSContext *cx, unsigned argc, jsval *vp)
1451 : {
1452 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1453 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
1454 0 : if (!obj)
1455 0 : return JS_FALSE;
1456 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
1457 0 : if (!SVGLengthListWrapper::instanceIsListObject(cx, obj, callee))
1458 0 : return false;
1459 0 : if (argc < 1)
1460 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
1461 0 : jsval *argv = JS_ARGV(cx, vp);
1462 : nsresult rv;
1463 : nsIDOMSVGLength *arg0;
1464 0 : xpc_qsSelfRef arg0ref;
1465 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGLength>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
1466 0 : if (NS_FAILED(rv)) {
1467 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
1468 0 : return JS_FALSE;
1469 : }
1470 0 : nsCOMPtr<nsIDOMSVGLength> result;
1471 0 : rv = SVGLengthListWrapper::getListObject(obj)->Initialize(arg0, getter_AddRefs(result));
1472 0 : if (NS_FAILED(rv))
1473 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGLengthList", "initialize");
1474 0 : if (!result) {
1475 0 : *vp = JSVAL_NULL;
1476 0 : return JS_TRUE;
1477 : }
1478 0 : return Wrap(cx, obj, result, vp);
1479 : }
1480 :
1481 : static JSBool
1482 0 : SVGLengthList_InsertItemBefore(JSContext *cx, unsigned argc, jsval *vp)
1483 : {
1484 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1485 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
1486 0 : if (!obj)
1487 0 : return JS_FALSE;
1488 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
1489 0 : if (!SVGLengthListWrapper::instanceIsListObject(cx, obj, callee))
1490 0 : return false;
1491 0 : if (argc < 2)
1492 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
1493 0 : jsval *argv = JS_ARGV(cx, vp);
1494 : nsresult rv;
1495 : nsIDOMSVGLength *arg0;
1496 0 : xpc_qsSelfRef arg0ref;
1497 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGLength>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
1498 0 : if (NS_FAILED(rv)) {
1499 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
1500 0 : return JS_FALSE;
1501 : }
1502 : uint32_t arg1;
1503 0 : if (!JS_ValueToECMAUint32(cx, argv[1], &arg1))
1504 0 : return JS_FALSE;
1505 0 : nsCOMPtr<nsIDOMSVGLength> result;
1506 0 : rv = SVGLengthListWrapper::getListObject(obj)->InsertItemBefore(arg0, arg1, getter_AddRefs(result));
1507 0 : if (NS_FAILED(rv))
1508 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGLengthList", "insertItemBefore");
1509 0 : if (!result) {
1510 0 : *vp = JSVAL_NULL;
1511 0 : return JS_TRUE;
1512 : }
1513 0 : return Wrap(cx, obj, result, vp);
1514 : }
1515 :
1516 : static JSBool
1517 0 : SVGLengthList_GetNumberOfItems(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
1518 : {
1519 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1520 0 : if (!SVGLengthListWrapper::instanceIsListObject(cx, obj, NULL))
1521 0 : return false;
1522 : nsresult rv;
1523 : PRUint32 result;
1524 0 : rv = SVGLengthListWrapper::getListObject(obj)->GetNumberOfItems(&result);
1525 0 : if (NS_FAILED(rv))
1526 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGLengthList", "numberOfItems");
1527 0 : *vp = UINT_TO_JSVAL(result);
1528 0 : return JS_TRUE;
1529 : }
1530 :
1531 : static JSBool
1532 0 : SVGLengthList_RemoveItem(JSContext *cx, unsigned argc, jsval *vp)
1533 : {
1534 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1535 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
1536 0 : if (!obj)
1537 0 : return JS_FALSE;
1538 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
1539 0 : if (!SVGLengthListWrapper::instanceIsListObject(cx, obj, callee))
1540 0 : return false;
1541 0 : if (argc < 1)
1542 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
1543 0 : jsval *argv = JS_ARGV(cx, vp);
1544 : uint32_t arg0;
1545 0 : if (!JS_ValueToECMAUint32(cx, argv[0], &arg0))
1546 0 : return JS_FALSE;
1547 : nsresult rv;
1548 0 : nsCOMPtr<nsIDOMSVGLength> result;
1549 0 : rv = SVGLengthListWrapper::getListObject(obj)->RemoveItem(arg0, getter_AddRefs(result));
1550 0 : if (NS_FAILED(rv))
1551 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGLengthList", "removeItem");
1552 0 : if (!result) {
1553 0 : *vp = JSVAL_NULL;
1554 0 : return JS_TRUE;
1555 : }
1556 0 : return Wrap(cx, obj, result, vp);
1557 : }
1558 :
1559 : static JSBool
1560 0 : SVGLengthList_ReplaceItem(JSContext *cx, unsigned argc, jsval *vp)
1561 : {
1562 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1563 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
1564 0 : if (!obj)
1565 0 : return JS_FALSE;
1566 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
1567 0 : if (!SVGLengthListWrapper::instanceIsListObject(cx, obj, callee))
1568 0 : return false;
1569 0 : if (argc < 2)
1570 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
1571 0 : jsval *argv = JS_ARGV(cx, vp);
1572 : nsresult rv;
1573 : nsIDOMSVGLength *arg0;
1574 0 : xpc_qsSelfRef arg0ref;
1575 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGLength>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
1576 0 : if (NS_FAILED(rv)) {
1577 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
1578 0 : return JS_FALSE;
1579 : }
1580 : uint32_t arg1;
1581 0 : if (!JS_ValueToECMAUint32(cx, argv[1], &arg1))
1582 0 : return JS_FALSE;
1583 0 : nsCOMPtr<nsIDOMSVGLength> result;
1584 0 : rv = SVGLengthListWrapper::getListObject(obj)->ReplaceItem(arg0, arg1, getter_AddRefs(result));
1585 0 : if (NS_FAILED(rv))
1586 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGLengthList", "replaceItem");
1587 0 : if (!result) {
1588 0 : *vp = JSVAL_NULL;
1589 0 : return JS_TRUE;
1590 : }
1591 0 : return Wrap(cx, obj, result, vp);
1592 : }
1593 :
1594 : template<>
1595 : SVGLengthListWrapper::Properties SVGLengthListWrapper::sProtoProperties[] = {
1596 : { s_length_id, length_getter, NULL },
1597 : { s_numberOfItems_id, SVGLengthList_GetNumberOfItems, xpc_qsGetterOnlyPropertyStub }
1598 : };
1599 :
1600 : template<>
1601 1396 : size_t SVGLengthListWrapper::sProtoPropertiesCount = ArrayLength(SVGLengthListWrapper::sProtoProperties);
1602 :
1603 : template<>
1604 : SVGLengthListWrapper::Methods SVGLengthListWrapper::sProtoMethods[] = {
1605 : { s_appendItem_id, SVGLengthList_AppendItem, 1 },
1606 : { s_clear_id, SVGLengthList_Clear, 0 },
1607 : { s_getItem_id, SVGLengthList_GetItem, 1 },
1608 : { s_initialize_id, SVGLengthList_Initialize, 1 },
1609 : { s_insertItemBefore_id, SVGLengthList_InsertItemBefore, 2 },
1610 : { s_removeItem_id, SVGLengthList_RemoveItem, 1 },
1611 : { s_replaceItem_id, SVGLengthList_ReplaceItem, 2 }
1612 : };
1613 :
1614 : template<>
1615 1396 : size_t SVGLengthListWrapper::sProtoMethodsCount = ArrayLength(SVGLengthListWrapper::sProtoMethods);
1616 :
1617 : template class ListBase<SVGLengthListClass>;
1618 :
1619 : JSObject*
1620 0 : SVGLengthList::create(JSContext *cx, XPCWrappedNativeScope *scope, mozilla::DOMSVGLengthList *list, nsWrapperCache *cache, bool *triedToWrap)
1621 : {
1622 0 : return SVGLengthListWrapper::create(cx, scope, list, cache, triedToWrap);
1623 : }
1624 :
1625 : bool
1626 0 : SVGLengthList::objIsWrapper(JSObject *obj)
1627 : {
1628 0 : return SVGLengthListWrapper::objIsList(obj);
1629 : }
1630 :
1631 : mozilla::DOMSVGLengthList*
1632 0 : SVGLengthList::getNative(JSObject *obj)
1633 : {
1634 0 : return SVGLengthListWrapper::getListObject(obj);
1635 : }
1636 :
1637 : // SVGNumberList
1638 :
1639 : template<>
1640 : js::Class SVGNumberListWrapper::sInterfaceClass = {
1641 : "SVGNumberList",
1642 : 0,
1643 : JS_PropertyStub, /* addProperty */
1644 : JS_PropertyStub, /* delProperty */
1645 : JS_PropertyStub, /* getProperty */
1646 : JS_StrictPropertyStub, /* setProperty */
1647 : JS_EnumerateStub,
1648 : JS_ResolveStub,
1649 : JS_ConvertStub,
1650 : JS_FinalizeStub,
1651 : NULL, /* checkAccess */
1652 : NULL, /* call */
1653 : NULL, /* construct */
1654 : interface_hasInstance
1655 : };
1656 :
1657 : template<>
1658 : JSObject *
1659 0 : SVGNumberListWrapper::getPrototype(JSContext *cx, XPCWrappedNativeScope *scope, bool *enabled)
1660 : {
1661 0 : if (!scope->NewDOMBindingsEnabled()) {
1662 0 : *enabled = false;
1663 0 : return NULL;
1664 : }
1665 :
1666 0 : *enabled = true;
1667 0 : return getPrototype(cx, scope);
1668 : }
1669 :
1670 : template<>
1671 : bool
1672 0 : SVGNumberListWrapper::getItemAt(mozilla::DOMSVGNumberList *list, uint32_t index, nsIDOMSVGNumber * &item)
1673 : {
1674 0 : item = list->GetItemAt(index);
1675 0 : return !!item;
1676 : }
1677 :
1678 : static JSBool
1679 0 : SVGNumberList_AppendItem(JSContext *cx, unsigned argc, jsval *vp)
1680 : {
1681 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1682 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
1683 0 : if (!obj)
1684 0 : return JS_FALSE;
1685 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
1686 0 : if (!SVGNumberListWrapper::instanceIsListObject(cx, obj, callee))
1687 0 : return false;
1688 0 : if (argc < 1)
1689 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
1690 0 : jsval *argv = JS_ARGV(cx, vp);
1691 : nsresult rv;
1692 : nsIDOMSVGNumber *arg0;
1693 0 : xpc_qsSelfRef arg0ref;
1694 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGNumber>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
1695 0 : if (NS_FAILED(rv)) {
1696 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
1697 0 : return JS_FALSE;
1698 : }
1699 0 : nsCOMPtr<nsIDOMSVGNumber> result;
1700 0 : rv = SVGNumberListWrapper::getListObject(obj)->AppendItem(arg0, getter_AddRefs(result));
1701 0 : if (NS_FAILED(rv))
1702 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGNumberList", "appendItem");
1703 0 : if (!result) {
1704 0 : *vp = JSVAL_NULL;
1705 0 : return JS_TRUE;
1706 : }
1707 0 : return Wrap(cx, obj, result, vp);
1708 : }
1709 :
1710 : static JSBool
1711 0 : SVGNumberList_Clear(JSContext *cx, unsigned argc, jsval *vp)
1712 : {
1713 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1714 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
1715 0 : if (!obj)
1716 0 : return JS_FALSE;
1717 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
1718 0 : if (!SVGNumberListWrapper::instanceIsListObject(cx, obj, callee))
1719 0 : return false;
1720 : nsresult rv;
1721 0 : rv = SVGNumberListWrapper::getListObject(obj)->Clear();
1722 0 : if (NS_FAILED(rv))
1723 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGNumberList", "clear");
1724 0 : *vp = JSVAL_VOID;
1725 0 : return JS_TRUE;
1726 : }
1727 :
1728 : static JSBool
1729 0 : SVGNumberList_GetItem(JSContext *cx, unsigned argc, jsval *vp)
1730 : {
1731 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1732 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
1733 0 : if (!obj)
1734 0 : return JS_FALSE;
1735 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
1736 0 : if (!SVGNumberListWrapper::instanceIsListObject(cx, obj, callee))
1737 0 : return false;
1738 0 : if (argc < 1)
1739 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
1740 0 : jsval *argv = JS_ARGV(cx, vp);
1741 : uint32_t arg0;
1742 0 : if (!JS_ValueToECMAUint32(cx, argv[0], &arg0))
1743 0 : return JS_FALSE;
1744 : nsresult rv;
1745 0 : nsCOMPtr<nsIDOMSVGNumber> result;
1746 0 : rv = SVGNumberListWrapper::getListObject(obj)->GetItem(arg0, getter_AddRefs(result));
1747 0 : if (NS_FAILED(rv))
1748 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGNumberList", "getItem");
1749 0 : if (!result) {
1750 0 : *vp = JSVAL_NULL;
1751 0 : return JS_TRUE;
1752 : }
1753 0 : return Wrap(cx, obj, result, vp);
1754 : }
1755 :
1756 : static JSBool
1757 0 : SVGNumberList_Initialize(JSContext *cx, unsigned argc, jsval *vp)
1758 : {
1759 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1760 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
1761 0 : if (!obj)
1762 0 : return JS_FALSE;
1763 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
1764 0 : if (!SVGNumberListWrapper::instanceIsListObject(cx, obj, callee))
1765 0 : return false;
1766 0 : if (argc < 1)
1767 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
1768 0 : jsval *argv = JS_ARGV(cx, vp);
1769 : nsresult rv;
1770 : nsIDOMSVGNumber *arg0;
1771 0 : xpc_qsSelfRef arg0ref;
1772 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGNumber>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
1773 0 : if (NS_FAILED(rv)) {
1774 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
1775 0 : return JS_FALSE;
1776 : }
1777 0 : nsCOMPtr<nsIDOMSVGNumber> result;
1778 0 : rv = SVGNumberListWrapper::getListObject(obj)->Initialize(arg0, getter_AddRefs(result));
1779 0 : if (NS_FAILED(rv))
1780 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGNumberList", "initialize");
1781 0 : if (!result) {
1782 0 : *vp = JSVAL_NULL;
1783 0 : return JS_TRUE;
1784 : }
1785 0 : return Wrap(cx, obj, result, vp);
1786 : }
1787 :
1788 : static JSBool
1789 0 : SVGNumberList_InsertItemBefore(JSContext *cx, unsigned argc, jsval *vp)
1790 : {
1791 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1792 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
1793 0 : if (!obj)
1794 0 : return JS_FALSE;
1795 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
1796 0 : if (!SVGNumberListWrapper::instanceIsListObject(cx, obj, callee))
1797 0 : return false;
1798 0 : if (argc < 2)
1799 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
1800 0 : jsval *argv = JS_ARGV(cx, vp);
1801 : nsresult rv;
1802 : nsIDOMSVGNumber *arg0;
1803 0 : xpc_qsSelfRef arg0ref;
1804 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGNumber>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
1805 0 : if (NS_FAILED(rv)) {
1806 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
1807 0 : return JS_FALSE;
1808 : }
1809 : uint32_t arg1;
1810 0 : if (!JS_ValueToECMAUint32(cx, argv[1], &arg1))
1811 0 : return JS_FALSE;
1812 0 : nsCOMPtr<nsIDOMSVGNumber> result;
1813 0 : rv = SVGNumberListWrapper::getListObject(obj)->InsertItemBefore(arg0, arg1, getter_AddRefs(result));
1814 0 : if (NS_FAILED(rv))
1815 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGNumberList", "insertItemBefore");
1816 0 : if (!result) {
1817 0 : *vp = JSVAL_NULL;
1818 0 : return JS_TRUE;
1819 : }
1820 0 : return Wrap(cx, obj, result, vp);
1821 : }
1822 :
1823 : static JSBool
1824 0 : SVGNumberList_GetNumberOfItems(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
1825 : {
1826 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1827 0 : if (!SVGNumberListWrapper::instanceIsListObject(cx, obj, NULL))
1828 0 : return false;
1829 : nsresult rv;
1830 : PRUint32 result;
1831 0 : rv = SVGNumberListWrapper::getListObject(obj)->GetNumberOfItems(&result);
1832 0 : if (NS_FAILED(rv))
1833 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGNumberList", "numberOfItems");
1834 0 : *vp = UINT_TO_JSVAL(result);
1835 0 : return JS_TRUE;
1836 : }
1837 :
1838 : static JSBool
1839 0 : SVGNumberList_RemoveItem(JSContext *cx, unsigned argc, jsval *vp)
1840 : {
1841 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1842 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
1843 0 : if (!obj)
1844 0 : return JS_FALSE;
1845 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
1846 0 : if (!SVGNumberListWrapper::instanceIsListObject(cx, obj, callee))
1847 0 : return false;
1848 0 : if (argc < 1)
1849 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
1850 0 : jsval *argv = JS_ARGV(cx, vp);
1851 : uint32_t arg0;
1852 0 : if (!JS_ValueToECMAUint32(cx, argv[0], &arg0))
1853 0 : return JS_FALSE;
1854 : nsresult rv;
1855 0 : nsCOMPtr<nsIDOMSVGNumber> result;
1856 0 : rv = SVGNumberListWrapper::getListObject(obj)->RemoveItem(arg0, getter_AddRefs(result));
1857 0 : if (NS_FAILED(rv))
1858 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGNumberList", "removeItem");
1859 0 : if (!result) {
1860 0 : *vp = JSVAL_NULL;
1861 0 : return JS_TRUE;
1862 : }
1863 0 : return Wrap(cx, obj, result, vp);
1864 : }
1865 :
1866 : static JSBool
1867 0 : SVGNumberList_ReplaceItem(JSContext *cx, unsigned argc, jsval *vp)
1868 : {
1869 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1870 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
1871 0 : if (!obj)
1872 0 : return JS_FALSE;
1873 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
1874 0 : if (!SVGNumberListWrapper::instanceIsListObject(cx, obj, callee))
1875 0 : return false;
1876 0 : if (argc < 2)
1877 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
1878 0 : jsval *argv = JS_ARGV(cx, vp);
1879 : nsresult rv;
1880 : nsIDOMSVGNumber *arg0;
1881 0 : xpc_qsSelfRef arg0ref;
1882 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGNumber>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
1883 0 : if (NS_FAILED(rv)) {
1884 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
1885 0 : return JS_FALSE;
1886 : }
1887 : uint32_t arg1;
1888 0 : if (!JS_ValueToECMAUint32(cx, argv[1], &arg1))
1889 0 : return JS_FALSE;
1890 0 : nsCOMPtr<nsIDOMSVGNumber> result;
1891 0 : rv = SVGNumberListWrapper::getListObject(obj)->ReplaceItem(arg0, arg1, getter_AddRefs(result));
1892 0 : if (NS_FAILED(rv))
1893 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGNumberList", "replaceItem");
1894 0 : if (!result) {
1895 0 : *vp = JSVAL_NULL;
1896 0 : return JS_TRUE;
1897 : }
1898 0 : return Wrap(cx, obj, result, vp);
1899 : }
1900 :
1901 : template<>
1902 : SVGNumberListWrapper::Properties SVGNumberListWrapper::sProtoProperties[] = {
1903 : { s_length_id, length_getter, NULL },
1904 : { s_numberOfItems_id, SVGNumberList_GetNumberOfItems, xpc_qsGetterOnlyPropertyStub }
1905 : };
1906 :
1907 : template<>
1908 1396 : size_t SVGNumberListWrapper::sProtoPropertiesCount = ArrayLength(SVGNumberListWrapper::sProtoProperties);
1909 :
1910 : template<>
1911 : SVGNumberListWrapper::Methods SVGNumberListWrapper::sProtoMethods[] = {
1912 : { s_appendItem_id, SVGNumberList_AppendItem, 1 },
1913 : { s_clear_id, SVGNumberList_Clear, 0 },
1914 : { s_getItem_id, SVGNumberList_GetItem, 1 },
1915 : { s_initialize_id, SVGNumberList_Initialize, 1 },
1916 : { s_insertItemBefore_id, SVGNumberList_InsertItemBefore, 2 },
1917 : { s_removeItem_id, SVGNumberList_RemoveItem, 1 },
1918 : { s_replaceItem_id, SVGNumberList_ReplaceItem, 2 }
1919 : };
1920 :
1921 : template<>
1922 1396 : size_t SVGNumberListWrapper::sProtoMethodsCount = ArrayLength(SVGNumberListWrapper::sProtoMethods);
1923 :
1924 : template class ListBase<SVGNumberListClass>;
1925 :
1926 : JSObject*
1927 0 : SVGNumberList::create(JSContext *cx, XPCWrappedNativeScope *scope, mozilla::DOMSVGNumberList *list, nsWrapperCache *cache, bool *triedToWrap)
1928 : {
1929 0 : return SVGNumberListWrapper::create(cx, scope, list, cache, triedToWrap);
1930 : }
1931 :
1932 : bool
1933 0 : SVGNumberList::objIsWrapper(JSObject *obj)
1934 : {
1935 0 : return SVGNumberListWrapper::objIsList(obj);
1936 : }
1937 :
1938 : mozilla::DOMSVGNumberList*
1939 0 : SVGNumberList::getNative(JSObject *obj)
1940 : {
1941 0 : return SVGNumberListWrapper::getListObject(obj);
1942 : }
1943 :
1944 : // SVGPathSegList
1945 :
1946 : template<>
1947 : js::Class SVGPathSegListWrapper::sInterfaceClass = {
1948 : "SVGPathSegList",
1949 : 0,
1950 : JS_PropertyStub, /* addProperty */
1951 : JS_PropertyStub, /* delProperty */
1952 : JS_PropertyStub, /* getProperty */
1953 : JS_StrictPropertyStub, /* setProperty */
1954 : JS_EnumerateStub,
1955 : JS_ResolveStub,
1956 : JS_ConvertStub,
1957 : JS_FinalizeStub,
1958 : NULL, /* checkAccess */
1959 : NULL, /* call */
1960 : NULL, /* construct */
1961 : interface_hasInstance
1962 : };
1963 :
1964 : template<>
1965 : JSObject *
1966 0 : SVGPathSegListWrapper::getPrototype(JSContext *cx, XPCWrappedNativeScope *scope, bool *enabled)
1967 : {
1968 0 : if (!scope->NewDOMBindingsEnabled()) {
1969 0 : *enabled = false;
1970 0 : return NULL;
1971 : }
1972 :
1973 0 : *enabled = true;
1974 0 : return getPrototype(cx, scope);
1975 : }
1976 :
1977 : template<>
1978 : bool
1979 0 : SVGPathSegListWrapper::getItemAt(mozilla::DOMSVGPathSegList *list, uint32_t index, nsIDOMSVGPathSeg * &item)
1980 : {
1981 0 : item = list->GetItemAt(index);
1982 0 : return !!item;
1983 : }
1984 :
1985 : static JSBool
1986 0 : SVGPathSegList_AppendItem(JSContext *cx, unsigned argc, jsval *vp)
1987 : {
1988 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
1989 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
1990 0 : if (!obj)
1991 0 : return JS_FALSE;
1992 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
1993 0 : if (!SVGPathSegListWrapper::instanceIsListObject(cx, obj, callee))
1994 0 : return false;
1995 0 : if (argc < 1)
1996 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
1997 0 : jsval *argv = JS_ARGV(cx, vp);
1998 : nsresult rv;
1999 : nsIDOMSVGPathSeg *arg0;
2000 0 : xpc_qsSelfRef arg0ref;
2001 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGPathSeg>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
2002 0 : if (NS_FAILED(rv)) {
2003 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
2004 0 : return JS_FALSE;
2005 : }
2006 0 : nsCOMPtr<nsIDOMSVGPathSeg> result;
2007 0 : rv = SVGPathSegListWrapper::getListObject(obj)->AppendItem(arg0, getter_AddRefs(result));
2008 0 : if (NS_FAILED(rv))
2009 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGPathSegList", "appendItem");
2010 0 : if (!result) {
2011 0 : *vp = JSVAL_NULL;
2012 0 : return JS_TRUE;
2013 : }
2014 0 : return Wrap(cx, obj, result, vp);
2015 : }
2016 :
2017 : static JSBool
2018 0 : SVGPathSegList_Clear(JSContext *cx, unsigned argc, jsval *vp)
2019 : {
2020 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2021 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2022 0 : if (!obj)
2023 0 : return JS_FALSE;
2024 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2025 0 : if (!SVGPathSegListWrapper::instanceIsListObject(cx, obj, callee))
2026 0 : return false;
2027 : nsresult rv;
2028 0 : rv = SVGPathSegListWrapper::getListObject(obj)->Clear();
2029 0 : if (NS_FAILED(rv))
2030 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGPathSegList", "clear");
2031 0 : *vp = JSVAL_VOID;
2032 0 : return JS_TRUE;
2033 : }
2034 :
2035 : static JSBool
2036 0 : SVGPathSegList_GetItem(JSContext *cx, unsigned argc, jsval *vp)
2037 : {
2038 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2039 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2040 0 : if (!obj)
2041 0 : return JS_FALSE;
2042 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2043 0 : if (!SVGPathSegListWrapper::instanceIsListObject(cx, obj, callee))
2044 0 : return false;
2045 0 : if (argc < 1)
2046 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
2047 0 : jsval *argv = JS_ARGV(cx, vp);
2048 : uint32_t arg0;
2049 0 : if (!JS_ValueToECMAUint32(cx, argv[0], &arg0))
2050 0 : return JS_FALSE;
2051 : nsresult rv;
2052 0 : nsCOMPtr<nsIDOMSVGPathSeg> result;
2053 0 : rv = SVGPathSegListWrapper::getListObject(obj)->GetItem(arg0, getter_AddRefs(result));
2054 0 : if (NS_FAILED(rv))
2055 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGPathSegList", "getItem");
2056 0 : if (!result) {
2057 0 : *vp = JSVAL_NULL;
2058 0 : return JS_TRUE;
2059 : }
2060 0 : return Wrap(cx, obj, result, vp);
2061 : }
2062 :
2063 : static JSBool
2064 0 : SVGPathSegList_Initialize(JSContext *cx, unsigned argc, jsval *vp)
2065 : {
2066 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2067 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2068 0 : if (!obj)
2069 0 : return JS_FALSE;
2070 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2071 0 : if (!SVGPathSegListWrapper::instanceIsListObject(cx, obj, callee))
2072 0 : return false;
2073 0 : if (argc < 1)
2074 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
2075 0 : jsval *argv = JS_ARGV(cx, vp);
2076 : nsresult rv;
2077 : nsIDOMSVGPathSeg *arg0;
2078 0 : xpc_qsSelfRef arg0ref;
2079 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGPathSeg>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
2080 0 : if (NS_FAILED(rv)) {
2081 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
2082 0 : return JS_FALSE;
2083 : }
2084 0 : nsCOMPtr<nsIDOMSVGPathSeg> result;
2085 0 : rv = SVGPathSegListWrapper::getListObject(obj)->Initialize(arg0, getter_AddRefs(result));
2086 0 : if (NS_FAILED(rv))
2087 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGPathSegList", "initialize");
2088 0 : if (!result) {
2089 0 : *vp = JSVAL_NULL;
2090 0 : return JS_TRUE;
2091 : }
2092 0 : return Wrap(cx, obj, result, vp);
2093 : }
2094 :
2095 : static JSBool
2096 0 : SVGPathSegList_InsertItemBefore(JSContext *cx, unsigned argc, jsval *vp)
2097 : {
2098 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2099 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2100 0 : if (!obj)
2101 0 : return JS_FALSE;
2102 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2103 0 : if (!SVGPathSegListWrapper::instanceIsListObject(cx, obj, callee))
2104 0 : return false;
2105 0 : if (argc < 2)
2106 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
2107 0 : jsval *argv = JS_ARGV(cx, vp);
2108 : nsresult rv;
2109 : nsIDOMSVGPathSeg *arg0;
2110 0 : xpc_qsSelfRef arg0ref;
2111 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGPathSeg>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
2112 0 : if (NS_FAILED(rv)) {
2113 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
2114 0 : return JS_FALSE;
2115 : }
2116 : uint32_t arg1;
2117 0 : if (!JS_ValueToECMAUint32(cx, argv[1], &arg1))
2118 0 : return JS_FALSE;
2119 0 : nsCOMPtr<nsIDOMSVGPathSeg> result;
2120 0 : rv = SVGPathSegListWrapper::getListObject(obj)->InsertItemBefore(arg0, arg1, getter_AddRefs(result));
2121 0 : if (NS_FAILED(rv))
2122 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGPathSegList", "insertItemBefore");
2123 0 : if (!result) {
2124 0 : *vp = JSVAL_NULL;
2125 0 : return JS_TRUE;
2126 : }
2127 0 : return Wrap(cx, obj, result, vp);
2128 : }
2129 :
2130 : static JSBool
2131 0 : SVGPathSegList_GetNumberOfItems(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
2132 : {
2133 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2134 0 : if (!SVGPathSegListWrapper::instanceIsListObject(cx, obj, NULL))
2135 0 : return false;
2136 : nsresult rv;
2137 : PRUint32 result;
2138 0 : rv = SVGPathSegListWrapper::getListObject(obj)->GetNumberOfItems(&result);
2139 0 : if (NS_FAILED(rv))
2140 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGPathSegList", "numberOfItems");
2141 0 : *vp = UINT_TO_JSVAL(result);
2142 0 : return JS_TRUE;
2143 : }
2144 :
2145 : static JSBool
2146 0 : SVGPathSegList_RemoveItem(JSContext *cx, unsigned argc, jsval *vp)
2147 : {
2148 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2149 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2150 0 : if (!obj)
2151 0 : return JS_FALSE;
2152 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2153 0 : if (!SVGPathSegListWrapper::instanceIsListObject(cx, obj, callee))
2154 0 : return false;
2155 0 : if (argc < 1)
2156 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
2157 0 : jsval *argv = JS_ARGV(cx, vp);
2158 : uint32_t arg0;
2159 0 : if (!JS_ValueToECMAUint32(cx, argv[0], &arg0))
2160 0 : return JS_FALSE;
2161 : nsresult rv;
2162 0 : nsCOMPtr<nsIDOMSVGPathSeg> result;
2163 0 : rv = SVGPathSegListWrapper::getListObject(obj)->RemoveItem(arg0, getter_AddRefs(result));
2164 0 : if (NS_FAILED(rv))
2165 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGPathSegList", "removeItem");
2166 0 : if (!result) {
2167 0 : *vp = JSVAL_NULL;
2168 0 : return JS_TRUE;
2169 : }
2170 0 : return Wrap(cx, obj, result, vp);
2171 : }
2172 :
2173 : static JSBool
2174 0 : SVGPathSegList_ReplaceItem(JSContext *cx, unsigned argc, jsval *vp)
2175 : {
2176 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2177 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2178 0 : if (!obj)
2179 0 : return JS_FALSE;
2180 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2181 0 : if (!SVGPathSegListWrapper::instanceIsListObject(cx, obj, callee))
2182 0 : return false;
2183 0 : if (argc < 2)
2184 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
2185 0 : jsval *argv = JS_ARGV(cx, vp);
2186 : nsresult rv;
2187 : nsIDOMSVGPathSeg *arg0;
2188 0 : xpc_qsSelfRef arg0ref;
2189 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGPathSeg>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
2190 0 : if (NS_FAILED(rv)) {
2191 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
2192 0 : return JS_FALSE;
2193 : }
2194 : uint32_t arg1;
2195 0 : if (!JS_ValueToECMAUint32(cx, argv[1], &arg1))
2196 0 : return JS_FALSE;
2197 0 : nsCOMPtr<nsIDOMSVGPathSeg> result;
2198 0 : rv = SVGPathSegListWrapper::getListObject(obj)->ReplaceItem(arg0, arg1, getter_AddRefs(result));
2199 0 : if (NS_FAILED(rv))
2200 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGPathSegList", "replaceItem");
2201 0 : if (!result) {
2202 0 : *vp = JSVAL_NULL;
2203 0 : return JS_TRUE;
2204 : }
2205 0 : return Wrap(cx, obj, result, vp);
2206 : }
2207 :
2208 : template<>
2209 : SVGPathSegListWrapper::Properties SVGPathSegListWrapper::sProtoProperties[] = {
2210 : { s_length_id, length_getter, NULL },
2211 : { s_numberOfItems_id, SVGPathSegList_GetNumberOfItems, xpc_qsGetterOnlyPropertyStub }
2212 : };
2213 :
2214 : template<>
2215 1396 : size_t SVGPathSegListWrapper::sProtoPropertiesCount = ArrayLength(SVGPathSegListWrapper::sProtoProperties);
2216 :
2217 : template<>
2218 : SVGPathSegListWrapper::Methods SVGPathSegListWrapper::sProtoMethods[] = {
2219 : { s_appendItem_id, SVGPathSegList_AppendItem, 1 },
2220 : { s_clear_id, SVGPathSegList_Clear, 0 },
2221 : { s_getItem_id, SVGPathSegList_GetItem, 1 },
2222 : { s_initialize_id, SVGPathSegList_Initialize, 1 },
2223 : { s_insertItemBefore_id, SVGPathSegList_InsertItemBefore, 2 },
2224 : { s_removeItem_id, SVGPathSegList_RemoveItem, 1 },
2225 : { s_replaceItem_id, SVGPathSegList_ReplaceItem, 2 }
2226 : };
2227 :
2228 : template<>
2229 1396 : size_t SVGPathSegListWrapper::sProtoMethodsCount = ArrayLength(SVGPathSegListWrapper::sProtoMethods);
2230 :
2231 : template class ListBase<SVGPathSegListClass>;
2232 :
2233 : JSObject*
2234 0 : SVGPathSegList::create(JSContext *cx, XPCWrappedNativeScope *scope, mozilla::DOMSVGPathSegList *list, nsWrapperCache *cache, bool *triedToWrap)
2235 : {
2236 0 : return SVGPathSegListWrapper::create(cx, scope, list, cache, triedToWrap);
2237 : }
2238 :
2239 : bool
2240 0 : SVGPathSegList::objIsWrapper(JSObject *obj)
2241 : {
2242 0 : return SVGPathSegListWrapper::objIsList(obj);
2243 : }
2244 :
2245 : mozilla::DOMSVGPathSegList*
2246 0 : SVGPathSegList::getNative(JSObject *obj)
2247 : {
2248 0 : return SVGPathSegListWrapper::getListObject(obj);
2249 : }
2250 :
2251 : // SVGPointList
2252 :
2253 : template<>
2254 : js::Class SVGPointListWrapper::sInterfaceClass = {
2255 : "SVGPointList",
2256 : 0,
2257 : JS_PropertyStub, /* addProperty */
2258 : JS_PropertyStub, /* delProperty */
2259 : JS_PropertyStub, /* getProperty */
2260 : JS_StrictPropertyStub, /* setProperty */
2261 : JS_EnumerateStub,
2262 : JS_ResolveStub,
2263 : JS_ConvertStub,
2264 : JS_FinalizeStub,
2265 : NULL, /* checkAccess */
2266 : NULL, /* call */
2267 : NULL, /* construct */
2268 : interface_hasInstance
2269 : };
2270 :
2271 : template<>
2272 : JSObject *
2273 0 : SVGPointListWrapper::getPrototype(JSContext *cx, XPCWrappedNativeScope *scope, bool *enabled)
2274 : {
2275 0 : if (!scope->NewDOMBindingsEnabled()) {
2276 0 : *enabled = false;
2277 0 : return NULL;
2278 : }
2279 :
2280 0 : *enabled = true;
2281 0 : return getPrototype(cx, scope);
2282 : }
2283 :
2284 : template<>
2285 : bool
2286 0 : SVGPointListWrapper::getItemAt(mozilla::DOMSVGPointList *list, uint32_t index, nsIDOMSVGPoint * &item)
2287 : {
2288 0 : item = list->GetItemAt(index);
2289 0 : return !!item;
2290 : }
2291 :
2292 : static JSBool
2293 0 : SVGPointList_AppendItem(JSContext *cx, unsigned argc, jsval *vp)
2294 : {
2295 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2296 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2297 0 : if (!obj)
2298 0 : return JS_FALSE;
2299 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2300 0 : if (!SVGPointListWrapper::instanceIsListObject(cx, obj, callee))
2301 0 : return false;
2302 0 : if (argc < 1)
2303 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
2304 0 : jsval *argv = JS_ARGV(cx, vp);
2305 : nsresult rv;
2306 : nsIDOMSVGPoint *arg0;
2307 0 : xpc_qsSelfRef arg0ref;
2308 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGPoint>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
2309 0 : if (NS_FAILED(rv)) {
2310 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
2311 0 : return JS_FALSE;
2312 : }
2313 0 : nsCOMPtr<nsIDOMSVGPoint> result;
2314 0 : rv = SVGPointListWrapper::getListObject(obj)->AppendItem(arg0, getter_AddRefs(result));
2315 0 : if (NS_FAILED(rv))
2316 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGPointList", "appendItem");
2317 0 : if (!result) {
2318 0 : *vp = JSVAL_NULL;
2319 0 : return JS_TRUE;
2320 : }
2321 0 : return Wrap(cx, obj, result, vp);
2322 : }
2323 :
2324 : static JSBool
2325 0 : SVGPointList_Clear(JSContext *cx, unsigned argc, jsval *vp)
2326 : {
2327 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2328 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2329 0 : if (!obj)
2330 0 : return JS_FALSE;
2331 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2332 0 : if (!SVGPointListWrapper::instanceIsListObject(cx, obj, callee))
2333 0 : return false;
2334 : nsresult rv;
2335 0 : rv = SVGPointListWrapper::getListObject(obj)->Clear();
2336 0 : if (NS_FAILED(rv))
2337 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGPointList", "clear");
2338 0 : *vp = JSVAL_VOID;
2339 0 : return JS_TRUE;
2340 : }
2341 :
2342 : static JSBool
2343 0 : SVGPointList_GetItem(JSContext *cx, unsigned argc, jsval *vp)
2344 : {
2345 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2346 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2347 0 : if (!obj)
2348 0 : return JS_FALSE;
2349 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2350 0 : if (!SVGPointListWrapper::instanceIsListObject(cx, obj, callee))
2351 0 : return false;
2352 0 : if (argc < 1)
2353 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
2354 0 : jsval *argv = JS_ARGV(cx, vp);
2355 : uint32_t arg0;
2356 0 : if (!JS_ValueToECMAUint32(cx, argv[0], &arg0))
2357 0 : return JS_FALSE;
2358 : nsresult rv;
2359 0 : nsCOMPtr<nsIDOMSVGPoint> result;
2360 0 : rv = SVGPointListWrapper::getListObject(obj)->GetItem(arg0, getter_AddRefs(result));
2361 0 : if (NS_FAILED(rv))
2362 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGPointList", "getItem");
2363 0 : if (!result) {
2364 0 : *vp = JSVAL_NULL;
2365 0 : return JS_TRUE;
2366 : }
2367 0 : return Wrap(cx, obj, result, vp);
2368 : }
2369 :
2370 : static JSBool
2371 0 : SVGPointList_Initialize(JSContext *cx, unsigned argc, jsval *vp)
2372 : {
2373 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2374 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2375 0 : if (!obj)
2376 0 : return JS_FALSE;
2377 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2378 0 : if (!SVGPointListWrapper::instanceIsListObject(cx, obj, callee))
2379 0 : return false;
2380 0 : if (argc < 1)
2381 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
2382 0 : jsval *argv = JS_ARGV(cx, vp);
2383 : nsresult rv;
2384 : nsIDOMSVGPoint *arg0;
2385 0 : xpc_qsSelfRef arg0ref;
2386 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGPoint>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
2387 0 : if (NS_FAILED(rv)) {
2388 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
2389 0 : return JS_FALSE;
2390 : }
2391 0 : nsCOMPtr<nsIDOMSVGPoint> result;
2392 0 : rv = SVGPointListWrapper::getListObject(obj)->Initialize(arg0, getter_AddRefs(result));
2393 0 : if (NS_FAILED(rv))
2394 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGPointList", "initialize");
2395 0 : if (!result) {
2396 0 : *vp = JSVAL_NULL;
2397 0 : return JS_TRUE;
2398 : }
2399 0 : return Wrap(cx, obj, result, vp);
2400 : }
2401 :
2402 : static JSBool
2403 0 : SVGPointList_InsertItemBefore(JSContext *cx, unsigned argc, jsval *vp)
2404 : {
2405 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2406 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2407 0 : if (!obj)
2408 0 : return JS_FALSE;
2409 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2410 0 : if (!SVGPointListWrapper::instanceIsListObject(cx, obj, callee))
2411 0 : return false;
2412 0 : if (argc < 2)
2413 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
2414 0 : jsval *argv = JS_ARGV(cx, vp);
2415 : nsresult rv;
2416 : nsIDOMSVGPoint *arg0;
2417 0 : xpc_qsSelfRef arg0ref;
2418 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGPoint>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
2419 0 : if (NS_FAILED(rv)) {
2420 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
2421 0 : return JS_FALSE;
2422 : }
2423 : uint32_t arg1;
2424 0 : if (!JS_ValueToECMAUint32(cx, argv[1], &arg1))
2425 0 : return JS_FALSE;
2426 0 : nsCOMPtr<nsIDOMSVGPoint> result;
2427 0 : rv = SVGPointListWrapper::getListObject(obj)->InsertItemBefore(arg0, arg1, getter_AddRefs(result));
2428 0 : if (NS_FAILED(rv))
2429 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGPointList", "insertItemBefore");
2430 0 : if (!result) {
2431 0 : *vp = JSVAL_NULL;
2432 0 : return JS_TRUE;
2433 : }
2434 0 : return Wrap(cx, obj, result, vp);
2435 : }
2436 :
2437 : static JSBool
2438 0 : SVGPointList_GetNumberOfItems(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
2439 : {
2440 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2441 0 : if (!SVGPointListWrapper::instanceIsListObject(cx, obj, NULL))
2442 0 : return false;
2443 : nsresult rv;
2444 : PRUint32 result;
2445 0 : rv = SVGPointListWrapper::getListObject(obj)->GetNumberOfItems(&result);
2446 0 : if (NS_FAILED(rv))
2447 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGPointList", "numberOfItems");
2448 0 : *vp = UINT_TO_JSVAL(result);
2449 0 : return JS_TRUE;
2450 : }
2451 :
2452 : static JSBool
2453 0 : SVGPointList_RemoveItem(JSContext *cx, unsigned argc, jsval *vp)
2454 : {
2455 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2456 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2457 0 : if (!obj)
2458 0 : return JS_FALSE;
2459 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2460 0 : if (!SVGPointListWrapper::instanceIsListObject(cx, obj, callee))
2461 0 : return false;
2462 0 : if (argc < 1)
2463 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
2464 0 : jsval *argv = JS_ARGV(cx, vp);
2465 : uint32_t arg0;
2466 0 : if (!JS_ValueToECMAUint32(cx, argv[0], &arg0))
2467 0 : return JS_FALSE;
2468 : nsresult rv;
2469 0 : nsCOMPtr<nsIDOMSVGPoint> result;
2470 0 : rv = SVGPointListWrapper::getListObject(obj)->RemoveItem(arg0, getter_AddRefs(result));
2471 0 : if (NS_FAILED(rv))
2472 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGPointList", "removeItem");
2473 0 : if (!result) {
2474 0 : *vp = JSVAL_NULL;
2475 0 : return JS_TRUE;
2476 : }
2477 0 : return Wrap(cx, obj, result, vp);
2478 : }
2479 :
2480 : static JSBool
2481 0 : SVGPointList_ReplaceItem(JSContext *cx, unsigned argc, jsval *vp)
2482 : {
2483 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2484 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2485 0 : if (!obj)
2486 0 : return JS_FALSE;
2487 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2488 0 : if (!SVGPointListWrapper::instanceIsListObject(cx, obj, callee))
2489 0 : return false;
2490 0 : if (argc < 2)
2491 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
2492 0 : jsval *argv = JS_ARGV(cx, vp);
2493 : nsresult rv;
2494 : nsIDOMSVGPoint *arg0;
2495 0 : xpc_qsSelfRef arg0ref;
2496 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGPoint>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
2497 0 : if (NS_FAILED(rv)) {
2498 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
2499 0 : return JS_FALSE;
2500 : }
2501 : uint32_t arg1;
2502 0 : if (!JS_ValueToECMAUint32(cx, argv[1], &arg1))
2503 0 : return JS_FALSE;
2504 0 : nsCOMPtr<nsIDOMSVGPoint> result;
2505 0 : rv = SVGPointListWrapper::getListObject(obj)->ReplaceItem(arg0, arg1, getter_AddRefs(result));
2506 0 : if (NS_FAILED(rv))
2507 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGPointList", "replaceItem");
2508 0 : if (!result) {
2509 0 : *vp = JSVAL_NULL;
2510 0 : return JS_TRUE;
2511 : }
2512 0 : return Wrap(cx, obj, result, vp);
2513 : }
2514 :
2515 : template<>
2516 : SVGPointListWrapper::Properties SVGPointListWrapper::sProtoProperties[] = {
2517 : { s_length_id, length_getter, NULL },
2518 : { s_numberOfItems_id, SVGPointList_GetNumberOfItems, xpc_qsGetterOnlyPropertyStub }
2519 : };
2520 :
2521 : template<>
2522 1396 : size_t SVGPointListWrapper::sProtoPropertiesCount = ArrayLength(SVGPointListWrapper::sProtoProperties);
2523 :
2524 : template<>
2525 : SVGPointListWrapper::Methods SVGPointListWrapper::sProtoMethods[] = {
2526 : { s_appendItem_id, SVGPointList_AppendItem, 1 },
2527 : { s_clear_id, SVGPointList_Clear, 0 },
2528 : { s_getItem_id, SVGPointList_GetItem, 1 },
2529 : { s_initialize_id, SVGPointList_Initialize, 1 },
2530 : { s_insertItemBefore_id, SVGPointList_InsertItemBefore, 2 },
2531 : { s_removeItem_id, SVGPointList_RemoveItem, 1 },
2532 : { s_replaceItem_id, SVGPointList_ReplaceItem, 2 }
2533 : };
2534 :
2535 : template<>
2536 1396 : size_t SVGPointListWrapper::sProtoMethodsCount = ArrayLength(SVGPointListWrapper::sProtoMethods);
2537 :
2538 : template class ListBase<SVGPointListClass>;
2539 :
2540 : JSObject*
2541 0 : SVGPointList::create(JSContext *cx, XPCWrappedNativeScope *scope, mozilla::DOMSVGPointList *list, nsWrapperCache *cache, bool *triedToWrap)
2542 : {
2543 0 : return SVGPointListWrapper::create(cx, scope, list, cache, triedToWrap);
2544 : }
2545 :
2546 : bool
2547 0 : SVGPointList::objIsWrapper(JSObject *obj)
2548 : {
2549 0 : return SVGPointListWrapper::objIsList(obj);
2550 : }
2551 :
2552 : mozilla::DOMSVGPointList*
2553 0 : SVGPointList::getNative(JSObject *obj)
2554 : {
2555 0 : return SVGPointListWrapper::getListObject(obj);
2556 : }
2557 :
2558 : // SVGTransformList
2559 :
2560 : template<>
2561 : js::Class SVGTransformListWrapper::sInterfaceClass = {
2562 : "SVGTransformList",
2563 : 0,
2564 : JS_PropertyStub, /* addProperty */
2565 : JS_PropertyStub, /* delProperty */
2566 : JS_PropertyStub, /* getProperty */
2567 : JS_StrictPropertyStub, /* setProperty */
2568 : JS_EnumerateStub,
2569 : JS_ResolveStub,
2570 : JS_ConvertStub,
2571 : JS_FinalizeStub,
2572 : NULL, /* checkAccess */
2573 : NULL, /* call */
2574 : NULL, /* construct */
2575 : interface_hasInstance
2576 : };
2577 :
2578 : template<>
2579 : JSObject *
2580 0 : SVGTransformListWrapper::getPrototype(JSContext *cx, XPCWrappedNativeScope *scope, bool *enabled)
2581 : {
2582 0 : if (!scope->NewDOMBindingsEnabled()) {
2583 0 : *enabled = false;
2584 0 : return NULL;
2585 : }
2586 :
2587 0 : *enabled = true;
2588 0 : return getPrototype(cx, scope);
2589 : }
2590 :
2591 : template<>
2592 : bool
2593 0 : SVGTransformListWrapper::getItemAt(mozilla::DOMSVGTransformList *list, uint32_t index, nsIDOMSVGTransform * &item)
2594 : {
2595 0 : item = list->GetItemAt(index);
2596 0 : return !!item;
2597 : }
2598 :
2599 : static JSBool
2600 0 : SVGTransformList_AppendItem(JSContext *cx, unsigned argc, jsval *vp)
2601 : {
2602 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2603 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2604 0 : if (!obj)
2605 0 : return JS_FALSE;
2606 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2607 0 : if (!SVGTransformListWrapper::instanceIsListObject(cx, obj, callee))
2608 0 : return false;
2609 0 : if (argc < 1)
2610 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
2611 0 : jsval *argv = JS_ARGV(cx, vp);
2612 : nsresult rv;
2613 : nsIDOMSVGTransform *arg0;
2614 0 : xpc_qsSelfRef arg0ref;
2615 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGTransform>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
2616 0 : if (NS_FAILED(rv)) {
2617 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
2618 0 : return JS_FALSE;
2619 : }
2620 0 : nsCOMPtr<nsIDOMSVGTransform> result;
2621 0 : rv = SVGTransformListWrapper::getListObject(obj)->AppendItem(arg0, getter_AddRefs(result));
2622 0 : if (NS_FAILED(rv))
2623 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGTransformList", "appendItem");
2624 0 : if (!result) {
2625 0 : *vp = JSVAL_NULL;
2626 0 : return JS_TRUE;
2627 : }
2628 0 : return Wrap(cx, obj, result, vp);
2629 : }
2630 :
2631 : static JSBool
2632 0 : SVGTransformList_Clear(JSContext *cx, unsigned argc, jsval *vp)
2633 : {
2634 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2635 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2636 0 : if (!obj)
2637 0 : return JS_FALSE;
2638 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2639 0 : if (!SVGTransformListWrapper::instanceIsListObject(cx, obj, callee))
2640 0 : return false;
2641 : nsresult rv;
2642 0 : rv = SVGTransformListWrapper::getListObject(obj)->Clear();
2643 0 : if (NS_FAILED(rv))
2644 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGTransformList", "clear");
2645 0 : *vp = JSVAL_VOID;
2646 0 : return JS_TRUE;
2647 : }
2648 :
2649 : static JSBool
2650 0 : SVGTransformList_Consolidate(JSContext *cx, unsigned argc, jsval *vp)
2651 : {
2652 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2653 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2654 0 : if (!obj)
2655 0 : return JS_FALSE;
2656 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2657 0 : if (!SVGTransformListWrapper::instanceIsListObject(cx, obj, callee))
2658 0 : return false;
2659 : nsresult rv;
2660 0 : nsCOMPtr<nsIDOMSVGTransform> result;
2661 0 : rv = SVGTransformListWrapper::getListObject(obj)->Consolidate(getter_AddRefs(result));
2662 0 : if (NS_FAILED(rv))
2663 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGTransformList", "consolidate");
2664 0 : if (!result) {
2665 0 : *vp = JSVAL_NULL;
2666 0 : return JS_TRUE;
2667 : }
2668 0 : return Wrap(cx, obj, result, vp);
2669 : }
2670 :
2671 : static JSBool
2672 0 : SVGTransformList_CreateSVGTransformFromMatrix(JSContext *cx, unsigned argc, jsval *vp)
2673 : {
2674 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2675 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2676 0 : if (!obj)
2677 0 : return JS_FALSE;
2678 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2679 0 : if (!SVGTransformListWrapper::instanceIsListObject(cx, obj, callee))
2680 0 : return false;
2681 0 : if (argc < 1)
2682 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
2683 0 : jsval *argv = JS_ARGV(cx, vp);
2684 : nsresult rv;
2685 : nsIDOMSVGMatrix *arg0;
2686 0 : xpc_qsSelfRef arg0ref;
2687 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGMatrix>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
2688 0 : if (NS_FAILED(rv)) {
2689 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
2690 0 : return JS_FALSE;
2691 : }
2692 0 : nsCOMPtr<nsIDOMSVGTransform> result;
2693 0 : rv = SVGTransformListWrapper::getListObject(obj)->CreateSVGTransformFromMatrix(arg0, getter_AddRefs(result));
2694 0 : if (NS_FAILED(rv))
2695 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGTransformList", "createSVGTransformFromMatrix");
2696 0 : if (!result) {
2697 0 : *vp = JSVAL_NULL;
2698 0 : return JS_TRUE;
2699 : }
2700 0 : return Wrap(cx, obj, result, vp);
2701 : }
2702 :
2703 : static JSBool
2704 0 : SVGTransformList_GetItem(JSContext *cx, unsigned argc, jsval *vp)
2705 : {
2706 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2707 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2708 0 : if (!obj)
2709 0 : return JS_FALSE;
2710 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2711 0 : if (!SVGTransformListWrapper::instanceIsListObject(cx, obj, callee))
2712 0 : return false;
2713 0 : if (argc < 1)
2714 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
2715 0 : jsval *argv = JS_ARGV(cx, vp);
2716 : uint32_t arg0;
2717 0 : if (!JS_ValueToECMAUint32(cx, argv[0], &arg0))
2718 0 : return JS_FALSE;
2719 : nsresult rv;
2720 0 : nsCOMPtr<nsIDOMSVGTransform> result;
2721 0 : rv = SVGTransformListWrapper::getListObject(obj)->GetItem(arg0, getter_AddRefs(result));
2722 0 : if (NS_FAILED(rv))
2723 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGTransformList", "getItem");
2724 0 : if (!result) {
2725 0 : *vp = JSVAL_NULL;
2726 0 : return JS_TRUE;
2727 : }
2728 0 : return Wrap(cx, obj, result, vp);
2729 : }
2730 :
2731 : static JSBool
2732 0 : SVGTransformList_Initialize(JSContext *cx, unsigned argc, jsval *vp)
2733 : {
2734 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2735 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2736 0 : if (!obj)
2737 0 : return JS_FALSE;
2738 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2739 0 : if (!SVGTransformListWrapper::instanceIsListObject(cx, obj, callee))
2740 0 : return false;
2741 0 : if (argc < 1)
2742 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
2743 0 : jsval *argv = JS_ARGV(cx, vp);
2744 : nsresult rv;
2745 : nsIDOMSVGTransform *arg0;
2746 0 : xpc_qsSelfRef arg0ref;
2747 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGTransform>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
2748 0 : if (NS_FAILED(rv)) {
2749 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
2750 0 : return JS_FALSE;
2751 : }
2752 0 : nsCOMPtr<nsIDOMSVGTransform> result;
2753 0 : rv = SVGTransformListWrapper::getListObject(obj)->Initialize(arg0, getter_AddRefs(result));
2754 0 : if (NS_FAILED(rv))
2755 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGTransformList", "initialize");
2756 0 : if (!result) {
2757 0 : *vp = JSVAL_NULL;
2758 0 : return JS_TRUE;
2759 : }
2760 0 : return Wrap(cx, obj, result, vp);
2761 : }
2762 :
2763 : static JSBool
2764 0 : SVGTransformList_InsertItemBefore(JSContext *cx, unsigned argc, jsval *vp)
2765 : {
2766 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2767 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2768 0 : if (!obj)
2769 0 : return JS_FALSE;
2770 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2771 0 : if (!SVGTransformListWrapper::instanceIsListObject(cx, obj, callee))
2772 0 : return false;
2773 0 : if (argc < 2)
2774 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
2775 0 : jsval *argv = JS_ARGV(cx, vp);
2776 : nsresult rv;
2777 : nsIDOMSVGTransform *arg0;
2778 0 : xpc_qsSelfRef arg0ref;
2779 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGTransform>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
2780 0 : if (NS_FAILED(rv)) {
2781 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
2782 0 : return JS_FALSE;
2783 : }
2784 : uint32_t arg1;
2785 0 : if (!JS_ValueToECMAUint32(cx, argv[1], &arg1))
2786 0 : return JS_FALSE;
2787 0 : nsCOMPtr<nsIDOMSVGTransform> result;
2788 0 : rv = SVGTransformListWrapper::getListObject(obj)->InsertItemBefore(arg0, arg1, getter_AddRefs(result));
2789 0 : if (NS_FAILED(rv))
2790 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGTransformList", "insertItemBefore");
2791 0 : if (!result) {
2792 0 : *vp = JSVAL_NULL;
2793 0 : return JS_TRUE;
2794 : }
2795 0 : return Wrap(cx, obj, result, vp);
2796 : }
2797 :
2798 : static JSBool
2799 0 : SVGTransformList_GetNumberOfItems(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
2800 : {
2801 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2802 0 : if (!SVGTransformListWrapper::instanceIsListObject(cx, obj, NULL))
2803 0 : return false;
2804 : nsresult rv;
2805 : PRUint32 result;
2806 0 : rv = SVGTransformListWrapper::getListObject(obj)->GetNumberOfItems(&result);
2807 0 : if (NS_FAILED(rv))
2808 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGTransformList", "numberOfItems");
2809 0 : *vp = UINT_TO_JSVAL(result);
2810 0 : return JS_TRUE;
2811 : }
2812 :
2813 : static JSBool
2814 0 : SVGTransformList_RemoveItem(JSContext *cx, unsigned argc, jsval *vp)
2815 : {
2816 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2817 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2818 0 : if (!obj)
2819 0 : return JS_FALSE;
2820 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2821 0 : if (!SVGTransformListWrapper::instanceIsListObject(cx, obj, callee))
2822 0 : return false;
2823 0 : if (argc < 1)
2824 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
2825 0 : jsval *argv = JS_ARGV(cx, vp);
2826 : uint32_t arg0;
2827 0 : if (!JS_ValueToECMAUint32(cx, argv[0], &arg0))
2828 0 : return JS_FALSE;
2829 : nsresult rv;
2830 0 : nsCOMPtr<nsIDOMSVGTransform> result;
2831 0 : rv = SVGTransformListWrapper::getListObject(obj)->RemoveItem(arg0, getter_AddRefs(result));
2832 0 : if (NS_FAILED(rv))
2833 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGTransformList", "removeItem");
2834 0 : if (!result) {
2835 0 : *vp = JSVAL_NULL;
2836 0 : return JS_TRUE;
2837 : }
2838 0 : return Wrap(cx, obj, result, vp);
2839 : }
2840 :
2841 : static JSBool
2842 0 : SVGTransformList_ReplaceItem(JSContext *cx, unsigned argc, jsval *vp)
2843 : {
2844 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2845 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2846 0 : if (!obj)
2847 0 : return JS_FALSE;
2848 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2849 0 : if (!SVGTransformListWrapper::instanceIsListObject(cx, obj, callee))
2850 0 : return false;
2851 0 : if (argc < 2)
2852 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
2853 0 : jsval *argv = JS_ARGV(cx, vp);
2854 : nsresult rv;
2855 : nsIDOMSVGTransform *arg0;
2856 0 : xpc_qsSelfRef arg0ref;
2857 0 : rv = xpc_qsUnwrapArg<nsIDOMSVGTransform>(cx, argv[0], &arg0, &arg0ref.ptr, &argv[0]);
2858 0 : if (NS_FAILED(rv)) {
2859 0 : xpc_qsThrowBadArgWithDetails(cx, rv, 0, "", "");
2860 0 : return JS_FALSE;
2861 : }
2862 : uint32_t arg1;
2863 0 : if (!JS_ValueToECMAUint32(cx, argv[1], &arg1))
2864 0 : return JS_FALSE;
2865 0 : nsCOMPtr<nsIDOMSVGTransform> result;
2866 0 : rv = SVGTransformListWrapper::getListObject(obj)->ReplaceItem(arg0, arg1, getter_AddRefs(result));
2867 0 : if (NS_FAILED(rv))
2868 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "SVGTransformList", "replaceItem");
2869 0 : if (!result) {
2870 0 : *vp = JSVAL_NULL;
2871 0 : return JS_TRUE;
2872 : }
2873 0 : return Wrap(cx, obj, result, vp);
2874 : }
2875 :
2876 : template<>
2877 : SVGTransformListWrapper::Properties SVGTransformListWrapper::sProtoProperties[] = {
2878 : { s_length_id, length_getter, NULL },
2879 : { s_numberOfItems_id, SVGTransformList_GetNumberOfItems, xpc_qsGetterOnlyPropertyStub }
2880 : };
2881 :
2882 : template<>
2883 1396 : size_t SVGTransformListWrapper::sProtoPropertiesCount = ArrayLength(SVGTransformListWrapper::sProtoProperties);
2884 :
2885 : template<>
2886 : SVGTransformListWrapper::Methods SVGTransformListWrapper::sProtoMethods[] = {
2887 : { s_appendItem_id, SVGTransformList_AppendItem, 1 },
2888 : { s_clear_id, SVGTransformList_Clear, 0 },
2889 : { s_consolidate_id, SVGTransformList_Consolidate, 0 },
2890 : { s_createSVGTransformFromMatrix_id, SVGTransformList_CreateSVGTransformFromMatrix, 1 },
2891 : { s_getItem_id, SVGTransformList_GetItem, 1 },
2892 : { s_initialize_id, SVGTransformList_Initialize, 1 },
2893 : { s_insertItemBefore_id, SVGTransformList_InsertItemBefore, 2 },
2894 : { s_removeItem_id, SVGTransformList_RemoveItem, 1 },
2895 : { s_replaceItem_id, SVGTransformList_ReplaceItem, 2 }
2896 : };
2897 :
2898 : template<>
2899 1396 : size_t SVGTransformListWrapper::sProtoMethodsCount = ArrayLength(SVGTransformListWrapper::sProtoMethods);
2900 :
2901 : template class ListBase<SVGTransformListClass>;
2902 :
2903 : JSObject*
2904 0 : SVGTransformList::create(JSContext *cx, XPCWrappedNativeScope *scope, mozilla::DOMSVGTransformList *list, nsWrapperCache *cache, bool *triedToWrap)
2905 : {
2906 0 : return SVGTransformListWrapper::create(cx, scope, list, cache, triedToWrap);
2907 : }
2908 :
2909 : bool
2910 0 : SVGTransformList::objIsWrapper(JSObject *obj)
2911 : {
2912 0 : return SVGTransformListWrapper::objIsList(obj);
2913 : }
2914 :
2915 : mozilla::DOMSVGTransformList*
2916 0 : SVGTransformList::getNative(JSObject *obj)
2917 : {
2918 0 : return SVGTransformListWrapper::getListObject(obj);
2919 : }
2920 :
2921 : // TouchList
2922 :
2923 : template<>
2924 : js::Class TouchListWrapper::sInterfaceClass = {
2925 : "TouchList",
2926 : 0,
2927 : JS_PropertyStub, /* addProperty */
2928 : JS_PropertyStub, /* delProperty */
2929 : JS_PropertyStub, /* getProperty */
2930 : JS_StrictPropertyStub, /* setProperty */
2931 : JS_EnumerateStub,
2932 : JS_ResolveStub,
2933 : JS_ConvertStub,
2934 : JS_FinalizeStub,
2935 : NULL, /* checkAccess */
2936 : NULL, /* call */
2937 : NULL, /* construct */
2938 : interface_hasInstance
2939 : };
2940 :
2941 : template<>
2942 : JSObject *
2943 0 : TouchListWrapper::getPrototype(JSContext *cx, XPCWrappedNativeScope *scope, bool *enabled)
2944 : {
2945 0 : if (!scope->NewDOMBindingsEnabled()) {
2946 0 : *enabled = false;
2947 0 : return NULL;
2948 : }
2949 :
2950 0 : *enabled = true;
2951 0 : return getPrototype(cx, scope);
2952 : }
2953 :
2954 : template<>
2955 : bool
2956 0 : TouchListWrapper::getItemAt(nsDOMTouchList *list, uint32_t index, nsIDOMTouch * &item)
2957 : {
2958 0 : item = list->GetItemAt(index);
2959 0 : return !!item;
2960 : }
2961 :
2962 : static JSBool
2963 0 : TouchList_IdentifiedTouch(JSContext *cx, unsigned argc, jsval *vp)
2964 : {
2965 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2966 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2967 0 : if (!obj)
2968 0 : return JS_FALSE;
2969 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2970 0 : if (!TouchListWrapper::instanceIsListObject(cx, obj, callee))
2971 0 : return false;
2972 0 : if (argc < 1)
2973 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
2974 0 : jsval *argv = JS_ARGV(cx, vp);
2975 : int32_t arg0;
2976 0 : if (!JS_ValueToECMAInt32(cx, argv[0], &arg0))
2977 0 : return JS_FALSE;
2978 : nsresult rv;
2979 0 : nsCOMPtr<nsIDOMTouch> result;
2980 0 : rv = TouchListWrapper::getListObject(obj)->IdentifiedTouch(arg0, getter_AddRefs(result));
2981 0 : if (NS_FAILED(rv))
2982 0 : return xpc_qsThrowMethodFailedWithDetails(cx, rv, "TouchList", "identifiedTouch");
2983 0 : if (!result) {
2984 0 : *vp = JSVAL_NULL;
2985 0 : return JS_TRUE;
2986 : }
2987 0 : return Wrap(cx, obj, result, vp);
2988 : }
2989 :
2990 : static JSBool
2991 0 : TouchList_Item(JSContext *cx, unsigned argc, jsval *vp)
2992 : {
2993 0 : XPC_QS_ASSERT_CONTEXT_OK(cx);
2994 0 : JSObject *obj = JS_THIS_OBJECT(cx, vp);
2995 0 : if (!obj)
2996 0 : return JS_FALSE;
2997 0 : JSObject *callee = JSVAL_TO_OBJECT(JS_CALLEE(cx, vp));
2998 0 : if (!TouchListWrapper::instanceIsListObject(cx, obj, callee))
2999 0 : return false;
3000 0 : if (argc < 1)
3001 0 : return xpc_qsThrow(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
3002 0 : jsval *argv = JS_ARGV(cx, vp);
3003 : uint32_t arg0;
3004 0 : if (!JS_ValueToECMAUint32(cx, argv[0], &arg0))
3005 0 : return JS_FALSE;
3006 : nsIDOMTouch *result;
3007 0 : result = TouchListWrapper::getListObject(obj)->GetItemAt(arg0);
3008 0 : if (!result) {
3009 0 : *vp = JSVAL_NULL;
3010 0 : return JS_TRUE;
3011 : }
3012 0 : return Wrap(cx, obj, result, vp);
3013 : }
3014 :
3015 : template<>
3016 : TouchListWrapper::Properties TouchListWrapper::sProtoProperties[] = {
3017 : { s_length_id, length_getter, NULL }
3018 : };
3019 :
3020 : template<>
3021 1396 : size_t TouchListWrapper::sProtoPropertiesCount = ArrayLength(TouchListWrapper::sProtoProperties);
3022 :
3023 : template<>
3024 : TouchListWrapper::Methods TouchListWrapper::sProtoMethods[] = {
3025 : { s_identifiedTouch_id, TouchList_IdentifiedTouch, 1 },
3026 : { s_item_id, TouchList_Item, 1 }
3027 : };
3028 :
3029 : template<>
3030 1396 : size_t TouchListWrapper::sProtoMethodsCount = ArrayLength(TouchListWrapper::sProtoMethods);
3031 :
3032 : template class ListBase<TouchListClass>;
3033 :
3034 : JSObject*
3035 0 : TouchList::create(JSContext *cx, XPCWrappedNativeScope *scope, nsDOMTouchList *list, nsWrapperCache *cache, bool *triedToWrap)
3036 : {
3037 0 : return TouchListWrapper::create(cx, scope, list, cache, triedToWrap);
3038 : }
3039 :
3040 : bool
3041 0 : TouchList::objIsWrapper(JSObject *obj)
3042 : {
3043 0 : return TouchListWrapper::objIsList(obj);
3044 : }
3045 :
3046 : nsDOMTouchList*
3047 0 : TouchList::getNative(JSObject *obj)
3048 : {
3049 0 : return TouchListWrapper::getListObject(obj);
3050 : }
3051 :
3052 : // Register prototypes
3053 :
3054 : void
3055 305 : Register(nsDOMClassInfoData *aData)
3056 : {
3057 : #define REGISTER_PROTO(_dom_class) \
3058 : aData[eDOMClassInfo_##_dom_class##_id].mDefineDOMInterface = _dom_class##Wrapper::getPrototype
3059 :
3060 305 : REGISTER_PROTO(ClientRectList);
3061 305 : REGISTER_PROTO(DOMTokenList);
3062 305 : REGISTER_PROTO(NodeList);
3063 305 : REGISTER_PROTO(HTMLCollection);
3064 305 : REGISTER_PROTO(SVGPathSegList);
3065 305 : REGISTER_PROTO(PaintRequestList);
3066 305 : REGISTER_PROTO(TouchList);
3067 305 : REGISTER_PROTO(FileList);
3068 305 : REGISTER_PROTO(SVGLengthList);
3069 305 : REGISTER_PROTO(SVGTransformList);
3070 305 : REGISTER_PROTO(DOMSettableTokenList);
3071 305 : REGISTER_PROTO(SVGPointList);
3072 305 : REGISTER_PROTO(SVGNumberList);
3073 305 : REGISTER_PROTO(HTMLOptionsCollection);
3074 :
3075 : #undef REGISTER_PROTO
3076 305 : }
3077 :
3078 : }
3079 : }
3080 4188 : }
|