LCOV - code coverage report
Current view: directory - objdir/js/xpconnect/src - dombindings_gen.cpp (source / functions) Found Hit Coverage
Test: app.info Lines: 1574 132 8.4 %
Date: 2012-04-21 Functions: 146 12 8.2 %

       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 : }

Generated by: LCOV version 1.7