121939df44de1705786c545cd1bf519d47250322dBen Murdoch/*
221939df44de1705786c545cd1bf519d47250322dBen Murdoch    This file is part of the WebKit open source project.
321939df44de1705786c545cd1bf519d47250322dBen Murdoch    This file has been generated by generate-bindings.pl. DO NOT MODIFY!
421939df44de1705786c545cd1bf519d47250322dBen Murdoch
521939df44de1705786c545cd1bf519d47250322dBen Murdoch    This library is free software; you can redistribute it and/or
621939df44de1705786c545cd1bf519d47250322dBen Murdoch    modify it under the terms of the GNU Library General Public
721939df44de1705786c545cd1bf519d47250322dBen Murdoch    License as published by the Free Software Foundation; either
821939df44de1705786c545cd1bf519d47250322dBen Murdoch    version 2 of the License, or (at your option) any later version.
921939df44de1705786c545cd1bf519d47250322dBen Murdoch
1021939df44de1705786c545cd1bf519d47250322dBen Murdoch    This library is distributed in the hope that it will be useful,
1121939df44de1705786c545cd1bf519d47250322dBen Murdoch    but WITHOUT ANY WARRANTY; without even the implied warranty of
1221939df44de1705786c545cd1bf519d47250322dBen Murdoch    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1321939df44de1705786c545cd1bf519d47250322dBen Murdoch    Library General Public License for more details.
1421939df44de1705786c545cd1bf519d47250322dBen Murdoch
1521939df44de1705786c545cd1bf519d47250322dBen Murdoch    You should have received a copy of the GNU Library General Public License
1621939df44de1705786c545cd1bf519d47250322dBen Murdoch    along with this library; see the file COPYING.LIB.  If not, write to
1721939df44de1705786c545cd1bf519d47250322dBen Murdoch    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
1821939df44de1705786c545cd1bf519d47250322dBen Murdoch    Boston, MA 02110-1301, USA.
1921939df44de1705786c545cd1bf519d47250322dBen Murdoch*/
2021939df44de1705786c545cd1bf519d47250322dBen Murdoch
2121939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "config.h"
2221939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "JSTestObj.h"
2321939df44de1705786c545cd1bf519d47250322dBen Murdoch
24db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#include "ExceptionCode.h"
2506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#include "HTMLNames.h"
26ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block#include "IDBBindingUtilities.h"
27ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block#include "IDBKey.h"
28dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include "JSDOMBinding.h"
2921939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "JSEventListener.h"
304576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include "JSOptionsObject.h"
31db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#include "JSTestCallback.h"
3221939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "JSTestObj.h"
3321939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "JSlog.h"
3421939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "KURL.h"
3528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#include "ScriptArguments.h"
3621939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "ScriptCallStack.h"
3728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#include "ScriptCallStackFactory.h"
3821939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "SerializedScriptValue.h"
3921939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "TestObj.h"
4021939df44de1705786c545cd1bf519d47250322dBen Murdoch#include <runtime/Error.h>
4121939df44de1705786c545cd1bf519d47250322dBen Murdoch#include <runtime/JSNumberCell.h>
4221939df44de1705786c545cd1bf519d47250322dBen Murdoch#include <runtime/JSString.h>
4321939df44de1705786c545cd1bf519d47250322dBen Murdoch#include <wtf/GetPtr.h>
4421939df44de1705786c545cd1bf519d47250322dBen Murdoch
4521939df44de1705786c545cd1bf519d47250322dBen Murdochusing namespace JSC;
4621939df44de1705786c545cd1bf519d47250322dBen Murdoch
4721939df44de1705786c545cd1bf519d47250322dBen Murdochnamespace WebCore {
4821939df44de1705786c545cd1bf519d47250322dBen Murdoch
4921939df44de1705786c545cd1bf519d47250322dBen MurdochASSERT_CLASS_FITS_IN_CELL(JSTestObj);
5021939df44de1705786c545cd1bf519d47250322dBen Murdoch
5121939df44de1705786c545cd1bf519d47250322dBen Murdoch/* Hash table */
5221939df44de1705786c545cd1bf519d47250322dBen Murdoch#if ENABLE(JIT)
5321939df44de1705786c545cd1bf519d47250322dBen Murdoch#define THUNK_GENERATOR(generator) , generator
5421939df44de1705786c545cd1bf519d47250322dBen Murdoch#else
5521939df44de1705786c545cd1bf519d47250322dBen Murdoch#define THUNK_GENERATOR(generator)
5621939df44de1705786c545cd1bf519d47250322dBen Murdoch#endif
5721939df44de1705786c545cd1bf519d47250322dBen Murdoch
58f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochstatic const HashTableValue JSTestObjTableValues[37] =
5921939df44de1705786c545cd1bf519d47250322dBen Murdoch{
606c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "readOnlyIntAttr", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyIntAttr), (intptr_t)0 THUNK_GENERATOR(0) },
616c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "readOnlyStringAttr", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyStringAttr), (intptr_t)0 THUNK_GENERATOR(0) },
626c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "readOnlyTestObjAttr", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyTestObjAttr), (intptr_t)0 THUNK_GENERATOR(0) },
634576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    { "shortAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjShortAttr), (intptr_t)setJSTestObjShortAttr THUNK_GENERATOR(0) },
644576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    { "unsignedShortAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUnsignedShortAttr), (intptr_t)setJSTestObjUnsignedShortAttr THUNK_GENERATOR(0) },
6521939df44de1705786c545cd1bf519d47250322dBen Murdoch    { "intAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjIntAttr), (intptr_t)setJSTestObjIntAttr THUNK_GENERATOR(0) },
6621939df44de1705786c545cd1bf519d47250322dBen Murdoch    { "longLongAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjLongLongAttr), (intptr_t)setJSTestObjLongLongAttr THUNK_GENERATOR(0) },
6721939df44de1705786c545cd1bf519d47250322dBen Murdoch    { "unsignedLongLongAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUnsignedLongLongAttr), (intptr_t)setJSTestObjUnsignedLongLongAttr THUNK_GENERATOR(0) },
6821939df44de1705786c545cd1bf519d47250322dBen Murdoch    { "stringAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttr), (intptr_t)setJSTestObjStringAttr THUNK_GENERATOR(0) },
6921939df44de1705786c545cd1bf519d47250322dBen Murdoch    { "testObjAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjTestObjAttr), (intptr_t)setJSTestObjTestObjAttr THUNK_GENERATOR(0) },
70db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    { "XMLObjAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjXMLObjAttr), (intptr_t)setJSTestObjXMLObjAttr THUNK_GENERATOR(0) },
7168513a70bcd92384395513322f1b801e7bf9c729Steve Block    { "create", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCreate), (intptr_t)setJSTestObjCreate THUNK_GENERATOR(0) },
7206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    { "reflectedStringAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedStringAttr), (intptr_t)setJSTestObjReflectedStringAttr THUNK_GENERATOR(0) },
7306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    { "reflectedIntegralAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedIntegralAttr), (intptr_t)setJSTestObjReflectedIntegralAttr THUNK_GENERATOR(0) },
74f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    { "reflectedUnsignedIntegralAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedUnsignedIntegralAttr), (intptr_t)setJSTestObjReflectedUnsignedIntegralAttr THUNK_GENERATOR(0) },
7506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    { "reflectedBooleanAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedBooleanAttr), (intptr_t)setJSTestObjReflectedBooleanAttr THUNK_GENERATOR(0) },
7606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    { "reflectedURLAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedURLAttr), (intptr_t)setJSTestObjReflectedURLAttr THUNK_GENERATOR(0) },
77e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    { "reflectedNonEmptyURLAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedNonEmptyURLAttr), (intptr_t)setJSTestObjReflectedNonEmptyURLAttr THUNK_GENERATOR(0) },
7806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    { "reflectedStringAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedStringAttr), (intptr_t)setJSTestObjReflectedStringAttr THUNK_GENERATOR(0) },
7906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    { "reflectedCustomIntegralAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomIntegralAttr), (intptr_t)setJSTestObjReflectedCustomIntegralAttr THUNK_GENERATOR(0) },
8006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    { "reflectedCustomBooleanAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomBooleanAttr), (intptr_t)setJSTestObjReflectedCustomBooleanAttr THUNK_GENERATOR(0) },
81e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    { "reflectedCustomURLAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomURLAttr), (intptr_t)setJSTestObjReflectedCustomURLAttr THUNK_GENERATOR(0) },
82e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    { "reflectedCustomNonEmptyURLAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomNonEmptyURLAttr), (intptr_t)setJSTestObjReflectedCustomNonEmptyURLAttr THUNK_GENERATOR(0) },
8321939df44de1705786c545cd1bf519d47250322dBen Murdoch    { "attrWithGetterException", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttrWithGetterException), (intptr_t)setJSTestObjAttrWithGetterException THUNK_GENERATOR(0) },
8406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    { "attrWithSetterException", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttrWithSetterException), (intptr_t)setJSTestObjAttrWithSetterException THUNK_GENERATOR(0) },
8506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    { "stringAttrWithGetterException", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttrWithGetterException), (intptr_t)setJSTestObjStringAttrWithGetterException THUNK_GENERATOR(0) },
8606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    { "stringAttrWithSetterException", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttrWithSetterException), (intptr_t)setJSTestObjStringAttrWithSetterException THUNK_GENERATOR(0) },
8721939df44de1705786c545cd1bf519d47250322dBen Murdoch    { "customAttr", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCustomAttr), (intptr_t)setJSTestObjCustomAttr THUNK_GENERATOR(0) },
886c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "scriptStringAttr", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjScriptStringAttr), (intptr_t)0 THUNK_GENERATOR(0) },
8906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#if ENABLE(Condition1)
9006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    { "conditionalAttr1", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr1), (intptr_t)setJSTestObjConditionalAttr1 THUNK_GENERATOR(0) },
9106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#endif
9206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#if ENABLE(Condition1) && ENABLE(Condition2)
9306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    { "conditionalAttr2", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr2), (intptr_t)setJSTestObjConditionalAttr2 THUNK_GENERATOR(0) },
9406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#endif
9506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#if ENABLE(Condition1) || ENABLE(Condition2)
9606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    { "conditionalAttr3", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr3), (intptr_t)setJSTestObjConditionalAttr3 THUNK_GENERATOR(0) },
9706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#endif
98545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    { "description", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjDescription), (intptr_t)0 THUNK_GENERATOR(0) },
99545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    { "id", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjId), (intptr_t)setJSTestObjId THUNK_GENERATOR(0) },
100545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    { "hash", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjHash), (intptr_t)0 THUNK_GENERATOR(0) },
1016c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "constructor", DontEnum | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConstructor), (intptr_t)0 THUNK_GENERATOR(0) },
10221939df44de1705786c545cd1bf519d47250322dBen Murdoch    { 0, 0, 0, 0 THUNK_GENERATOR(0) }
10321939df44de1705786c545cd1bf519d47250322dBen Murdoch};
10421939df44de1705786c545cd1bf519d47250322dBen Murdoch
10521939df44de1705786c545cd1bf519d47250322dBen Murdoch#undef THUNK_GENERATOR
1064576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangstatic JSC_CONST_HASHTABLE HashTable JSTestObjTable = { 133, 127, JSTestObjTableValues, 0 };
10721939df44de1705786c545cd1bf519d47250322dBen Murdoch/* Hash table for constructor */
10821939df44de1705786c545cd1bf519d47250322dBen Murdoch#if ENABLE(JIT)
10921939df44de1705786c545cd1bf519d47250322dBen Murdoch#define THUNK_GENERATOR(generator) , generator
11021939df44de1705786c545cd1bf519d47250322dBen Murdoch#else
11121939df44de1705786c545cd1bf519d47250322dBen Murdoch#define THUNK_GENERATOR(generator)
11221939df44de1705786c545cd1bf519d47250322dBen Murdoch#endif
11321939df44de1705786c545cd1bf519d47250322dBen Murdoch
1140617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsenstatic const HashTableValue JSTestObjConstructorTableValues[12] =
11521939df44de1705786c545cd1bf519d47250322dBen Murdoch{
116967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    { "CONST_VALUE_0", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_0), (intptr_t)0 THUNK_GENERATOR(0) },
117967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    { "CONST_VALUE_1", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_1), (intptr_t)0 THUNK_GENERATOR(0) },
118967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    { "CONST_VALUE_2", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_2), (intptr_t)0 THUNK_GENERATOR(0) },
119967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    { "CONST_VALUE_4", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_4), (intptr_t)0 THUNK_GENERATOR(0) },
120967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    { "CONST_VALUE_8", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_8), (intptr_t)0 THUNK_GENERATOR(0) },
1210617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    { "CONST_VALUE_9", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_9), (intptr_t)0 THUNK_GENERATOR(0) },
1220617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    { "CONST_VALUE_10", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_10), (intptr_t)0 THUNK_GENERATOR(0) },
1230617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    { "CONST_VALUE_11", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_11), (intptr_t)0 THUNK_GENERATOR(0) },
1240617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    { "CONST_VALUE_12", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_12), (intptr_t)0 THUNK_GENERATOR(0) },
1250617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    { "CONST_VALUE_13", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_13), (intptr_t)0 THUNK_GENERATOR(0) },
1260617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    { "CONST_VALUE_14", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_14), (intptr_t)0 THUNK_GENERATOR(0) },
12721939df44de1705786c545cd1bf519d47250322dBen Murdoch    { 0, 0, 0, 0 THUNK_GENERATOR(0) }
12821939df44de1705786c545cd1bf519d47250322dBen Murdoch};
12921939df44de1705786c545cd1bf519d47250322dBen Murdoch
13021939df44de1705786c545cd1bf519d47250322dBen Murdoch#undef THUNK_GENERATOR
1310617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsenstatic JSC_CONST_HASHTABLE HashTable JSTestObjConstructorTable = { 33, 31, JSTestObjConstructorTableValues, 0 };
132967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch
133967717af5423377c967781471ee106e2bb4e11c8Ben MurdochCOMPILE_ASSERT(0 == TestObj::CONST_VALUE_0, TestObjEnumCONST_VALUE_0IsWrongUseDontCheckEnums);
134967717af5423377c967781471ee106e2bb4e11c8Ben MurdochCOMPILE_ASSERT(1 == TestObj::CONST_VALUE_1, TestObjEnumCONST_VALUE_1IsWrongUseDontCheckEnums);
135967717af5423377c967781471ee106e2bb4e11c8Ben MurdochCOMPILE_ASSERT(2 == TestObj::CONST_VALUE_2, TestObjEnumCONST_VALUE_2IsWrongUseDontCheckEnums);
136967717af5423377c967781471ee106e2bb4e11c8Ben MurdochCOMPILE_ASSERT(4 == TestObj::CONST_VALUE_4, TestObjEnumCONST_VALUE_4IsWrongUseDontCheckEnums);
137967717af5423377c967781471ee106e2bb4e11c8Ben MurdochCOMPILE_ASSERT(8 == TestObj::CONST_VALUE_8, TestObjEnumCONST_VALUE_8IsWrongUseDontCheckEnums);
1380617145a89917ae7735fe1c9538688ab9a577df5Kristian MonsenCOMPILE_ASSERT(-1 == TestObj::CONST_VALUE_9, TestObjEnumCONST_VALUE_9IsWrongUseDontCheckEnums);
1390617145a89917ae7735fe1c9538688ab9a577df5Kristian MonsenCOMPILE_ASSERT("my constant string" == TestObj::CONST_VALUE_10, TestObjEnumCONST_VALUE_10IsWrongUseDontCheckEnums);
1400617145a89917ae7735fe1c9538688ab9a577df5Kristian MonsenCOMPILE_ASSERT(0xffffffff == TestObj::CONST_VALUE_11, TestObjEnumCONST_VALUE_11IsWrongUseDontCheckEnums);
1410617145a89917ae7735fe1c9538688ab9a577df5Kristian MonsenCOMPILE_ASSERT(0x01 == TestObj::CONST_VALUE_12, TestObjEnumCONST_VALUE_12IsWrongUseDontCheckEnums);
1420617145a89917ae7735fe1c9538688ab9a577df5Kristian MonsenCOMPILE_ASSERT(0X20 == TestObj::CONST_VALUE_13, TestObjEnumCONST_VALUE_13IsWrongUseDontCheckEnums);
1430617145a89917ae7735fe1c9538688ab9a577df5Kristian MonsenCOMPILE_ASSERT(0x1abc == TestObj::CONST_VALUE_14, TestObjEnumCONST_VALUE_14IsWrongUseDontCheckEnums);
144967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch
14521939df44de1705786c545cd1bf519d47250322dBen Murdochclass JSTestObjConstructor : public DOMConstructorObject {
14621939df44de1705786c545cd1bf519d47250322dBen Murdochpublic:
14706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObjConstructor(JSC::ExecState*, JSDOMGlobalObject*);
14806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
14906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier&, JSC::PropertySlot&);
15006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    virtual bool getOwnPropertyDescriptor(JSC::ExecState*, const JSC::Identifier&, JSC::PropertyDescriptor&);
15106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    static const JSC::ClassInfo s_info;
1522bde8e466a4451c7319e3a072d118917957d6554Steve Block    static PassRefPtr<JSC::Structure> createStructure(JSC::JSGlobalData& globalData, JSC::JSValue prototype)
15321939df44de1705786c545cd1bf519d47250322dBen Murdoch    {
1542bde8e466a4451c7319e3a072d118917957d6554Steve Block        return JSC::Structure::create(globalData, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
15521939df44de1705786c545cd1bf519d47250322dBen Murdoch    }
15621939df44de1705786c545cd1bf519d47250322dBen Murdochprotected:
15706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | JSC::ImplementsHasInstance | DOMConstructorObject::StructureFlags;
15821939df44de1705786c545cd1bf519d47250322dBen Murdoch};
15921939df44de1705786c545cd1bf519d47250322dBen Murdoch
16081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochconst ClassInfo JSTestObjConstructor::s_info = { "TestObjConstructor", &DOMConstructorObject::s_info, &JSTestObjConstructorTable, 0 };
16121939df44de1705786c545cd1bf519d47250322dBen Murdoch
16206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenJSTestObjConstructor::JSTestObjConstructor(ExecState* exec, JSDOMGlobalObject* globalObject)
1632bde8e466a4451c7319e3a072d118917957d6554Steve Block    : DOMConstructorObject(JSTestObjConstructor::createStructure(globalObject->globalData(), globalObject->objectPrototype()), globalObject)
16406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
16581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    ASSERT(inherits(&s_info));
16681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    putDirect(exec->globalData(), exec->propertyNames().prototype, JSTestObjPrototype::self(exec, globalObject), DontDelete | ReadOnly);
16706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
16806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
16921939df44de1705786c545cd1bf519d47250322dBen Murdochbool JSTestObjConstructor::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
17021939df44de1705786c545cd1bf519d47250322dBen Murdoch{
17121939df44de1705786c545cd1bf519d47250322dBen Murdoch    return getStaticValueSlot<JSTestObjConstructor, DOMObject>(exec, &JSTestObjConstructorTable, this, propertyName, slot);
17221939df44de1705786c545cd1bf519d47250322dBen Murdoch}
17321939df44de1705786c545cd1bf519d47250322dBen Murdoch
17421939df44de1705786c545cd1bf519d47250322dBen Murdochbool JSTestObjConstructor::getOwnPropertyDescriptor(ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor)
17521939df44de1705786c545cd1bf519d47250322dBen Murdoch{
17621939df44de1705786c545cd1bf519d47250322dBen Murdoch    return getStaticValueDescriptor<JSTestObjConstructor, DOMObject>(exec, &JSTestObjConstructorTable, this, propertyName, descriptor);
17721939df44de1705786c545cd1bf519d47250322dBen Murdoch}
17821939df44de1705786c545cd1bf519d47250322dBen Murdoch
17921939df44de1705786c545cd1bf519d47250322dBen Murdoch/* Hash table for prototype */
18021939df44de1705786c545cd1bf519d47250322dBen Murdoch#if ENABLE(JIT)
18121939df44de1705786c545cd1bf519d47250322dBen Murdoch#define THUNK_GENERATOR(generator) , generator
18221939df44de1705786c545cd1bf519d47250322dBen Murdoch#else
18321939df44de1705786c545cd1bf519d47250322dBen Murdoch#define THUNK_GENERATOR(generator)
18421939df44de1705786c545cd1bf519d47250322dBen Murdoch#endif
18521939df44de1705786c545cd1bf519d47250322dBen Murdoch
1864576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangstatic const HashTableValue JSTestObjPrototypeTableValues[48] =
1876c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{
188967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    { "CONST_VALUE_0", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_0), (intptr_t)0 THUNK_GENERATOR(0) },
189967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    { "CONST_VALUE_1", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_1), (intptr_t)0 THUNK_GENERATOR(0) },
190967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    { "CONST_VALUE_2", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_2), (intptr_t)0 THUNK_GENERATOR(0) },
191967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    { "CONST_VALUE_4", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_4), (intptr_t)0 THUNK_GENERATOR(0) },
192967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    { "CONST_VALUE_8", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_8), (intptr_t)0 THUNK_GENERATOR(0) },
1930617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    { "CONST_VALUE_9", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_9), (intptr_t)0 THUNK_GENERATOR(0) },
1940617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    { "CONST_VALUE_10", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_10), (intptr_t)0 THUNK_GENERATOR(0) },
1950617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    { "CONST_VALUE_11", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_11), (intptr_t)0 THUNK_GENERATOR(0) },
1960617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    { "CONST_VALUE_12", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_12), (intptr_t)0 THUNK_GENERATOR(0) },
1970617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    { "CONST_VALUE_13", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_13), (intptr_t)0 THUNK_GENERATOR(0) },
1980617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    { "CONST_VALUE_14", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_14), (intptr_t)0 THUNK_GENERATOR(0) },
1996c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "voidMethod", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionVoidMethod), (intptr_t)0 THUNK_GENERATOR(0) },
2006c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "voidMethodWithArgs", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionVoidMethodWithArgs), (intptr_t)3 THUNK_GENERATOR(0) },
2016c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "intMethod", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionIntMethod), (intptr_t)0 THUNK_GENERATOR(0) },
2026c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "intMethodWithArgs", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionIntMethodWithArgs), (intptr_t)3 THUNK_GENERATOR(0) },
2036c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "objMethod", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionObjMethod), (intptr_t)0 THUNK_GENERATOR(0) },
2046c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "objMethodWithArgs", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionObjMethodWithArgs), (intptr_t)3 THUNK_GENERATOR(0) },
2056c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "methodThatRequiresAllArgs", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodThatRequiresAllArgs), (intptr_t)2 THUNK_GENERATOR(0) },
2066c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "methodThatRequiresAllArgsAndThrows", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows), (intptr_t)2 THUNK_GENERATOR(0) },
2076c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "serializedValue", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionSerializedValue), (intptr_t)1 THUNK_GENERATOR(0) },
208ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    { "idbKey", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionIdbKey), (intptr_t)1 THUNK_GENERATOR(0) },
2094576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    { "optionsObject", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionOptionsObject), (intptr_t)2 THUNK_GENERATOR(0) },
2106c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "methodWithException", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithException), (intptr_t)0 THUNK_GENERATOR(0) },
2116c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "customMethod", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionCustomMethod), (intptr_t)0 THUNK_GENERATOR(0) },
2126c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "customMethodWithArgs", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionCustomMethodWithArgs), (intptr_t)3 THUNK_GENERATOR(0) },
2136c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "customArgsAndException", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionCustomArgsAndException), (intptr_t)1 THUNK_GENERATOR(0) },
2146c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "addEventListener", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionAddEventListener), (intptr_t)3 THUNK_GENERATOR(0) },
2156c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "removeEventListener", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionRemoveEventListener), (intptr_t)3 THUNK_GENERATOR(0) },
2166c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "withDynamicFrame", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithDynamicFrame), (intptr_t)0 THUNK_GENERATOR(0) },
2176c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "withDynamicFrameAndArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithDynamicFrameAndArg), (intptr_t)1 THUNK_GENERATOR(0) },
2186c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "withDynamicFrameAndOptionalArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithDynamicFrameAndOptionalArg), (intptr_t)2 THUNK_GENERATOR(0) },
2196c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "withDynamicFrameAndUserGesture", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithDynamicFrameAndUserGesture), (intptr_t)1 THUNK_GENERATOR(0) },
2206c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "withDynamicFrameAndUserGestureASAD", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithDynamicFrameAndUserGestureASAD), (intptr_t)2 THUNK_GENERATOR(0) },
2216c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "withScriptStateVoid", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptStateVoid), (intptr_t)0 THUNK_GENERATOR(0) },
2226c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "withScriptStateObj", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptStateObj), (intptr_t)0 THUNK_GENERATOR(0) },
2236c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "withScriptStateVoidException", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptStateVoidException), (intptr_t)0 THUNK_GENERATOR(0) },
2246c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "withScriptStateObjException", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptStateObjException), (intptr_t)0 THUNK_GENERATOR(0) },
225545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    { "withScriptExecutionContext", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptExecutionContext), (intptr_t)0 THUNK_GENERATOR(0) },
2266c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "methodWithOptionalArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithOptionalArg), (intptr_t)1 THUNK_GENERATOR(0) },
2276c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "methodWithNonOptionalArgAndOptionalArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArg), (intptr_t)2 THUNK_GENERATOR(0) },
2286c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "methodWithNonOptionalArgAndTwoOptionalArgs", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgs), (intptr_t)3 THUNK_GENERATOR(0) },
229db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    { "methodWithCallbackArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithCallbackArg), (intptr_t)1 THUNK_GENERATOR(0) },
230db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    { "methodWithNonCallbackArgAndCallbackArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg), (intptr_t)2 THUNK_GENERATOR(0) },
231db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    { "methodWithCallbackAndOptionalArg", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArg), (intptr_t)1 THUNK_GENERATOR(0) },
2326c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    { "overloadedMethod", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionOverloadedMethod), (intptr_t)2 THUNK_GENERATOR(0) },
2335abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    { "classMethod", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionClassMethod), (intptr_t)0 THUNK_GENERATOR(0) },
2345abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    { "classMethodWithOptional", DontDelete | Function, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionClassMethodWithOptional), (intptr_t)1 THUNK_GENERATOR(0) },
23521939df44de1705786c545cd1bf519d47250322dBen Murdoch    { 0, 0, 0, 0 THUNK_GENERATOR(0) }
23621939df44de1705786c545cd1bf519d47250322dBen Murdoch};
23721939df44de1705786c545cd1bf519d47250322dBen Murdoch
23821939df44de1705786c545cd1bf519d47250322dBen Murdoch#undef THUNK_GENERATOR
2394576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangstatic JSC_CONST_HASHTABLE HashTable JSTestObjPrototypeTable = { 136, 127, JSTestObjPrototypeTableValues, 0 };
24081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochconst ClassInfo JSTestObjPrototype::s_info = { "TestObjPrototype", &JSC::JSObjectWithGlobalObject::s_info, &JSTestObjPrototypeTable, 0 };
24121939df44de1705786c545cd1bf519d47250322dBen Murdoch
24221939df44de1705786c545cd1bf519d47250322dBen MurdochJSObject* JSTestObjPrototype::self(ExecState* exec, JSGlobalObject* globalObject)
24321939df44de1705786c545cd1bf519d47250322dBen Murdoch{
24421939df44de1705786c545cd1bf519d47250322dBen Murdoch    return getDOMPrototype<JSTestObj>(exec, globalObject);
24521939df44de1705786c545cd1bf519d47250322dBen Murdoch}
24621939df44de1705786c545cd1bf519d47250322dBen Murdoch
24721939df44de1705786c545cd1bf519d47250322dBen Murdochbool JSTestObjPrototype::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
24821939df44de1705786c545cd1bf519d47250322dBen Murdoch{
249967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    return getStaticPropertySlot<JSTestObjPrototype, JSObject>(exec, &JSTestObjPrototypeTable, this, propertyName, slot);
25021939df44de1705786c545cd1bf519d47250322dBen Murdoch}
25121939df44de1705786c545cd1bf519d47250322dBen Murdoch
25221939df44de1705786c545cd1bf519d47250322dBen Murdochbool JSTestObjPrototype::getOwnPropertyDescriptor(ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor)
25321939df44de1705786c545cd1bf519d47250322dBen Murdoch{
254967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    return getStaticPropertyDescriptor<JSTestObjPrototype, JSObject>(exec, &JSTestObjPrototypeTable, this, propertyName, descriptor);
25521939df44de1705786c545cd1bf519d47250322dBen Murdoch}
25621939df44de1705786c545cd1bf519d47250322dBen Murdoch
25781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochconst ClassInfo JSTestObj::s_info = { "TestObj", &DOMObjectWithGlobalPointer::s_info, &JSTestObjTable, 0 };
25821939df44de1705786c545cd1bf519d47250322dBen Murdoch
25921939df44de1705786c545cd1bf519d47250322dBen MurdochJSTestObj::JSTestObj(NonNullPassRefPtr<Structure> structure, JSDOMGlobalObject* globalObject, PassRefPtr<TestObj> impl)
26021939df44de1705786c545cd1bf519d47250322dBen Murdoch    : DOMObjectWithGlobalPointer(structure, globalObject)
26121939df44de1705786c545cd1bf519d47250322dBen Murdoch    , m_impl(impl)
26221939df44de1705786c545cd1bf519d47250322dBen Murdoch{
26381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    ASSERT(inherits(&s_info));
26421939df44de1705786c545cd1bf519d47250322dBen Murdoch}
26521939df44de1705786c545cd1bf519d47250322dBen Murdoch
26621939df44de1705786c545cd1bf519d47250322dBen MurdochJSObject* JSTestObj::createPrototype(ExecState* exec, JSGlobalObject* globalObject)
26721939df44de1705786c545cd1bf519d47250322dBen Murdoch{
2682bde8e466a4451c7319e3a072d118917957d6554Steve Block    return new (exec) JSTestObjPrototype(globalObject, JSTestObjPrototype::createStructure(globalObject->globalData(), globalObject->objectPrototype()));
26921939df44de1705786c545cd1bf519d47250322dBen Murdoch}
27021939df44de1705786c545cd1bf519d47250322dBen Murdoch
27121939df44de1705786c545cd1bf519d47250322dBen Murdochbool JSTestObj::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
27221939df44de1705786c545cd1bf519d47250322dBen Murdoch{
27321939df44de1705786c545cd1bf519d47250322dBen Murdoch    return getStaticValueSlot<JSTestObj, Base>(exec, &JSTestObjTable, this, propertyName, slot);
27421939df44de1705786c545cd1bf519d47250322dBen Murdoch}
27521939df44de1705786c545cd1bf519d47250322dBen Murdoch
27621939df44de1705786c545cd1bf519d47250322dBen Murdochbool JSTestObj::getOwnPropertyDescriptor(ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor)
27721939df44de1705786c545cd1bf519d47250322dBen Murdoch{
27821939df44de1705786c545cd1bf519d47250322dBen Murdoch    return getStaticValueDescriptor<JSTestObj, Base>(exec, &JSTestObjTable, this, propertyName, descriptor);
27921939df44de1705786c545cd1bf519d47250322dBen Murdoch}
28021939df44de1705786c545cd1bf519d47250322dBen Murdoch
28121939df44de1705786c545cd1bf519d47250322dBen MurdochJSValue jsTestObjReadOnlyIntAttr(ExecState* exec, JSValue slotBase, const Identifier&)
28221939df44de1705786c545cd1bf519d47250322dBen Murdoch{
28321939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
28421939df44de1705786c545cd1bf519d47250322dBen Murdoch    UNUSED_PARAM(exec);
28521939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
2864576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSValue result = jsNumber(imp->readOnlyIntAttr());
28721939df44de1705786c545cd1bf519d47250322dBen Murdoch    return result;
28821939df44de1705786c545cd1bf519d47250322dBen Murdoch}
28921939df44de1705786c545cd1bf519d47250322dBen Murdoch
29021939df44de1705786c545cd1bf519d47250322dBen MurdochJSValue jsTestObjReadOnlyStringAttr(ExecState* exec, JSValue slotBase, const Identifier&)
29121939df44de1705786c545cd1bf519d47250322dBen Murdoch{
29221939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
29321939df44de1705786c545cd1bf519d47250322dBen Murdoch    UNUSED_PARAM(exec);
29421939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
29521939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSValue result = jsString(exec, imp->readOnlyStringAttr());
29621939df44de1705786c545cd1bf519d47250322dBen Murdoch    return result;
29721939df44de1705786c545cd1bf519d47250322dBen Murdoch}
29821939df44de1705786c545cd1bf519d47250322dBen Murdoch
29921939df44de1705786c545cd1bf519d47250322dBen MurdochJSValue jsTestObjReadOnlyTestObjAttr(ExecState* exec, JSValue slotBase, const Identifier&)
30021939df44de1705786c545cd1bf519d47250322dBen Murdoch{
30121939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
30221939df44de1705786c545cd1bf519d47250322dBen Murdoch    UNUSED_PARAM(exec);
30321939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
30421939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->readOnlyTestObjAttr()));
30521939df44de1705786c545cd1bf519d47250322dBen Murdoch    return result;
30621939df44de1705786c545cd1bf519d47250322dBen Murdoch}
30721939df44de1705786c545cd1bf519d47250322dBen Murdoch
3084576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) WangJSValue jsTestObjShortAttr(ExecState* exec, JSValue slotBase, const Identifier&)
3094576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{
3104576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
3114576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    UNUSED_PARAM(exec);
3124576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
3134576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSValue result = jsNumber(imp->shortAttr());
3144576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    return result;
3154576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang}
3164576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
3174576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) WangJSValue jsTestObjUnsignedShortAttr(ExecState* exec, JSValue slotBase, const Identifier&)
3184576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{
3194576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
3204576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    UNUSED_PARAM(exec);
3214576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
3224576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSValue result = jsNumber(imp->unsignedShortAttr());
3234576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    return result;
3244576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang}
3254576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
32621939df44de1705786c545cd1bf519d47250322dBen MurdochJSValue jsTestObjIntAttr(ExecState* exec, JSValue slotBase, const Identifier&)
32721939df44de1705786c545cd1bf519d47250322dBen Murdoch{
32821939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
32921939df44de1705786c545cd1bf519d47250322dBen Murdoch    UNUSED_PARAM(exec);
33021939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
3314576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSValue result = jsNumber(imp->intAttr());
33221939df44de1705786c545cd1bf519d47250322dBen Murdoch    return result;
33321939df44de1705786c545cd1bf519d47250322dBen Murdoch}
33421939df44de1705786c545cd1bf519d47250322dBen Murdoch
33521939df44de1705786c545cd1bf519d47250322dBen MurdochJSValue jsTestObjLongLongAttr(ExecState* exec, JSValue slotBase, const Identifier&)
33621939df44de1705786c545cd1bf519d47250322dBen Murdoch{
33721939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
33821939df44de1705786c545cd1bf519d47250322dBen Murdoch    UNUSED_PARAM(exec);
33921939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
3404576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSValue result = jsNumber(imp->longLongAttr());
34121939df44de1705786c545cd1bf519d47250322dBen Murdoch    return result;
34221939df44de1705786c545cd1bf519d47250322dBen Murdoch}
34321939df44de1705786c545cd1bf519d47250322dBen Murdoch
34421939df44de1705786c545cd1bf519d47250322dBen MurdochJSValue jsTestObjUnsignedLongLongAttr(ExecState* exec, JSValue slotBase, const Identifier&)
34521939df44de1705786c545cd1bf519d47250322dBen Murdoch{
34621939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
34721939df44de1705786c545cd1bf519d47250322dBen Murdoch    UNUSED_PARAM(exec);
34821939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
3494576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSValue result = jsNumber(imp->unsignedLongLongAttr());
35021939df44de1705786c545cd1bf519d47250322dBen Murdoch    return result;
35121939df44de1705786c545cd1bf519d47250322dBen Murdoch}
35221939df44de1705786c545cd1bf519d47250322dBen Murdoch
35321939df44de1705786c545cd1bf519d47250322dBen MurdochJSValue jsTestObjStringAttr(ExecState* exec, JSValue slotBase, const Identifier&)
35421939df44de1705786c545cd1bf519d47250322dBen Murdoch{
35521939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
35621939df44de1705786c545cd1bf519d47250322dBen Murdoch    UNUSED_PARAM(exec);
35721939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
35821939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSValue result = jsString(exec, imp->stringAttr());
35921939df44de1705786c545cd1bf519d47250322dBen Murdoch    return result;
36021939df44de1705786c545cd1bf519d47250322dBen Murdoch}
36121939df44de1705786c545cd1bf519d47250322dBen Murdoch
36221939df44de1705786c545cd1bf519d47250322dBen MurdochJSValue jsTestObjTestObjAttr(ExecState* exec, JSValue slotBase, const Identifier&)
36321939df44de1705786c545cd1bf519d47250322dBen Murdoch{
36421939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
36521939df44de1705786c545cd1bf519d47250322dBen Murdoch    UNUSED_PARAM(exec);
36621939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
36721939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->testObjAttr()));
36821939df44de1705786c545cd1bf519d47250322dBen Murdoch    return result;
36921939df44de1705786c545cd1bf519d47250322dBen Murdoch}
37021939df44de1705786c545cd1bf519d47250322dBen Murdoch
371db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve BlockJSValue jsTestObjXMLObjAttr(ExecState* exec, JSValue slotBase, const Identifier&)
372db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{
373db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
374db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    UNUSED_PARAM(exec);
375db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
376db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->xmlObjAttr()));
377db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    return result;
378db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block}
379db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
380db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve BlockJSValue jsTestObjCreate(ExecState* exec, JSValue slotBase, const Identifier&)
381db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{
382db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
383db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    UNUSED_PARAM(exec);
384db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
385db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    JSValue result = jsBoolean(imp->isCreate());
386db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    return result;
387db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block}
388db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
38906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenJSValue jsTestObjReflectedStringAttr(ExecState* exec, JSValue slotBase, const Identifier&)
39006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
39106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
39206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    UNUSED_PARAM(exec);
39306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
39406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSValue result = jsString(exec, imp->getAttribute(WebCore::HTMLNames::reflectedstringattrAttr));
39506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    return result;
39606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
39706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
39806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenJSValue jsTestObjReflectedIntegralAttr(ExecState* exec, JSValue slotBase, const Identifier&)
39906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
40006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
40106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    UNUSED_PARAM(exec);
40206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
4034576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSValue result = jsNumber(imp->getIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr));
40406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    return result;
40506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
40606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
407f05b935882198ccf7d81675736e3aeb089c5113aBen MurdochJSValue jsTestObjReflectedUnsignedIntegralAttr(ExecState* exec, JSValue slotBase, const Identifier&)
408f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{
409f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
410f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    UNUSED_PARAM(exec);
411f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
412f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    JSValue result = jsNumber(std::max(0, imp->getIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr)));
413f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    return result;
414f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch}
415f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
41606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenJSValue jsTestObjReflectedBooleanAttr(ExecState* exec, JSValue slotBase, const Identifier&)
41706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
41806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
41906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    UNUSED_PARAM(exec);
42006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
42106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSValue result = jsBoolean(imp->hasAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr));
42206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    return result;
42306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
42406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
42506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenJSValue jsTestObjReflectedURLAttr(ExecState* exec, JSValue slotBase, const Identifier&)
42606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
42706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
42806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    UNUSED_PARAM(exec);
42906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
43006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSValue result = jsString(exec, imp->getURLAttribute(WebCore::HTMLNames::reflectedurlattrAttr));
43106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    return result;
43206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
43306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
434e458d70a0d18538346f41b503114c9ebe6b2ce12Leon ClarkeJSValue jsTestObjReflectedNonEmptyURLAttr(ExecState* exec, JSValue slotBase, const Identifier&)
435e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{
436e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
437e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    UNUSED_PARAM(exec);
438e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
439e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    JSValue result = jsString(exec, imp->getNonEmptyURLAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr));
440e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    return result;
441e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke}
442e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
44306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenJSValue jsTestObjReflectedStringAttr(ExecState* exec, JSValue slotBase, const Identifier&)
44406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
44506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
44606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    UNUSED_PARAM(exec);
44706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
44806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSValue result = jsString(exec, imp->getAttribute(WebCore::HTMLNames::customContentStringAttrAttr));
44906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    return result;
45006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
45106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
45206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenJSValue jsTestObjReflectedCustomIntegralAttr(ExecState* exec, JSValue slotBase, const Identifier&)
45306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
45406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
45506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    UNUSED_PARAM(exec);
45606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
4574576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSValue result = jsNumber(imp->getIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr));
45806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    return result;
45906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
46006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
46106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenJSValue jsTestObjReflectedCustomBooleanAttr(ExecState* exec, JSValue slotBase, const Identifier&)
46206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
46306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
46406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    UNUSED_PARAM(exec);
46506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
46606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSValue result = jsBoolean(imp->hasAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr));
46706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    return result;
46806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
46906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
470e458d70a0d18538346f41b503114c9ebe6b2ce12Leon ClarkeJSValue jsTestObjReflectedCustomURLAttr(ExecState* exec, JSValue slotBase, const Identifier&)
47121939df44de1705786c545cd1bf519d47250322dBen Murdoch{
47221939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
47321939df44de1705786c545cd1bf519d47250322dBen Murdoch    UNUSED_PARAM(exec);
47421939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
47506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSValue result = jsString(exec, imp->getURLAttribute(WebCore::HTMLNames::customContentURLAttrAttr));
47606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    return result;
47706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
47806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
479e458d70a0d18538346f41b503114c9ebe6b2ce12Leon ClarkeJSValue jsTestObjReflectedCustomNonEmptyURLAttr(ExecState* exec, JSValue slotBase, const Identifier&)
480e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{
481e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
482e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    UNUSED_PARAM(exec);
483e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
484e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    JSValue result = jsString(exec, imp->getNonEmptyURLAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr));
485e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    return result;
486e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke}
487e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
48806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenJSValue jsTestObjAttrWithGetterException(ExecState* exec, JSValue slotBase, const Identifier&)
48906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
49006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
49106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    ExceptionCode ec = 0;
49206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
4934576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSC::JSValue result = jsNumber(imp->attrWithGetterException(ec));
49406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    setDOMException(exec, ec);
49521939df44de1705786c545cd1bf519d47250322dBen Murdoch    return result;
49621939df44de1705786c545cd1bf519d47250322dBen Murdoch}
49721939df44de1705786c545cd1bf519d47250322dBen Murdoch
49821939df44de1705786c545cd1bf519d47250322dBen MurdochJSValue jsTestObjAttrWithSetterException(ExecState* exec, JSValue slotBase, const Identifier&)
49921939df44de1705786c545cd1bf519d47250322dBen Murdoch{
50021939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
50106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    UNUSED_PARAM(exec);
50206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
5034576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSValue result = jsNumber(imp->attrWithSetterException());
50406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    return result;
50506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
50606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
50706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenJSValue jsTestObjStringAttrWithGetterException(ExecState* exec, JSValue slotBase, const Identifier&)
50806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
50906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
5106c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    ExceptionCode ec = 0;
51121939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
51206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSC::JSValue result = jsString(exec, imp->stringAttrWithGetterException(ec));
5136c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    setDOMException(exec, ec);
51421939df44de1705786c545cd1bf519d47250322dBen Murdoch    return result;
51521939df44de1705786c545cd1bf519d47250322dBen Murdoch}
51621939df44de1705786c545cd1bf519d47250322dBen Murdoch
51706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenJSValue jsTestObjStringAttrWithSetterException(ExecState* exec, JSValue slotBase, const Identifier&)
51821939df44de1705786c545cd1bf519d47250322dBen Murdoch{
51921939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
52021939df44de1705786c545cd1bf519d47250322dBen Murdoch    UNUSED_PARAM(exec);
52121939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
52206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSValue result = jsString(exec, imp->stringAttrWithSetterException());
52321939df44de1705786c545cd1bf519d47250322dBen Murdoch    return result;
52421939df44de1705786c545cd1bf519d47250322dBen Murdoch}
52521939df44de1705786c545cd1bf519d47250322dBen Murdoch
52621939df44de1705786c545cd1bf519d47250322dBen MurdochJSValue jsTestObjCustomAttr(ExecState* exec, JSValue slotBase, const Identifier&)
52721939df44de1705786c545cd1bf519d47250322dBen Murdoch{
52821939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
52921939df44de1705786c545cd1bf519d47250322dBen Murdoch    return castedThis->customAttr(exec);
53021939df44de1705786c545cd1bf519d47250322dBen Murdoch}
53121939df44de1705786c545cd1bf519d47250322dBen Murdoch
53221939df44de1705786c545cd1bf519d47250322dBen MurdochJSValue jsTestObjScriptStringAttr(ExecState* exec, JSValue slotBase, const Identifier&)
53321939df44de1705786c545cd1bf519d47250322dBen Murdoch{
53421939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
53521939df44de1705786c545cd1bf519d47250322dBen Murdoch    UNUSED_PARAM(exec);
53621939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
53721939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSValue result = jsOwnedStringOrNull(exec, imp->scriptStringAttr());
53821939df44de1705786c545cd1bf519d47250322dBen Murdoch    return result;
53921939df44de1705786c545cd1bf519d47250322dBen Murdoch}
54021939df44de1705786c545cd1bf519d47250322dBen Murdoch
54106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#if ENABLE(Condition1)
54206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenJSValue jsTestObjConditionalAttr1(ExecState* exec, JSValue slotBase, const Identifier&)
54306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
54406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
54506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    UNUSED_PARAM(exec);
54606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
5474576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSValue result = jsNumber(imp->conditionalAttr1());
54806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    return result;
54906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
55006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#endif
55106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
55206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#if ENABLE(Condition1) && ENABLE(Condition2)
55306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenJSValue jsTestObjConditionalAttr2(ExecState* exec, JSValue slotBase, const Identifier&)
55406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
55506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
55606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    UNUSED_PARAM(exec);
55706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
5584576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSValue result = jsNumber(imp->conditionalAttr2());
55906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    return result;
56006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
56106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#endif
56206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
56306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#if ENABLE(Condition1) || ENABLE(Condition2)
56406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenJSValue jsTestObjConditionalAttr3(ExecState* exec, JSValue slotBase, const Identifier&)
56506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
56606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
56706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    UNUSED_PARAM(exec);
56806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
5694576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSValue result = jsNumber(imp->conditionalAttr3());
57006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    return result;
57106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
57206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#endif
57306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
574545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSValue jsTestObjDescription(ExecState* exec, JSValue slotBase, const Identifier&)
575545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
576545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
577545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    UNUSED_PARAM(exec);
578545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
5794576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSValue result = jsNumber(imp->description());
580545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return result;
581545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
582545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
583545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSValue jsTestObjId(ExecState* exec, JSValue slotBase, const Identifier&)
584545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
585545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
586545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    UNUSED_PARAM(exec);
587545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
5884576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSValue result = jsNumber(imp->id());
589545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return result;
590545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
591545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
592545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochJSValue jsTestObjHash(ExecState* exec, JSValue slotBase, const Identifier&)
593545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
594545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
595545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    UNUSED_PARAM(exec);
596545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
597545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    JSValue result = jsString(exec, imp->hash());
598545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return result;
599545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
600545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
60121939df44de1705786c545cd1bf519d47250322dBen MurdochJSValue jsTestObjConstructor(ExecState* exec, JSValue slotBase, const Identifier&)
60221939df44de1705786c545cd1bf519d47250322dBen Murdoch{
60321939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* domObject = static_cast<JSTestObj*>(asObject(slotBase));
60421939df44de1705786c545cd1bf519d47250322dBen Murdoch    return JSTestObj::getConstructor(exec, domObject->globalObject());
60521939df44de1705786c545cd1bf519d47250322dBen Murdoch}
606ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
60721939df44de1705786c545cd1bf519d47250322dBen Murdochvoid JSTestObj::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
60821939df44de1705786c545cd1bf519d47250322dBen Murdoch{
60921939df44de1705786c545cd1bf519d47250322dBen Murdoch    lookupPut<JSTestObj, Base>(exec, propertyName, value, &JSTestObjTable, this, slot);
61021939df44de1705786c545cd1bf519d47250322dBen Murdoch}
61121939df44de1705786c545cd1bf519d47250322dBen Murdoch
6124576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangvoid setJSTestObjShortAttr(ExecState* exec, JSObject* thisObject, JSValue value)
6134576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{
6144576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
6154576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
6164576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    imp->setShortAttr(value.toInt32(exec));
6174576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang}
6184576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
6194576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangvoid setJSTestObjUnsignedShortAttr(ExecState* exec, JSObject* thisObject, JSValue value)
6204576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{
6214576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
6224576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
6234576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    imp->setUnsignedShortAttr(value.toUInt32(exec));
6244576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang}
6254576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
62621939df44de1705786c545cd1bf519d47250322dBen Murdochvoid setJSTestObjIntAttr(ExecState* exec, JSObject* thisObject, JSValue value)
62721939df44de1705786c545cd1bf519d47250322dBen Murdoch{
62821939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
62921939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
63021939df44de1705786c545cd1bf519d47250322dBen Murdoch    imp->setIntAttr(value.toInt32(exec));
63121939df44de1705786c545cd1bf519d47250322dBen Murdoch}
63221939df44de1705786c545cd1bf519d47250322dBen Murdoch
63321939df44de1705786c545cd1bf519d47250322dBen Murdochvoid setJSTestObjLongLongAttr(ExecState* exec, JSObject* thisObject, JSValue value)
63421939df44de1705786c545cd1bf519d47250322dBen Murdoch{
63521939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
63621939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
63721939df44de1705786c545cd1bf519d47250322dBen Murdoch    imp->setLongLongAttr(static_cast<long long>(value.toInteger(exec)));
63821939df44de1705786c545cd1bf519d47250322dBen Murdoch}
63921939df44de1705786c545cd1bf519d47250322dBen Murdoch
64021939df44de1705786c545cd1bf519d47250322dBen Murdochvoid setJSTestObjUnsignedLongLongAttr(ExecState* exec, JSObject* thisObject, JSValue value)
64121939df44de1705786c545cd1bf519d47250322dBen Murdoch{
64221939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
64321939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
64421939df44de1705786c545cd1bf519d47250322dBen Murdoch    imp->setUnsignedLongLongAttr(static_cast<unsigned long long>(value.toInteger(exec)));
64521939df44de1705786c545cd1bf519d47250322dBen Murdoch}
64621939df44de1705786c545cd1bf519d47250322dBen Murdoch
64721939df44de1705786c545cd1bf519d47250322dBen Murdochvoid setJSTestObjStringAttr(ExecState* exec, JSObject* thisObject, JSValue value)
64821939df44de1705786c545cd1bf519d47250322dBen Murdoch{
64921939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
65021939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
65121939df44de1705786c545cd1bf519d47250322dBen Murdoch    imp->setStringAttr(ustringToString(value.toString(exec)));
65221939df44de1705786c545cd1bf519d47250322dBen Murdoch}
65321939df44de1705786c545cd1bf519d47250322dBen Murdoch
65421939df44de1705786c545cd1bf519d47250322dBen Murdochvoid setJSTestObjTestObjAttr(ExecState* exec, JSObject* thisObject, JSValue value)
65521939df44de1705786c545cd1bf519d47250322dBen Murdoch{
65621939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
65721939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
65821939df44de1705786c545cd1bf519d47250322dBen Murdoch    imp->setTestObjAttr(toTestObj(value));
65921939df44de1705786c545cd1bf519d47250322dBen Murdoch}
66021939df44de1705786c545cd1bf519d47250322dBen Murdoch
661db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockvoid setJSTestObjXMLObjAttr(ExecState* exec, JSObject* thisObject, JSValue value)
662db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{
663db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
664db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
665db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    imp->setXMLObjAttr(toTestObj(value));
666db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block}
667db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
668db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockvoid setJSTestObjCreate(ExecState* exec, JSObject* thisObject, JSValue value)
669db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{
670db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
671db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
672db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    imp->setCreate(value.toBoolean(exec));
673db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block}
674db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
67506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid setJSTestObjReflectedStringAttr(ExecState* exec, JSObject* thisObject, JSValue value)
67621939df44de1705786c545cd1bf519d47250322dBen Murdoch{
67721939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
67821939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
67906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    imp->setAttribute(WebCore::HTMLNames::reflectedstringattrAttr, valueToStringWithNullCheck(exec, value));
68006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
68106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
68206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid setJSTestObjReflectedIntegralAttr(ExecState* exec, JSObject* thisObject, JSValue value)
68306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
68406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
68506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
68606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    imp->setIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr, value.toInt32(exec));
68706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
68806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
689f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochvoid setJSTestObjReflectedUnsignedIntegralAttr(ExecState* exec, JSObject* thisObject, JSValue value)
690f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{
691f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
692f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
693f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    imp->setUnsignedIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr, value.toUInt32(exec));
694f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch}
695f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
69606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid setJSTestObjReflectedBooleanAttr(ExecState* exec, JSObject* thisObject, JSValue value)
69706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
69806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
69906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
70006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    imp->setBooleanAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr, value.toBoolean(exec));
70106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
70206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
70306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid setJSTestObjReflectedURLAttr(ExecState* exec, JSObject* thisObject, JSValue value)
70406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
70506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
70606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
70706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    imp->setAttribute(WebCore::HTMLNames::reflectedurlattrAttr, valueToStringWithNullCheck(exec, value));
70806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
70906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
710e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkevoid setJSTestObjReflectedNonEmptyURLAttr(ExecState* exec, JSObject* thisObject, JSValue value)
711e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{
712e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
713e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
714e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    imp->setAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr, valueToStringWithNullCheck(exec, value));
715e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke}
716e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
71706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid setJSTestObjReflectedStringAttr(ExecState* exec, JSObject* thisObject, JSValue value)
71806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
71906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
72006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
72106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    imp->setAttribute(WebCore::HTMLNames::customContentStringAttrAttr, valueToStringWithNullCheck(exec, value));
72206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
72306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
72406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid setJSTestObjReflectedCustomIntegralAttr(ExecState* exec, JSObject* thisObject, JSValue value)
72506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
72606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
72706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
72806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    imp->setIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr, value.toInt32(exec));
72906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
73006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
73106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid setJSTestObjReflectedCustomBooleanAttr(ExecState* exec, JSObject* thisObject, JSValue value)
73206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
73306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
73406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
73506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    imp->setBooleanAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr, value.toBoolean(exec));
73606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
73706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
738e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkevoid setJSTestObjReflectedCustomURLAttr(ExecState* exec, JSObject* thisObject, JSValue value)
73906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
74006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
74106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
74206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    imp->setAttribute(WebCore::HTMLNames::customContentURLAttrAttr, valueToStringWithNullCheck(exec, value));
74306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
74406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
745e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkevoid setJSTestObjReflectedCustomNonEmptyURLAttr(ExecState* exec, JSObject* thisObject, JSValue value)
746e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{
747e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
748e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
749e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    imp->setAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr, valueToStringWithNullCheck(exec, value));
750e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke}
751e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
75206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid setJSTestObjAttrWithGetterException(ExecState* exec, JSObject* thisObject, JSValue value)
75306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
75406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
75506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
75606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    ExceptionCode ec = 0;
75706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    imp->setAttrWithGetterException(value.toInt32(exec), ec);
75806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    setDOMException(exec, ec);
75921939df44de1705786c545cd1bf519d47250322dBen Murdoch}
76021939df44de1705786c545cd1bf519d47250322dBen Murdoch
76121939df44de1705786c545cd1bf519d47250322dBen Murdochvoid setJSTestObjAttrWithSetterException(ExecState* exec, JSObject* thisObject, JSValue value)
76221939df44de1705786c545cd1bf519d47250322dBen Murdoch{
76321939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
76421939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
7656c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    ExceptionCode ec = 0;
7666c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    imp->setAttrWithSetterException(value.toInt32(exec), ec);
7676c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    setDOMException(exec, ec);
76821939df44de1705786c545cd1bf519d47250322dBen Murdoch}
76921939df44de1705786c545cd1bf519d47250322dBen Murdoch
77006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid setJSTestObjStringAttrWithGetterException(ExecState* exec, JSObject* thisObject, JSValue value)
77121939df44de1705786c545cd1bf519d47250322dBen Murdoch{
77221939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
77321939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
7746c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    ExceptionCode ec = 0;
77506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    imp->setStringAttrWithGetterException(ustringToString(value.toString(exec)), ec);
77606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    setDOMException(exec, ec);
77706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
77806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
77906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid setJSTestObjStringAttrWithSetterException(ExecState* exec, JSObject* thisObject, JSValue value)
78006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
78106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
78206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
78306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    ExceptionCode ec = 0;
78406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    imp->setStringAttrWithSetterException(ustringToString(value.toString(exec)), ec);
7856c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    setDOMException(exec, ec);
78621939df44de1705786c545cd1bf519d47250322dBen Murdoch}
78721939df44de1705786c545cd1bf519d47250322dBen Murdoch
78821939df44de1705786c545cd1bf519d47250322dBen Murdochvoid setJSTestObjCustomAttr(ExecState* exec, JSObject* thisObject, JSValue value)
78921939df44de1705786c545cd1bf519d47250322dBen Murdoch{
79021939df44de1705786c545cd1bf519d47250322dBen Murdoch    static_cast<JSTestObj*>(thisObject)->setCustomAttr(exec, value);
79121939df44de1705786c545cd1bf519d47250322dBen Murdoch}
79221939df44de1705786c545cd1bf519d47250322dBen Murdoch
79306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#if ENABLE(Condition1)
79406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid setJSTestObjConditionalAttr1(ExecState* exec, JSObject* thisObject, JSValue value)
79506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
79606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
79706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
79806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    imp->setConditionalAttr1(value.toInt32(exec));
79906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
80006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#endif
80106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
80206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#if ENABLE(Condition1) && ENABLE(Condition2)
80306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid setJSTestObjConditionalAttr2(ExecState* exec, JSObject* thisObject, JSValue value)
80406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
80506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
80606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
80706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    imp->setConditionalAttr2(value.toInt32(exec));
80806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
80906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#endif
81006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
81106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#if ENABLE(Condition1) || ENABLE(Condition2)
81206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid setJSTestObjConditionalAttr3(ExecState* exec, JSObject* thisObject, JSValue value)
81306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
81406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
81506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
81606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    imp->setConditionalAttr3(value.toInt32(exec));
81706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
81806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#endif
81906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
820545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochvoid setJSTestObjId(ExecState* exec, JSObject* thisObject, JSValue value)
821545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
822545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(thisObject);
823545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
824545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    imp->setId(value.toInt32(exec));
825545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
826545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
82721939df44de1705786c545cd1bf519d47250322dBen MurdochJSValue JSTestObj::getConstructor(ExecState* exec, JSGlobalObject* globalObject)
82821939df44de1705786c545cd1bf519d47250322dBen Murdoch{
82921939df44de1705786c545cd1bf519d47250322dBen Murdoch    return getDOMConstructor<JSTestObjConstructor>(exec, static_cast<JSDOMGlobalObject*>(globalObject));
83021939df44de1705786c545cd1bf519d47250322dBen Murdoch}
83121939df44de1705786c545cd1bf519d47250322dBen Murdoch
832545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVoidMethod(ExecState* exec)
83321939df44de1705786c545cd1bf519d47250322dBen Murdoch{
8345af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
83521939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
836545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
83721939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
83821939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
83921939df44de1705786c545cd1bf519d47250322dBen Murdoch
84021939df44de1705786c545cd1bf519d47250322dBen Murdoch    imp->voidMethod();
841545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
84221939df44de1705786c545cd1bf519d47250322dBen Murdoch}
84321939df44de1705786c545cd1bf519d47250322dBen Murdoch
844545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVoidMethodWithArgs(ExecState* exec)
84521939df44de1705786c545cd1bf519d47250322dBen Murdoch{
8465af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
84721939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
848545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
84921939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
85021939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
85181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    int intArg(exec->argument(0).toInt32(exec));
852dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
853dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
85481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    const String& strArg(ustringToString(exec->argument(1).toString(exec)));
855dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
856dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
85781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    TestObj* objArg(toTestObj(exec->argument(2)));
858dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
859dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
86021939df44de1705786c545cd1bf519d47250322dBen Murdoch
86121939df44de1705786c545cd1bf519d47250322dBen Murdoch    imp->voidMethodWithArgs(intArg, strArg, objArg);
862545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
86321939df44de1705786c545cd1bf519d47250322dBen Murdoch}
86421939df44de1705786c545cd1bf519d47250322dBen Murdoch
865545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionIntMethod(ExecState* exec)
86621939df44de1705786c545cd1bf519d47250322dBen Murdoch{
8675af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
86821939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
869545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
87021939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
87121939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
87221939df44de1705786c545cd1bf519d47250322dBen Murdoch
87321939df44de1705786c545cd1bf519d47250322dBen Murdoch
8744576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSC::JSValue result = jsNumber(imp->intMethod());
875545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(result);
87621939df44de1705786c545cd1bf519d47250322dBen Murdoch}
87721939df44de1705786c545cd1bf519d47250322dBen Murdoch
878545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionIntMethodWithArgs(ExecState* exec)
87921939df44de1705786c545cd1bf519d47250322dBen Murdoch{
8805af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
88121939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
882545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
88321939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
88421939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
88581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    int intArg(exec->argument(0).toInt32(exec));
886dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
887dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
88881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    const String& strArg(ustringToString(exec->argument(1).toString(exec)));
889dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
890dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
89181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    TestObj* objArg(toTestObj(exec->argument(2)));
892dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
893dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
89421939df44de1705786c545cd1bf519d47250322dBen Murdoch
89521939df44de1705786c545cd1bf519d47250322dBen Murdoch
8964576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSC::JSValue result = jsNumber(imp->intMethodWithArgs(intArg, strArg, objArg));
897545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(result);
89821939df44de1705786c545cd1bf519d47250322dBen Murdoch}
89921939df44de1705786c545cd1bf519d47250322dBen Murdoch
900545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionObjMethod(ExecState* exec)
90121939df44de1705786c545cd1bf519d47250322dBen Murdoch{
9025af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
90321939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
904545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
90521939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
90621939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
90721939df44de1705786c545cd1bf519d47250322dBen Murdoch
90821939df44de1705786c545cd1bf519d47250322dBen Murdoch
90921939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->objMethod()));
910545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(result);
91121939df44de1705786c545cd1bf519d47250322dBen Murdoch}
91221939df44de1705786c545cd1bf519d47250322dBen Murdoch
913545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionObjMethodWithArgs(ExecState* exec)
91421939df44de1705786c545cd1bf519d47250322dBen Murdoch{
9155af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
91621939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
917545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
91821939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
91921939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
92081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    int intArg(exec->argument(0).toInt32(exec));
921dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
922dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
92381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    const String& strArg(ustringToString(exec->argument(1).toString(exec)));
924dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
925dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
92681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    TestObj* objArg(toTestObj(exec->argument(2)));
927dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
928dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
92921939df44de1705786c545cd1bf519d47250322dBen Murdoch
93021939df44de1705786c545cd1bf519d47250322dBen Murdoch
93121939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->objMethodWithArgs(intArg, strArg, objArg)));
932545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(result);
93321939df44de1705786c545cd1bf519d47250322dBen Murdoch}
93421939df44de1705786c545cd1bf519d47250322dBen Murdoch
935545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodThatRequiresAllArgs(ExecState* exec)
9366c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{
9375af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
9386c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    if (!thisValue.inherits(&JSTestObj::s_info))
939545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
9406c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
9416c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
9425af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    if (exec->argumentCount() < 2)
943545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return JSValue::encode(jsUndefined());
94481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    const String& strArg(ustringToString(exec->argument(0).toString(exec)));
945dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
946dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
94781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    TestObj* objArg(toTestObj(exec->argument(1)));
948dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
949dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
9506c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
9516c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
9526c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->methodThatRequiresAllArgs(strArg, objArg)));
953545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(result);
9546c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen}
9556c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
956545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows(ExecState* exec)
9576c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{
9585af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
9596c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    if (!thisValue.inherits(&JSTestObj::s_info))
960545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
9616c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
9626c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
9635af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    if (exec->argumentCount() < 2)
964545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMError(exec, createSyntaxError(exec, "Not enough arguments"));
9656c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    ExceptionCode ec = 0;
96681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    const String& strArg(ustringToString(exec->argument(0).toString(exec)));
967dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
968dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
96981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    TestObj* objArg(toTestObj(exec->argument(1)));
970dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
971dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
9726c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
9736c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
9746c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->methodThatRequiresAllArgsAndThrows(strArg, objArg, ec)));
9756c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    setDOMException(exec, ec);
976545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(result);
9776c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen}
9786c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
979545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionSerializedValue(ExecState* exec)
98021939df44de1705786c545cd1bf519d47250322dBen Murdoch{
9815af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
98221939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
983545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
98421939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
98521939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
98681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    RefPtr<SerializedScriptValue> serializedArg(SerializedScriptValue::create(exec, exec->argument(0)));
987dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
988dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
98921939df44de1705786c545cd1bf519d47250322dBen Murdoch
99021939df44de1705786c545cd1bf519d47250322dBen Murdoch    imp->serializedValue(serializedArg);
991545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
99221939df44de1705786c545cd1bf519d47250322dBen Murdoch}
99321939df44de1705786c545cd1bf519d47250322dBen Murdoch
994ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve BlockEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionIdbKey(ExecState* exec)
995ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block{
996ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    JSValue thisValue = exec->hostThisValue();
997ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    if (!thisValue.inherits(&JSTestObj::s_info))
998ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block        return throwVMTypeError(exec);
999ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
1000ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
100181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    RefPtr<IDBKey> key(createIDBKeyFromValue(exec, exec->argument(0)));
1002dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1003dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
1004ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
1005ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    imp->idbKey(key);
1006ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    return JSValue::encode(jsUndefined());
1007ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block}
1008ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
10094576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) WangEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOptionsObject(ExecState* exec)
10104576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{
10114576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSValue thisValue = exec->hostThisValue();
10124576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    if (!thisValue.inherits(&JSTestObj::s_info))
10134576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang        return throwVMTypeError(exec);
10144576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
10154576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
101681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    OptionsObject* oo(toOptionsObject(exec->argument(0)));
10174576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    if (exec->hadException())
10184576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang        return JSValue::encode(jsUndefined());
10194576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
10204576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    int argsCount = exec->argumentCount();
10214576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    if (argsCount <= 1) {
10224576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang        imp->optionsObject(oo);
10234576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang        return JSValue::encode(jsUndefined());
10244576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    }
10254576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
102681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    OptionsObject* ooo(toOptionsObject(exec->argument(1)));
10274576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    if (exec->hadException())
10284576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang        return JSValue::encode(jsUndefined());
10294576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
10304576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    imp->optionsObject(oo, ooo);
10314576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    return JSValue::encode(jsUndefined());
10324576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang}
10334576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
1034545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithException(ExecState* exec)
103521939df44de1705786c545cd1bf519d47250322dBen Murdoch{
10365af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
103721939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
1038545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
103921939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
104021939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
104121939df44de1705786c545cd1bf519d47250322dBen Murdoch    ExceptionCode ec = 0;
104221939df44de1705786c545cd1bf519d47250322dBen Murdoch
104321939df44de1705786c545cd1bf519d47250322dBen Murdoch    imp->methodWithException(ec);
104421939df44de1705786c545cd1bf519d47250322dBen Murdoch    setDOMException(exec, ec);
1045545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
104621939df44de1705786c545cd1bf519d47250322dBen Murdoch}
104721939df44de1705786c545cd1bf519d47250322dBen Murdoch
1048545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomMethod(ExecState* exec)
104921939df44de1705786c545cd1bf519d47250322dBen Murdoch{
10505af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
105121939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
1052545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
105321939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
1054545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(castedThis->customMethod(exec));
105521939df44de1705786c545cd1bf519d47250322dBen Murdoch}
105621939df44de1705786c545cd1bf519d47250322dBen Murdoch
1057545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomMethodWithArgs(ExecState* exec)
105821939df44de1705786c545cd1bf519d47250322dBen Murdoch{
10595af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
106021939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
1061545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
106221939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
1063545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(castedThis->customMethodWithArgs(exec));
106421939df44de1705786c545cd1bf519d47250322dBen Murdoch}
106521939df44de1705786c545cd1bf519d47250322dBen Murdoch
1066545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomArgsAndException(ExecState* exec)
106721939df44de1705786c545cd1bf519d47250322dBen Murdoch{
10685af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
106921939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
1070545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
107121939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
107221939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
107321939df44de1705786c545cd1bf519d47250322dBen Murdoch    ExceptionCode ec = 0;
1074f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    RefPtr<ScriptArguments> scriptArguments(createScriptArguments(exec, 1));
107528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu    size_t maxStackSize = imp->shouldCaptureFullStackTrace() ? ScriptCallStack::maxCallStackSizeToCapture : 1;
1076f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    RefPtr<ScriptCallStack> callStack(createScriptCallStack(exec, maxStackSize));
107781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    log* intArg(tolog(exec->argument(0)));
1078dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1079dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
108021939df44de1705786c545cd1bf519d47250322dBen Murdoch
1081f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    imp->customArgsAndException(intArg, scriptArguments, callStack, ec);
108221939df44de1705786c545cd1bf519d47250322dBen Murdoch    setDOMException(exec, ec);
1083545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
108421939df44de1705786c545cd1bf519d47250322dBen Murdoch}
108521939df44de1705786c545cd1bf519d47250322dBen Murdoch
1086545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionAddEventListener(ExecState* exec)
108721939df44de1705786c545cd1bf519d47250322dBen Murdoch{
10885af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
108921939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
1090545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
109121939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
109221939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
10935af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue listener = exec->argument(1);
109421939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!listener.isObject())
1095545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return JSValue::encode(jsUndefined());
10965af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    imp->addEventListener(ustringToAtomicString(exec->argument(0).toString(exec)), JSEventListener::create(asObject(listener), castedThis, false, currentWorld(exec)), exec->argument(2).toBoolean(exec));
1097545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
109821939df44de1705786c545cd1bf519d47250322dBen Murdoch}
109921939df44de1705786c545cd1bf519d47250322dBen Murdoch
1100545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionRemoveEventListener(ExecState* exec)
110121939df44de1705786c545cd1bf519d47250322dBen Murdoch{
11025af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
110321939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
1104545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
110521939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
110621939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
11075af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue listener = exec->argument(1);
110821939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!listener.isObject())
1109545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return JSValue::encode(jsUndefined());
11105af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    imp->removeEventListener(ustringToAtomicString(exec->argument(0).toString(exec)), JSEventListener::create(asObject(listener), castedThis, false, currentWorld(exec)).get(), exec->argument(2).toBoolean(exec));
1111545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
111221939df44de1705786c545cd1bf519d47250322dBen Murdoch}
111321939df44de1705786c545cd1bf519d47250322dBen Murdoch
1114545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithDynamicFrame(ExecState* exec)
111521939df44de1705786c545cd1bf519d47250322dBen Murdoch{
11165af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
111721939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
1118545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
111921939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
112021939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
112121939df44de1705786c545cd1bf519d47250322dBen Murdoch    Frame* dynamicFrame = toDynamicFrame(exec);
112221939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!dynamicFrame)
1123545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return JSValue::encode(jsUndefined());
112421939df44de1705786c545cd1bf519d47250322dBen Murdoch
112521939df44de1705786c545cd1bf519d47250322dBen Murdoch    imp->withDynamicFrame(dynamicFrame);
1126545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
112721939df44de1705786c545cd1bf519d47250322dBen Murdoch}
112821939df44de1705786c545cd1bf519d47250322dBen Murdoch
1129545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithDynamicFrameAndArg(ExecState* exec)
113021939df44de1705786c545cd1bf519d47250322dBen Murdoch{
11315af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
113221939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
1133545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
113421939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
113521939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
113621939df44de1705786c545cd1bf519d47250322dBen Murdoch    Frame* dynamicFrame = toDynamicFrame(exec);
113721939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!dynamicFrame)
1138545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return JSValue::encode(jsUndefined());
113981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    int intArg(exec->argument(0).toInt32(exec));
1140dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1141dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
114221939df44de1705786c545cd1bf519d47250322dBen Murdoch
114321939df44de1705786c545cd1bf519d47250322dBen Murdoch    imp->withDynamicFrameAndArg(dynamicFrame, intArg);
1144545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
114521939df44de1705786c545cd1bf519d47250322dBen Murdoch}
114621939df44de1705786c545cd1bf519d47250322dBen Murdoch
1147545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithDynamicFrameAndOptionalArg(ExecState* exec)
114821939df44de1705786c545cd1bf519d47250322dBen Murdoch{
11495af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
115021939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
1151545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
115221939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
115321939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
115421939df44de1705786c545cd1bf519d47250322dBen Murdoch    Frame* dynamicFrame = toDynamicFrame(exec);
115521939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!dynamicFrame)
1156545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return JSValue::encode(jsUndefined());
115781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    int intArg(exec->argument(0).toInt32(exec));
1158dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1159dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
116021939df44de1705786c545cd1bf519d47250322dBen Murdoch
11615af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    int argsCount = exec->argumentCount();
1162dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (argsCount <= 1) {
116321939df44de1705786c545cd1bf519d47250322dBen Murdoch        imp->withDynamicFrameAndOptionalArg(dynamicFrame, intArg);
1164545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return JSValue::encode(jsUndefined());
116521939df44de1705786c545cd1bf519d47250322dBen Murdoch    }
116621939df44de1705786c545cd1bf519d47250322dBen Murdoch
116781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    int optionalArg(exec->argument(1).toInt32(exec));
1168dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1169dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
117021939df44de1705786c545cd1bf519d47250322dBen Murdoch
117121939df44de1705786c545cd1bf519d47250322dBen Murdoch    imp->withDynamicFrameAndOptionalArg(dynamicFrame, intArg, optionalArg);
1172545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
117321939df44de1705786c545cd1bf519d47250322dBen Murdoch}
117421939df44de1705786c545cd1bf519d47250322dBen Murdoch
1175545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithDynamicFrameAndUserGesture(ExecState* exec)
117621939df44de1705786c545cd1bf519d47250322dBen Murdoch{
11775af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
117821939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
1179545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
118021939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
118121939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
118221939df44de1705786c545cd1bf519d47250322dBen Murdoch    Frame* dynamicFrame = toDynamicFrame(exec);
118321939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!dynamicFrame)
1184545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return JSValue::encode(jsUndefined());
118581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    int intArg(exec->argument(0).toInt32(exec));
1186dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1187dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
118821939df44de1705786c545cd1bf519d47250322dBen Murdoch
1189f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick    imp->withDynamicFrameAndUserGesture(dynamicFrame, intArg, processingUserGesture());
1190545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
119121939df44de1705786c545cd1bf519d47250322dBen Murdoch}
119221939df44de1705786c545cd1bf519d47250322dBen Murdoch
1193545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithDynamicFrameAndUserGestureASAD(ExecState* exec)
119421939df44de1705786c545cd1bf519d47250322dBen Murdoch{
11955af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
119621939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
1197545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
119821939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
119921939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
120021939df44de1705786c545cd1bf519d47250322dBen Murdoch    Frame* dynamicFrame = toDynamicFrame(exec);
120121939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!dynamicFrame)
1202545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return JSValue::encode(jsUndefined());
120381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    int intArg(exec->argument(0).toInt32(exec));
1204dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1205dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
120621939df44de1705786c545cd1bf519d47250322dBen Murdoch
12075af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    int argsCount = exec->argumentCount();
1208dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (argsCount <= 1) {
120921939df44de1705786c545cd1bf519d47250322dBen Murdoch        imp->withDynamicFrameAndUserGestureASAD(dynamicFrame, intArg);
1210545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return JSValue::encode(jsUndefined());
121121939df44de1705786c545cd1bf519d47250322dBen Murdoch    }
121221939df44de1705786c545cd1bf519d47250322dBen Murdoch
121381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    int optionalArg(exec->argument(1).toInt32(exec));
1214dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1215dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
121621939df44de1705786c545cd1bf519d47250322dBen Murdoch
1217f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick    imp->withDynamicFrameAndUserGestureASAD(dynamicFrame, intArg, optionalArg, processingUserGesture());
1218545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
121921939df44de1705786c545cd1bf519d47250322dBen Murdoch}
122021939df44de1705786c545cd1bf519d47250322dBen Murdoch
1221545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateVoid(ExecState* exec)
122221939df44de1705786c545cd1bf519d47250322dBen Murdoch{
12235af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
122421939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
1225545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
122621939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
122721939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
122821939df44de1705786c545cd1bf519d47250322dBen Murdoch
122921939df44de1705786c545cd1bf519d47250322dBen Murdoch    imp->withScriptStateVoid(exec);
1230545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
123121939df44de1705786c545cd1bf519d47250322dBen Murdoch}
123221939df44de1705786c545cd1bf519d47250322dBen Murdoch
1233545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateObj(ExecState* exec)
123421939df44de1705786c545cd1bf519d47250322dBen Murdoch{
12355af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
123621939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
1237545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
123821939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
123921939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
124021939df44de1705786c545cd1bf519d47250322dBen Murdoch
124121939df44de1705786c545cd1bf519d47250322dBen Murdoch
124221939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->withScriptStateObj(exec)));
124321939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (exec->hadException())
1244545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return JSValue::encode(jsUndefined());
1245545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(result);
124621939df44de1705786c545cd1bf519d47250322dBen Murdoch}
124721939df44de1705786c545cd1bf519d47250322dBen Murdoch
1248545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateVoidException(ExecState* exec)
124921939df44de1705786c545cd1bf519d47250322dBen Murdoch{
12505af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
125121939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
1252545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
125321939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
125421939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
125521939df44de1705786c545cd1bf519d47250322dBen Murdoch    ExceptionCode ec = 0;
125621939df44de1705786c545cd1bf519d47250322dBen Murdoch
125721939df44de1705786c545cd1bf519d47250322dBen Murdoch    imp->withScriptStateVoidException(exec, ec);
125821939df44de1705786c545cd1bf519d47250322dBen Murdoch    setDOMException(exec, ec);
1259545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
126021939df44de1705786c545cd1bf519d47250322dBen Murdoch}
126121939df44de1705786c545cd1bf519d47250322dBen Murdoch
1262545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateObjException(ExecState* exec)
126321939df44de1705786c545cd1bf519d47250322dBen Murdoch{
12645af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
126521939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
1266545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
126721939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
126821939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
126921939df44de1705786c545cd1bf519d47250322dBen Murdoch    ExceptionCode ec = 0;
127021939df44de1705786c545cd1bf519d47250322dBen Murdoch
127121939df44de1705786c545cd1bf519d47250322dBen Murdoch
127221939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(imp->withScriptStateObjException(exec, ec)));
127321939df44de1705786c545cd1bf519d47250322dBen Murdoch    setDOMException(exec, ec);
127421939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (exec->hadException())
1275545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return JSValue::encode(jsUndefined());
1276545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(result);
1277545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
1278545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
1279545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptExecutionContext(ExecState* exec)
1280545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
1281545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    JSValue thisValue = exec->hostThisValue();
1282545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
1283545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
1284545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
1285545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
1286545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    ScriptExecutionContext* scriptContext = static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->scriptExecutionContext();
1287545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    if (!scriptContext)
1288545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return JSValue::encode(jsUndefined());
1289545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
1290545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    imp->withScriptExecutionContext(scriptContext);
1291545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
129221939df44de1705786c545cd1bf519d47250322dBen Murdoch}
129321939df44de1705786c545cd1bf519d47250322dBen Murdoch
1294545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalArg(ExecState* exec)
129521939df44de1705786c545cd1bf519d47250322dBen Murdoch{
12965af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
129721939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
1298545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
129921939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
130021939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
130121939df44de1705786c545cd1bf519d47250322dBen Murdoch
13025af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    int argsCount = exec->argumentCount();
1303dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (argsCount <= 0) {
130421939df44de1705786c545cd1bf519d47250322dBen Murdoch        imp->methodWithOptionalArg();
1305545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return JSValue::encode(jsUndefined());
130621939df44de1705786c545cd1bf519d47250322dBen Murdoch    }
130721939df44de1705786c545cd1bf519d47250322dBen Murdoch
130881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    int opt(exec->argument(0).toInt32(exec));
1309dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1310dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
131121939df44de1705786c545cd1bf519d47250322dBen Murdoch
131221939df44de1705786c545cd1bf519d47250322dBen Murdoch    imp->methodWithOptionalArg(opt);
1313545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
131421939df44de1705786c545cd1bf519d47250322dBen Murdoch}
131521939df44de1705786c545cd1bf519d47250322dBen Murdoch
1316545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArg(ExecState* exec)
131721939df44de1705786c545cd1bf519d47250322dBen Murdoch{
13185af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
131921939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
1320545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
132121939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
132221939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
132381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    int nonOpt(exec->argument(0).toInt32(exec));
1324dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1325dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
132621939df44de1705786c545cd1bf519d47250322dBen Murdoch
13275af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    int argsCount = exec->argumentCount();
1328dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (argsCount <= 1) {
132921939df44de1705786c545cd1bf519d47250322dBen Murdoch        imp->methodWithNonOptionalArgAndOptionalArg(nonOpt);
1330545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return JSValue::encode(jsUndefined());
133121939df44de1705786c545cd1bf519d47250322dBen Murdoch    }
133221939df44de1705786c545cd1bf519d47250322dBen Murdoch
133381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    int opt(exec->argument(1).toInt32(exec));
1334dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1335dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
133621939df44de1705786c545cd1bf519d47250322dBen Murdoch
133721939df44de1705786c545cd1bf519d47250322dBen Murdoch    imp->methodWithNonOptionalArgAndOptionalArg(nonOpt, opt);
1338545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
133921939df44de1705786c545cd1bf519d47250322dBen Murdoch}
134021939df44de1705786c545cd1bf519d47250322dBen Murdoch
1341545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgs(ExecState* exec)
134221939df44de1705786c545cd1bf519d47250322dBen Murdoch{
13435af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
134421939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (!thisValue.inherits(&JSTestObj::s_info))
1345545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
134621939df44de1705786c545cd1bf519d47250322dBen Murdoch    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
134721939df44de1705786c545cd1bf519d47250322dBen Murdoch    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
134881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    int nonOpt(exec->argument(0).toInt32(exec));
1349dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1350dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
135121939df44de1705786c545cd1bf519d47250322dBen Murdoch
13525af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    int argsCount = exec->argumentCount();
1353dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (argsCount <= 1) {
135421939df44de1705786c545cd1bf519d47250322dBen Murdoch        imp->methodWithNonOptionalArgAndTwoOptionalArgs(nonOpt);
1355545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return JSValue::encode(jsUndefined());
135621939df44de1705786c545cd1bf519d47250322dBen Murdoch    }
135721939df44de1705786c545cd1bf519d47250322dBen Murdoch
135881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    int opt1(exec->argument(1).toInt32(exec));
1359dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1360dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
136181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    int opt2(exec->argument(2).toInt32(exec));
1362dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1363dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
13646c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
13656c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    imp->methodWithNonOptionalArgAndTwoOptionalArgs(nonOpt, opt1, opt2);
1366545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
13676c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen}
13686c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
1369db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve BlockEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithCallbackArg(ExecState* exec)
1370db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{
1371db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    JSValue thisValue = exec->hostThisValue();
1372db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    if (!thisValue.inherits(&JSTestObj::s_info))
1373db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block        return throwVMTypeError(exec);
1374db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
1375db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
1376db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    if (exec->argumentCount() <= 0 || !exec->argument(0).isObject()) {
1377db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block        setDOMException(exec, TYPE_MISMATCH_ERR);
1378dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
1379db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    }
1380db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    RefPtr<TestCallback> callback = JSTestCallback::create(asObject(exec->argument(0)), castedThis->globalObject());
1381db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
1382db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    imp->methodWithCallbackArg(callback);
1383db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    return JSValue::encode(jsUndefined());
1384db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block}
1385db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
1386db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve BlockEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg(ExecState* exec)
1387db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{
1388db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    JSValue thisValue = exec->hostThisValue();
1389db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    if (!thisValue.inherits(&JSTestObj::s_info))
1390db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block        return throwVMTypeError(exec);
1391db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
1392db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
139381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    int nonCallback(exec->argument(0).toInt32(exec));
1394dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1395dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
1396db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    if (exec->argumentCount() <= 1 || !exec->argument(1).isObject()) {
1397db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block        setDOMException(exec, TYPE_MISMATCH_ERR);
1398dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
1399db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    }
1400db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    RefPtr<TestCallback> callback = JSTestCallback::create(asObject(exec->argument(1)), castedThis->globalObject());
1401db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
1402db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    imp->methodWithNonCallbackArgAndCallbackArg(nonCallback, callback);
1403db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    return JSValue::encode(jsUndefined());
1404db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block}
1405db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
1406db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve BlockEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArg(ExecState* exec)
1407db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block{
1408db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    JSValue thisValue = exec->hostThisValue();
1409db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    if (!thisValue.inherits(&JSTestObj::s_info))
1410db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block        return throwVMTypeError(exec);
1411db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
1412db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
1413dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    RefPtr<TestCallback> callback;
1414dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->argumentCount() > 0 && !exec->argument(0).isNull() && !exec->argument(0).isUndefined()) {
1415dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        if (!exec->argument(0).isObject()) {
1416dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch            setDOMException(exec, TYPE_MISMATCH_ERR);
1417dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch            return JSValue::encode(jsUndefined());
1418dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        }
1419dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        callback = JSTestCallback::create(asObject(exec->argument(0)), castedThis->globalObject());
1420db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    }
1421db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
1422db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    imp->methodWithCallbackAndOptionalArg(callback);
1423db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    return JSValue::encode(jsUndefined());
1424db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block}
1425db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
142606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenstatic EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod1(ExecState* exec)
14276c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{
14285af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
14296c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    if (!thisValue.inherits(&JSTestObj::s_info))
1430545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
14316c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
14326c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
143381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    TestObj* objArg(toTestObj(exec->argument(0)));
1434dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1435dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
143681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    const String& strArg(ustringToString(exec->argument(1).toString(exec)));
1437dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1438dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
14396c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
14406c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    imp->overloadedMethod(objArg, strArg);
1441545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
14426c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen}
14436c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
144406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenstatic EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod2(ExecState* exec)
14456c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{
14465af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
14476c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    if (!thisValue.inherits(&JSTestObj::s_info))
1448545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
14496c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
14506c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
145181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    TestObj* objArg(toTestObj(exec->argument(0)));
1452dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1453dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
14546c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
14555af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    int argsCount = exec->argumentCount();
1456dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (argsCount <= 1) {
14576c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen        imp->overloadedMethod(objArg);
1458545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return JSValue::encode(jsUndefined());
145921939df44de1705786c545cd1bf519d47250322dBen Murdoch    }
146021939df44de1705786c545cd1bf519d47250322dBen Murdoch
146181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    int intArg(exec->argument(1).toInt32(exec));
1462dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1463dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
146421939df44de1705786c545cd1bf519d47250322dBen Murdoch
14656c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    imp->overloadedMethod(objArg, intArg);
1466545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
146721939df44de1705786c545cd1bf519d47250322dBen Murdoch}
146821939df44de1705786c545cd1bf519d47250322dBen Murdoch
146906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenstatic EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod3(ExecState* exec)
14706c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{
14715af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
14726c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    if (!thisValue.inherits(&JSTestObj::s_info))
1473545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
14746c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
14756c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
147681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    const String& strArg(ustringToString(exec->argument(0).toString(exec)));
1477dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1478dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
14796c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
14806c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    imp->overloadedMethod(strArg);
1481545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
14826c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen}
14836c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
148406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenstatic EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod4(ExecState* exec)
14856c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{
14865af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    JSValue thisValue = exec->hostThisValue();
14876c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    if (!thisValue.inherits(&JSTestObj::s_info))
1488545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return throwVMTypeError(exec);
14896c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
14906c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
149181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    int intArg(exec->argument(0).toInt32(exec));
1492dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (exec->hadException())
1493dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return JSValue::encode(jsUndefined());
14946c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
14956c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    imp->overloadedMethod(intArg);
1496545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return JSValue::encode(jsUndefined());
14976c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen}
14986c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
14995abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickstatic EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod5(ExecState* exec)
15005abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick{
15015abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    JSValue thisValue = exec->hostThisValue();
15025abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    if (!thisValue.inherits(&JSTestObj::s_info))
15035abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick        return throwVMTypeError(exec);
15045abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
15055abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
15065abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    if (exec->argumentCount() <= 0 || !exec->argument(0).isObject()) {
15075abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick        setDOMException(exec, TYPE_MISMATCH_ERR);
15085abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick        return JSValue::encode(jsUndefined());
15095abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    }
15105abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    RefPtr<TestCallback> callback = JSTestCallback::create(asObject(exec->argument(0)), castedThis->globalObject());
15115abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
15125abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    imp->overloadedMethod(callback);
15135abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    return JSValue::encode(jsUndefined());
15145abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick}
15155abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
1516545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod(ExecState* exec)
15176c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{
1518f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick    if ((exec->argumentCount() == 2 && (exec->argument(0).isNull() || (exec->argument(0).isObject() && asObject(exec->argument(0))->inherits(&JSTestObj::s_info))) && (exec->argument(1).isNull() || exec->argument(1).isUndefined() || exec->argument(1).isString() || exec->argument(1).isObject())))
15195af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke        return jsTestObjPrototypeFunctionOverloadedMethod1(exec);
1520f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick    if ((exec->argumentCount() == 1 && (exec->argument(0).isNull() || (exec->argument(0).isObject() && asObject(exec->argument(0))->inherits(&JSTestObj::s_info)))) || (exec->argumentCount() == 2 && (exec->argument(0).isNull() || (exec->argument(0).isObject() && asObject(exec->argument(0))->inherits(&JSTestObj::s_info)))))
15215af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke        return jsTestObjPrototypeFunctionOverloadedMethod2(exec);
15225af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    if ((exec->argumentCount() == 1 && (exec->argument(0).isNull() || exec->argument(0).isUndefined() || exec->argument(0).isString() || exec->argument(0).isObject())))
15235af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke        return jsTestObjPrototypeFunctionOverloadedMethod3(exec);
15245af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    if (exec->argumentCount() == 1)
15255af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke        return jsTestObjPrototypeFunctionOverloadedMethod4(exec);
15265abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    if ((exec->argumentCount() == 1 && (exec->argument(0).isNull() || exec->argument(0).isObject())))
15275abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick        return jsTestObjPrototypeFunctionOverloadedMethod5(exec);
152806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    return throwVMTypeError(exec);
15296c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen}
15306c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
15315abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain MerrickEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionClassMethod(ExecState* exec)
15325abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick{
15335abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    JSValue thisValue = exec->hostThisValue();
15345abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    if (!thisValue.inherits(&JSTestObj::s_info))
15355abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick        return throwVMTypeError(exec);
15365abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
15375abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
15385abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
15395abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    imp->classMethod();
15405abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    return JSValue::encode(jsUndefined());
15415abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick}
15425abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
15435abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain MerrickEncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionClassMethodWithOptional(ExecState* exec)
15445abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick{
15455abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    JSValue thisValue = exec->hostThisValue();
15465abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    if (!thisValue.inherits(&JSTestObj::s_info))
15475abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick        return throwVMTypeError(exec);
15485abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(thisValue));
15495abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
15505abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
15515abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    int argsCount = exec->argumentCount();
15525abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    if (argsCount <= 0) {
15535abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
15544576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang        JSC::JSValue result = jsNumber(imp->classMethodWithOptional());
15555abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick        return JSValue::encode(result);
15565abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    }
15575abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
155881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    int arg(exec->argument(0).toInt32(exec));
15595abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    if (exec->hadException())
15605abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick        return JSValue::encode(jsUndefined());
15615abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
15625abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
15634576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    JSC::JSValue result = jsNumber(imp->classMethodWithOptional(arg));
15645abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    return JSValue::encode(result);
15655abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick}
15665abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
1567967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch// Constant getters
1568967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch
1569967717af5423377c967781471ee106e2bb4e11c8Ben MurdochJSValue jsTestObjCONST_VALUE_0(ExecState* exec, JSValue, const Identifier&)
1570967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch{
15714576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    UNUSED_PARAM(exec);
15724576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    return jsNumber(static_cast<int>(0));
1573967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch}
1574967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch
1575967717af5423377c967781471ee106e2bb4e11c8Ben MurdochJSValue jsTestObjCONST_VALUE_1(ExecState* exec, JSValue, const Identifier&)
1576967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch{
15774576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    UNUSED_PARAM(exec);
15784576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    return jsNumber(static_cast<int>(1));
1579967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch}
1580967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch
1581967717af5423377c967781471ee106e2bb4e11c8Ben MurdochJSValue jsTestObjCONST_VALUE_2(ExecState* exec, JSValue, const Identifier&)
1582967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch{
15834576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    UNUSED_PARAM(exec);
15844576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    return jsNumber(static_cast<int>(2));
1585967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch}
1586967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch
1587967717af5423377c967781471ee106e2bb4e11c8Ben MurdochJSValue jsTestObjCONST_VALUE_4(ExecState* exec, JSValue, const Identifier&)
1588967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch{
15894576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    UNUSED_PARAM(exec);
15904576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    return jsNumber(static_cast<int>(4));
1591967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch}
1592967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch
1593967717af5423377c967781471ee106e2bb4e11c8Ben MurdochJSValue jsTestObjCONST_VALUE_8(ExecState* exec, JSValue, const Identifier&)
1594967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch{
15954576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    UNUSED_PARAM(exec);
15964576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    return jsNumber(static_cast<int>(8));
1597967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch}
1598967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch
15990617145a89917ae7735fe1c9538688ab9a577df5Kristian MonsenJSValue jsTestObjCONST_VALUE_9(ExecState* exec, JSValue, const Identifier&)
16000617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen{
16014576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    UNUSED_PARAM(exec);
16024576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    return jsNumber(static_cast<int>(-1));
16030617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen}
16040617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen
16050617145a89917ae7735fe1c9538688ab9a577df5Kristian MonsenJSValue jsTestObjCONST_VALUE_10(ExecState* exec, JSValue, const Identifier&)
16060617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen{
16070617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    return jsStringOrNull(exec, String("my constant string"));
16080617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen}
16090617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen
16100617145a89917ae7735fe1c9538688ab9a577df5Kristian MonsenJSValue jsTestObjCONST_VALUE_11(ExecState* exec, JSValue, const Identifier&)
16110617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen{
16124576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    UNUSED_PARAM(exec);
16134576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    return jsNumber(static_cast<int>(0xffffffff));
16140617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen}
16150617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen
16160617145a89917ae7735fe1c9538688ab9a577df5Kristian MonsenJSValue jsTestObjCONST_VALUE_12(ExecState* exec, JSValue, const Identifier&)
16170617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen{
16184576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    UNUSED_PARAM(exec);
16194576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    return jsNumber(static_cast<int>(0x01));
16200617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen}
16210617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen
16220617145a89917ae7735fe1c9538688ab9a577df5Kristian MonsenJSValue jsTestObjCONST_VALUE_13(ExecState* exec, JSValue, const Identifier&)
16230617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen{
16244576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    UNUSED_PARAM(exec);
16254576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    return jsNumber(static_cast<int>(0X20));
16260617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen}
16270617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen
16280617145a89917ae7735fe1c9538688ab9a577df5Kristian MonsenJSValue jsTestObjCONST_VALUE_14(ExecState* exec, JSValue, const Identifier&)
16290617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen{
16304576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    UNUSED_PARAM(exec);
16314576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    return jsNumber(static_cast<int>(0x1abc));
16320617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen}
16330617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen
163421939df44de1705786c545cd1bf519d47250322dBen MurdochJSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, TestObj* object)
163521939df44de1705786c545cd1bf519d47250322dBen Murdoch{
163621939df44de1705786c545cd1bf519d47250322dBen Murdoch    return getDOMObjectWrapper<JSTestObj>(exec, globalObject, object);
163721939df44de1705786c545cd1bf519d47250322dBen Murdoch}
163821939df44de1705786c545cd1bf519d47250322dBen MurdochTestObj* toTestObj(JSC::JSValue value)
163921939df44de1705786c545cd1bf519d47250322dBen Murdoch{
164021939df44de1705786c545cd1bf519d47250322dBen Murdoch    return value.inherits(&JSTestObj::s_info) ? static_cast<JSTestObj*>(asObject(value))->impl() : 0;
164121939df44de1705786c545cd1bf519d47250322dBen Murdoch}
164221939df44de1705786c545cd1bf519d47250322dBen Murdoch
164321939df44de1705786c545cd1bf519d47250322dBen Murdoch}
1644